使用 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.
动画功能有一个开始帧到结束帧,因此只需一个按钮即可完成,而不是两个按钮。我已根据参考文献中的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()