loophole_sameer
loophole_sameer

Reputation: 17

Can we have multiple dashboards of different dropdowns in python dash?

Recently I started using dash for Data Visualization and I'm analyzing the Stock Data using qunadle API, but unable to get multiple dashboards of dropdown displaying the options of each dataset using a for loop like this

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'])

The Output which I expected was having multiple dashboards with all the dropdown options one after the other. But the result what I got was having only one dashboard of the last item in the easy_analysis() function list

easy_analysis(['NSE/KOTAKNIFTY','NSE/ZENSARTECH','NSE/BSLGOLDETF']), considered only 'NSE/BSLGOLDETF'

what am I supposed do to fix this and get multiple dashboards of each dataset as provided in the list. I also checked the Dash User Guide, but could not get what I was looking for.

But, when passed only one argument for only one dataset with a for loop, the code works fine and the graph changes according to the option selected in the dropdown.

The code is here.

Upvotes: 0

Views: 775

Answers (1)

jackdbd
jackdbd

Reputation: 5043

The code does not work because you are redefining a Dash app at each iteration of the for loop.

Even if you have three datasets, you need to define the Dash app and its layout only once.

You can make three requests to the Quandl API and - if possible - save everything in the same pandas Dataframe.

One question is whether you want to display all dropdowns and graphs (i.e. dropdown + graph for each Quandl dataset) or only one dropdown and one graph. I would suggest to start with the first approach, because it's much easier. Anyway, for the second approach you can have a look at this solution.

Upvotes: 1

Related Questions