You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Google Colab中用Dash创建交互式时间序列图报错求助

错误排查与解决方案

核心错误原因

你的代码中px.line()的参数逻辑完全错误:时间序列图需要以**日期(date)**为x轴、**销售额(sales)**为y轴,但你写的px.line(filtered_df, x='sales', y=year)里,year是下拉框传来的整数年份(而非DataFrame的列名),Plotly无法识别这个无效的y轴参数,进而触发NoneType相关报错。

修复后的完整代码

import pandas as pd
from jupyter_dash import JupyterDash
import dash_html_components as html
import dash_core_components as dcc
from plotly.express import line

# 请确保此处已正确加载你的数据,示例:
# df = pd.read_csv('your_sales_data.csv')

df['date'] = pd.to_datetime(df['date'], format='%Y-%m-%d')
df['year'] = df['date'].dt.year

app = JupyterDash(__name__)

app.layout = html.Div([
    html.H4('Sales Over Time'),
    dcc.Graph(id='time-series-chart'),
    html.P('Select Year'),
    dcc.Dropdown(
        id='year',
        options=[{'label': year, 'value': year} for year in df['year'].unique()],
        value=df['year'].min(),
        clearable=False
    )
])

@app.callback(
    Output('time-series-chart', 'figure'),
    Input('year', 'value')
)
def update_line_chart(selected_year):
    filtered_df = df[df['year'] == selected_year]
    # 修正x/y轴参数,同时优化图表标题和标签
    fig = line(filtered_df, x='date', y='sales', 
               title=f'Sales Trend in {selected_year}',
               labels={'date': 'Date', 'sales': 'Sales Amount'})
    return fig

app.run_server(mode='inline')

额外优化提示

  • 建议将回调函数的参数名从year改为selected_year,避免与DataFrame的year列名混淆,提升代码可读性
  • 确认你的df包含有效的date和sales列,若df['year'].min()返回None,需检查数据加载是否正常

内容的提问来源于stack exchange,提问作者Humza Malik-Ramzan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:24:50