最近我开始使用 dash 进行数据可视化,我正在使用 qunadle API 分析股票数据,但无法使用这样的 for 循环获得多个下拉仪表板显示每个数据集的选项
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import pandas as pd
import quandl
import plotly.graph_objs as go
import auth
api_key = auth.key
def easy_analysis(quandl_datasets):
try:
for dataset in quandl_datasets:
df = quandl.get(dataset,authtoken=api_key)
df = df.reset_index()
app = dash.Dash(__name__)
app.layout = html.Div([
html.H3(dataset),
dcc.Dropdown(
id=dataset,
options=[{'label' : s,'value' : s} for s in df.columns[1:]],
value=['Open'],
multi=True
),
dcc.Graph(id='dataset' + str(dataset))
])
@app.callback(
Output('dataset' + str(dataset),'figure'),
[Input(dataset,'value')]
)
def draw_graph(dataset):
graphs = []
for column in dataset:
graphs.append(go.Scatter(
x=list(df.Date),
y=list(df[column]),
name=str(column),
mode='lines'
))
return {'data' : graphs}
app.run_server(debug=True)
except Exception as e:
print(str(e))
easy_analysis(['NSE/KOTAKNIFTY','NSE/ZENSARTECH','NSE/BSLGOLDETF'])
我期望的输出有多个仪表板,其中一个接一个地包含所有下拉选项。但是我得到的结果是,easy_analysis() 函数列表中的最后一项只有一个仪表板
easy_analysis(['NSE/KOTAKNIFTY','NSE/ZENSARTECH','NSE/BSLGOLDETF']), considered only 'NSE/BSLGOLDETF'
我应该怎么做才能解决这个问题并获得列表中提供的每个数据集的多个仪表板。我还查看了 Dash 用户指南,但找不到我想要的东西。
但是,当只为一个带有 for 循环的数据集传递一个参数时,代码可以正常工作,并且图形会根据下拉菜单中选择的选项而变化。