【发布时间】:2021-07-04 12:30:52
【问题描述】:
我收到以下错误,查看我的代码我不知道为什么?
我已尝试将to_json/to_dict('records') 应用于我的return fig 对象,但似乎无法解决问题。
任何帮助将不胜感激......
dash.exceptions.InvalidCallbackReturnValue:<Output bar_line_1.figure> 的回调
返回类型为Figure 的值
这不是 JSON 可序列化的。
……
...
.
有问题的值是唯一返回的值,
或在返回列表的顶层,
...........
...
.
一般来说,Dash 属性只能是
破折号组件,字符串,字典,数字,无,
或这些列表。
@app.callback(
Output('bar_line_1', 'figure'),
[Input('region', 'value')],
[Input('countries', 'value')],
[Input('select_years', 'value')]
)
def update_graph(region, countries, select_years):
mask = (
(data['Region'] == region)
& (data['Country'] == countries)
& (data['Year'] >= select_years[0])
& (data['Year'] <= select_years[1])
)
filtered_data = data.loc[mask, :]
fig = make_subplots(specs=[[{'secondary_y': True}]])
fig.add_trace(
go.Scatter(
x=filtered_data['Year'],
y=filtered_data['GDP'],
name='GDP'
),
secondary_y=False,
)
fig.add_trace(
go.Scatter(
x=filtered_data['Year'],
y=filtered_data['FDI'],
name='FDI'
),
secondary_y=True
)
return fig```
【问题讨论】:
-
带有
id='bar_line_1'的组件是dcc.Graph()组件吗? -
@FlaviaGiammarino 感谢您的回复。我发现它是什么。问题来自一个不同的 .py 文件,我在将 api 数据导入 main.py 之前用于清理它。当一列(Year)本来是整数时,它已更改为对象类型,我几天来一直试图找到错误。使用 df['Year'].astype(int) 进行转换解决了问题,并且图表正在通过回调工作,无需更改。