Quantcast
Channel: 🎛️ Dash - Plotly Community Forum
Viewing all articles
Browse latest Browse all 6271

Pages are not updating when using dropdownmenuitem from dash bootstrap component

$
0
0

@Abhinav wrote:

hi, in my app, pages are not updating when using dropdownmenuitem from dash bootstrap component. it is updating page after first click and not after that. Please help me on this.

import pandas as pd

dt = pd.read_csv('housing_train.csv')

col_names = list(dt.columns)

p = dt.dtypes.reset_index()

p.columns = ['Variable','datatypes']

cat_cols = p[p['datatypes'] == 'object']['Variable'].tolist()

conts_cols = p[p['datatypes'] != 'object']['Variable'].tolist()

for col in conts_cols:
    if (len(list(dt[col].unique())) == len(dt.index)):
        conts_cols.remove(col)

for col in cat_cols:
    if (len(list(dt[col].unique())) > 30):
        cat_cols.remove(col)
        
cols = []

for col in conts_cols:
    if (len(list(dt[col].unique())) < 20):
        cols.append(col)
        
cat_cols = cat_cols + cols

def Diff(li1, li2): 
    return (list(set(li1) - set(li2)))

cont_cols = Diff(conts_cols,cols)

for col in cols:
    dt[col] = dt[col].astype('category')

catdata =  dt[cat_cols]
contdata = dt[cont_cols]

cont1 = cont_cols[0]
cont2 = cont_cols[1]

cat1 = cat_cols[0]
cat2 = cat_cols[1]

import dash
import dash_bootstrap_components as dbc
import dash_core_components as dcc
import dash_html_components as html
import plotly.graph_objs as go
from dash.dependencies import Input, Output

visualization_items = [dbc.DropdownMenuItem("Summary",href = "/viz-summary",id = 'Summary'),
                dbc.DropdownMenuItem("Profiler",href = "/viz-profiler",id='Profiler'),
                dbc.DropdownMenuItem("Histogram",href = "#",id='Histogram'),
                dbc.DropdownMenuItem("Boxplot",href = "#",id='Boxplot'),
                dbc.DropdownMenuItem("Correlation",href = "#",id='Correlation'),
                dbc.DropdownMenuItem("Chi-square",href = "#",id='Chi-square'),
                dbc.DropdownMenuItem("Testing",href = "#"),
        ]

navbar = dbc.NavbarSimple(
    children=[
        dbc.DropdownMenu(id = 'Visualization_menu',
            nav=True,
            in_navbar=True,
            label="Visualization",
            right = False,
            children=visualization_items,
            color="info", className="m-1",
        ),
    ],
    brand="AI Tool",
    brand_href="#",
    sticky="top",
)

layout_page_0 = html.Div([
        html.Br(),
        html.H4('Total No of Variables in the data is {}'.format(str(len(col_names))),style={'width':'100%','float': 'left', 'display': 'inline-block'}),
        html.Br(),
        html.H4('Total No of Categorical Variables in the data is {}'.format(str(len(cat_cols))),style={'width':'100%','float': 'left', 'display': 'inline-block'}),
        html.Br(),
        html.H4('Total No of Continuous Variables in the data is {}'.format(str(len(cont_cols))),style={'width':'100%','float': 'left', 'display': 'inline-block'}),
        ])


layout_page_1 = html.Div([
        html.H4('Choose your Categorical Variable',style={'width':'100%','float': 'left', 'display': 'inline-block'}),
                html.Div([
                        dcc.Dropdown(
                                id='page1_VariableName1',
                                options=[{'label': str(i), 'value': i} for i in cat_cols],
                                value=cat1)
                        ], style={'width':'60%','float': 'left', 'display': 'inline-block'}),
                html.Div([
                        dcc.Graph(id='page1_table1')
            ],style={'width':'50%','float': 'left','display':'inline-block'}),
                html.Div([
                        dcc.Graph(id='page1_barchart')
            ],style={'width':'50%','float': 'right','display':'inline-block'}),
        html.H4('Choose your Continuous Variable',style={'width':'100%','float': 'left', 'display': 'inline-block'}),
                html.Div([
                        dcc.Dropdown(
                                id='page1_VariableName2',
                                options=[{'label': str(i), 'value': i} for i in cont_cols],
                                value=cont1)
                        ], style={'width':'60%','float': 'left', 'display': 'inline-block'}),
                html.Div([
                        dcc.Graph(id='page1_table2')
            ],style={'width':'50%','float': 'left','display':'inline-block'}),
                html.Div([
                        dcc.Graph(id='page1_boxplot')
            ],style={'width':'50%','float': 'right','display':'inline-block'}),                                              
            ])
app = dash.Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP])

'''
def serve_layout():
    return html.Div([navbar,html.Div(id='page-content')])
'''

app.layout = html.Div([navbar,html.Div(id='page-content')])

# Update the index
@app.callback(Output('page-content', 'children'), 
              [Input('Summary', 'n_clicks'),
               Input('Profiler', 'n_clicks')])
def display_page(n_clicks1,n_clicks2):
    if n_clicks1:
        return layout_page_0
    if n_clicks2:
        return layout_page_1


if __name__ == "__main__":
    app.run_server()

Posts: 3

Participants: 2

Read full topic


Viewing all articles
Browse latest Browse all 6271

Trending Articles