Hello,
import dash
import dash_core_components as dcc
import dash_html_components as html
from dash.dependencies import Input, Output
import plotly.express as px
import pandas as pd
df = pd.read_csv('./gapminderDataFiveYear.csv')
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
server = app.server
app.layout = html.Div([
dcc.Graph(id='graph-with-slider'),
dcc.Slider(
id='year-slider',
min=df['year'].min(),
max=df['year'].max(),
value=df['year'].min(),
marks={str(year): str(year) for year in df['year'].unique()},
step=None
)
])
@app.callback(
Output('graph-with-slider', 'figure'),
Input('year-slider', 'value'))
def update_figure(selected_year):
filtered_df = df[df.year == selected_year]
fig = px.scatter(filtered_df, x="gdpPercap", y="lifeExp",
size="pop", color="continent", hover_name="country",
log_x=True, size_max=55)
fig.update_layout(transition_duration=500)
return fig
if __name__ == '__main__':
app.run_server(debug=True)
The above codes runs well. However, I want to show the results inside the Jupyter lab by changing the code like this:
#external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
#app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
#server = app.server
from jupyter_plotly_dash import JupyterDash
app = JupyterDash('simpleCase')
#if __name__ == '__main__':
# app.run_server(debug=True)
app
It reports the following errors:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-1-8103eeff17bc> in <module>
36 @app.callback(
37 Output('graph-with-slider', 'figure'),
---> 38 Input('year-slider', 'value'))
39 def update_figure(selected_year):
40 filtered_df = df[df.year == selected_year]
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django_plotly_dash/dash_wrapper.py in wrap_func(func)
332 # if .expanded is None => inject all
333 # if .expanded is a list => inject only
--> 334 func.expanded = DjangoDash.get_expanded_arguments(func, inputs, state)
335 return func
336 return wrap_func
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/django_plotly_dash/dash_wrapper.py in get_expanded_arguments(func, inputs, state)
292 It returns a list of the expanded parameters to inject (can be [] if nothing should be injected)
293 or None if all parameters should be injected."""
--> 294 n_dash_parameters = len(inputs or []) + len(state or [])
295
296 parameter_types = {kind: [p.name for p in parameters] for kind, parameters in
TypeError: object of type 'Input' has no len()
Could you help me with this problem? Thanks