如何使用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
相关产品推荐
相关产品推荐

