I am not sure if this is a bug or something, but when I host the app using app.run_server(debug=True), I will get the following error:
Invalid argument
figure.layout
passed into Graph with ID “graph”.
Expectedobject
.
Was supplied typearray
.
However if I used Twisted (a simple version of Twisted Web server), the error will go away and works accordingly.
app = dash.Dash(__name__, server = server,
external_stylesheets=[dbc.themes.BOOTSTRAP])
server = flask.Flask(__name__)
twisted = Twisted(server)
twisted.run(host='0.0.0.0',port=8082, debug=True, run_reactor=True)
My layout and callback section:
app.layout = html.Div([
html.Div(
className='row',
children=[
html.Div(
className='col',
children=[
dcc.Dropdown(
id="variable",
options = hensu2,
placeholder = 'something',
multi=False)
],style={'width': '35%','display': 'inline-block', 'height': '50px'},
),
html.Div(
className='col',
style={'width': '10%', 'display': 'inline-block', 'height': '50px'},
children=[
html.Img(src='data:image/png;base64,{}'.format(encoded_image.decode()),
height = 30)],
),
],
style={'width': '100%'}
),
html.Div(
dcc.Dropdown(
id="machine",
options = machines_list,
placeholder = 'No',
multi=True
),style={'width': '49%', 'display': 'inline-block'}),
html.Div(
dcc.Dropdown(id="size",
options = size_list,
placeholder = 'size',
multi=True
), style={'width': '51%', 'display': 'inline-block'}),
html.Div([
dcc.Graph(
id='graph'
)])
]
)
@app.callback(
Output(component_id='graph', component_property='figure'),
[Input(component_id='variable', component_property='value')]
)
def update_output_div(input_value):
if not input_value:
return {'data':[], 'layout':[]}
df0 = df.copy()
X = df0["Date"]
Y = df0[switch(input_value)]
fig = {
'data': [py.Scattergl(
x=X,
y=Y,
mode='markers',
opacity=0.7,
marker={'size': 10}
)],
'layout': py.Layout(
title={'text': input_value},
xaxis={'title': 'Date'},
yaxis={'title': input_value},
hovermode='closest'
)}
return fig
I am a little bit concerned about this error. Is this something critical or something can be safely ignored? Previous similar post had the answer of an extra comma, I checked the code several times and did not find the extra comma, is this a different problem or did I missed it?