如何使用宽数据帧格式制作plotly express面积图动画?

2024-04-25 15:06:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我在浏览图表和动画时遇到了一个我不知道如何处理的问题。如果有人能帮助我,我将非常感激。下面是我的dataframe的外观(它实际上有额外的索引,但这并不重要,因为它没有被使用):

YearWeekISO ALL      Age18_24 Age25_49
2020-W52    0        0        0
2020-W53    10       0        6
2021-W01    50       0        26
2021-W02    1400     190      720
2021-W03    96722    2158     44434
2021-W04    406326   15738    186148
2021-W05    913702   56894    420448
2021-W06    1312204  75910    559022
2021-W07    1883038  92950    652650
2021-W08    2390826  104078   699688
2021-W09    2873676  110784   732604
2021-W10    3215104  114296   752118
2021-W11    3565462  116494   767442
2021-W12    3974814  118154   781284
2021-W13    4130168  119008   787832
2021-W14    4159884  119270   789706

到目前为止,我得到的是一个静态图,如下所示:

area chart

生成上面图像的代码:

fig = px.area(
    df, 
    x='YearWeekISO', 
    y=['ALL', 'Age18_24', 'Age25_49'],
    # animation_frame='YearWeekISO',
)
fig.show()

如您所见,animation_frame参数被注释。我想让动画发生的是,它应该根据x值(YearWeekISO)从左向右移动,就像在折线图比赛中一样。我怎样才能做到这一点?我还想补充一点,在使用df.melt()之后,我尝试使用长数据帧格式来实现这一点。代码将如下所示:

fig = px.area(
    df, 
    x=df.index, 
    y='value',
    color='TargetGroup',
    # animation_frame=df.index,
)
fig.show()

此代码将产生相同的精确结果,并具有相同的精确缺陷。那我该怎么做呢?我是否选择了错误的animation_frame值,还是需要更改数据帧才能正常工作?我还试图改变日期格式,但似乎也不起作用,或者我做错了什么。顺便说一下,在这种情况下,animation_frame似乎不接受实际日期时间格式的日期,只接受字符串或整数。对于代码,我遵循了以下教程: https://plotly.com/python/animations/
https://plotly.com/python/wide-form/