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

如何使用Plotly生成股票数据折线动画,代码运行无输出如何解决?

问题原因
  • 你当前代码的核心问题是将x和animation_frame参数同时设置为date字段,每个动画帧只会筛选出对应单个日期的1行数据,折线需要至少两个数据点才能渲染,因此无内容展示。
  • 动画帧默认会自动适配当前帧的数据范围,没有固定坐标轴范围的话就算有数据也会出现视图跳动的问题。
可直接运行的修正代码
import plotly.express as px
import pandas as pd

# 读取原始股票数据
df = px.data.stocks()
# 把日期列转成datetime格式方便排序
df['date'] = pd.to_datetime(df['date'])
# 按日期排序保证时序正确
df = df.sort_values('date').reset_index(drop=True)

# 构造动画用的数据集:每个动画帧对应截止到当前日期的所有历史数据
animation_df = pd.DataFrame()
for idx, current_date in enumerate(df['date']):
    # 取出截止到current_date的所有数据
    temp_df = df[df['date'] <= current_date].copy()
    # 加一个帧标记字段,用来做animation_frame
    temp_df['frame_date'] = current_date
    animation_df = pd.concat([animation_df, temp_df], ignore_index=True)

# 生成折线动画
fig = px.line(
    animation_df,
    x='date',
    y=df.columns[1:7],  # 取6家公司的股价数据
    animation_frame='frame_date',
    range_x=[animation_df['date'].min(), animation_df['date'].max()],
    range_y=[0, animation_df.iloc[:, 1:7].max().max() * 1.1],
    labels={'value': '股票价格', 'variable': '公司名称', 'date': '日期'}
)

# 调整播放按钮位置,可选优化
fig.update_layout(
    updatemenus=[{
        'type': 'buttons',
        'showactive': False,
        'y': 0,
        'x': 0.05,
        'xanchor': 'right',
        'yanchor': 'top'
    }]
)

fig.show()
代码说明
  • 先对原始时序数据做预处理,构造了每个帧对应的全量历史数据集,保证每帧都有从起始日期到当前帧日期的完整序列,能正常渲染折线
  • 提前固定了x轴和y轴的范围,避免动画播放过程中坐标轴自动缩放导致的视图跳动
  • 保留了6家公司的股票数据同时展示,动画播放时折线会随着日期推进逐步延长,符合预期效果

内容的提问来源于stack exchange,提问作者wyc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:27:05