如何用Plotly Express实现国债收益率数据的折线图动画?
解决Plotly折线图动画问题
你的问题核心是数据格式不匹配加上参数设置错误——直接用宽格式的DataFrame做动画折线图,Plotly Express没法正确解析每个帧的数据对应关系,而且你把x和y轴的参数搞反了。
修复步骤:
将宽格式DataFrame转为长格式
Plotly Express的动画功能需要长格式数据(每一行对应一个数据点),用pandas.melt()完成转换:import pandas as pd import plotly.express as px # 假设你的原始DataFrame名为df,结构为Date, 1Mo, 2Mo, 3Mo, 6Mo, 1Yr, 2Yr df_long = df.melt( id_vars='Date', # 保留Date作为每个数据点的日期标识 var_name='Tenor', # 将原期限列名(1Mo/2Mo等)转为统一的Tenor字段 value_name='Yield' # 将原收益率数值转为统一的Yield字段 )正确设置Plotly绘图参数
转换后,x轴对应期限(Tenor),y轴对应收益率(Yield),animation_frame绑定Date字段:fig = px.line( df_long, x='Tenor', y='Yield', animation_frame='Date', title="Treasury Yields", labels={'Yield': '收益率', 'Tenor': '期限'} # 可选:自定义轴标签,提升可读性 ) fig.show()
原代码无效的原因:
- 宽格式数据无法让Plotly识别“单日期下多个期限对应收益率”的折线映射关系;
- 错误地将
y参数设为Date,应该把收益率数值作为y轴,期限类别作为x轴。
内容的提问来源于stack exchange,提问作者Kai Zhang
相关产品推荐
相关产品推荐

