【问题标题】:Can we have multiple dashboards of different dropdowns in python dash?我们可以在 python dash 中有多个不同下拉列表的仪表板吗?
【发布时间】:2018-04-14 04:58:20
【问题描述】:

最近我开始使用 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 循环只为一个数据集传递一个参数时,代码可以正常工作,并且图表会根据下拉列表中选择的选项而变化。

The code is here.

【问题讨论】:

    标签: data-analysis plotly-dash


    【解决方案1】:

    代码不起作用,因为您在 for 循环的每次迭代中都重新定义了 Dash 应用程序。

    即使您有三个数据集,您也只需定义一次 Dash 应用程序及其布局。

    您可以向 Quandl API 发出三个请求,并在可能的情况下将所有内容保存在同一个 pandas Dataframe 中。

    一个问题是您是要显示所有下拉列表和图表(即每个 Quandl 数据集的下拉列表 + 图表)还是只显示一个下拉列表和一个图表。我建议从第一种方法开始,因为它更容易。无论如何,对于第二种方法,您可以查看this solution

    【讨论】:

      猜你喜欢
      • 2012-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多