我试图使用PyCharm
IDE运行简单代码,但发现以下错误:
Traceback (most recent call last):
File "D:/Tooling/untitled/SAS.py", line 37, in <module>
@app.callback(Output('my-graph', 'figure'),
File "C:\Users\mwx825326\AppData\Local\Programs\Python\Python38-32\lib\site-packages\dash\dash.py", line 886, in callback
self._validate_callback(output, inputs, state)
File "C:\Users\mwx825326\AppData\Local\Programs\Python\Python38-32\lib\site-packages\dash\dash.py", line 652, in _validate_callback
raise exceptions.LayoutIsNotDefined('''
dash.exceptions.LayoutIsNotDefined:
Attempting to assign a callback to the application but
the `layout` property has not been assigned.
Assign the `layout` property before assigning callbacks.
Alternatively, suppress this warning by setting
`app.config['suppress_callback_exceptions']=True`
这是我的代码:
import os
import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
import plotly.graph_objs as go
#from app import app
from dash.dependencies import Input, Output
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
df = pd.read_csv('MNM_Rotterdam_5_Daily_Details-20191216081027.csv', error_bad_lines=False)
df['Date'] = pd.to_datetime(df.Date, infer_datetime_format=True)
if 'DYNO' in os.environ:
app_name = os.environ['DASH_APP_NAME']
else:
app_name = 'dash-timeseriesplot'
layout = html.Div([html.H1("GSM", style={'textAlign': 'center'}),
dcc.Dropdown(id='my-dropdown',options=[{'label': 'Voice_SetupFailRate_2G', 'value': 'Voice_SetupFailRate_2G'},{'label': 'Voice_DropRate_2G', 'value': 'Voice_DropRate_2G'},{'label': 'OutgHandover_SuccesRate_2G', 'value': 'OutgHandover_SuccesRate_2G'},{'label': 'Packet_SetupFailRate_2G', 'value': 'Packet_SetupFailRate_2G'},{'label': 'Packet_DLMBytes_2G', 'value': 'Packet_DLMBytes_2G'},{'label': 'Availability_2G', 'value': 'Availability_2G'}],
multi=True,value=['Voice_SetupFailRate_2G'],style={"display": "block","margin-left": "auto","margin-right": "auto","width": "60%"}),
dcc.Graph(id='my-graph')
], className="container")
@app.callback(Output('my-graph', 'figure'),
[Input('my-dropdown', 'value')])
def update_graph(selected_dropdown_value):
dropdown = {"Voice_SetupFailRate_2G": "Voice_SetupFailRate_2G","Voice_DropRate_2G": "Voice_DropRate_2G","OutgHandover_SuccesRate_2G": "OutgHandover_SuccesRate_2G","Packet_SetupFailRate_2G": "Packet_SetupFailRate_2G","Packet_DLMBytes_2G": "Packet_DLMBytes_2G","Availability_2G": "Availability_2G"}
trace1 = []
trace2 = []
for GSM in selected_dropdown_value:
trace1.append(go.Scatter(x=df[df["GSM"] == GSM]["Date"],y=df[df["GSM"] == GSM]["Open"],mode='lines',
opacity=0.7,name=f'Open {dropdown[GSM]}',textposition='bottom center'))
trace2.append(go.Scatter(x=df[df["GSM"] == GSM]["Date"],y=df[df["GSM"] == GSM]["Close"],mode='lines',
opacity=0.6,name=f'Close {dropdown[GSM]}',textposition='bottom center'))
traces = [trace1, trace2]
data = [val for sublist in traces for val in sublist]
figure = {'data': data,
'layout': go.Layout(colorway=["#5E0DAC", '#FF4F00', '#375CB1', '#FF7400', '#FFF400', '#FF0056'],
height=600,title=f"Opening and Closing Prices for {', '.join(str(dropdown[i]) for i in selected_dropdown_value)} Over Time",
xaxis={"title":"Date",
'rangeselector': {'buttons': list([{'count': 1, 'label': '1M', 'step': 'month', 'stepmode': 'backward'},
{'count': 6, 'label': '6M', 'step': 'month', 'stepmode': 'backward'},
{'step': 'all'}])},
'rangeslider': {'visible': True}, 'type': 'date'},yaxis={"title":"Price (USD)"})}
return figure
if __name__ == '__main__':
app.run_server(debug=True)
所以任何人都有解决这个问题的办法
有人能解决这个错误吗
我认为代码的cyntax不能与PyCharm
IDE一起工作
我正试图找出问题到底出在哪里,但我在这一点上失败了:(
如果有人能帮助我,我很高兴:)
您需要将布局分配给应用程序:将
layout
替换为app.layout
在定义回调之前,您需要将定义的布局分配给应用程序。在
@app.callback ..
之前添加以下内容:app.layout = layout
。或者,您可以按照前面提到的Frayal执行,只需替换借
相关问题 更多 >
编程相关推荐