如何在Python中使用plotly动画切换条形图?

问题描述 投票:0回答:1

使用 Python 中的交互式绘图库,我想显示一个条形图,单击按钮即可转换为不同的值(请参阅我在 Keynote 中创建的动画 gif 作为演示)。

从下面的简单代码开始,如何创建这样的动画?

import plotly.express as px
model1 = px.bar(x=["Test set 1", "Test set 2"], y=[0.4, 0.8], width=500)
# model2 = px.bar(x=["Test set 1", "Test set 2"], y=[0.6, 0.2], width=500)                                                                                                             
model1.update_layout(xaxis_title="", yaxis_title="Accuracy", yaxis_range=[0,1])
model1.show()
# TODO: Add buttons that allow animated switch between model1 and model2.
python plotly visualization
1个回答
0
投票

动画功能有一个开始帧到结束帧,因此只需一个按钮即可完成,而不是两个按钮。我已根据参考文献中的example解决了您的问题。我们增加了帧数以使动画更加流畅。按钮现在是 model_A->Model B。最后,我确保更新了标题。

import plotly.graph_objects as go
import numpy as np

animation_frame = [go.Frame(data=[go.Bar(x=["Test set 1", "Test set 2"], y=[y1,y2])]) 
                   for y1,y2 
                   in zip(np.linspace(0.4,0.6,20),np.linspace(0.8,0.2,20))]
animation_frame[-1]['layout'] = go.Layout(title_text="Model B")

fig = go.Figure(
    data=[go.Bar(x=["Test set 1", "Test set 2"], y=[0.4, 0.8])],
    layout=go.Layout(
        yaxis=dict(range=[0, 1], autorange=False),
        title="Model A",
        updatemenus=[dict(
            type="buttons",
            buttons=[
                dict(label="Model A->Model B",
                     method="animate",
                     args=[None,{"frame": {"duration": 50, "redraw": True}}]),
                    ])]
    ),
    frames=animation_frame
)

fig.show()

© www.soinside.com 2019 - 2024. All rights reserved.