选择vega_datasets里面的一个数据集利用plotly绘制动态柱状图可以控制速度
时间: 2023-12-03 10:43:27 浏览: 118
好的,我选用vega_datasets中的"cars"数据集,利用plotly绘制动态柱状图。
首先,我们需要安装vega_datasets和plotly库:
```
!pip install vega_datasets
!pip install plotly
```
接下来,我们可以读取数据集并创建一个初始的柱状图:
```python
import plotly.graph_objs as go
from vega_datasets import data
df = data.cars()
fig = go.Figure(data=[go.Bar(
x=df['Origin'].unique(),
y=df.groupby('Origin')['Horsepower'].mean(),
marker=dict(color='blue')
)])
fig.update_layout(
title='Average Horsepower by Origin',
xaxis_title='Origin',
yaxis_title='Average Horsepower'
)
fig.show()
```
这将生成一个静态的柱状图,显示每个汽车制造地的平均马力。
接下来,我们将使用plotly的动画功能来将其转换为动态柱状图。我们可以使用`frames`参数来指示动画应该如何更新:
```python
import plotly.graph_objs as go
from vega_datasets import data
df = data.cars()
fig = go.Figure(data=[go.Bar(
x=df['Origin'].unique(),
y=df.groupby('Origin')['Horsepower'].mean(),
marker=dict(color='blue')
)])
fig.update_layout(
title='Average Horsepower by Origin',
xaxis_title='Origin',
yaxis_title='Average Horsepower'
)
frames = []
for i, year in enumerate(df['Year'].unique()):
frame = go.Frame(data=[go.Bar(
x=df[df['Year']==year]['Origin'].unique(),
y=df[df['Year']==year].groupby('Origin')['Horsepower'].mean(),
marker=dict(color='blue')
)])
frame.update_layout(
title=f'Average Horsepower by Origin ({year})',
xaxis_title='Origin',
yaxis_title='Average Horsepower'
)
frames.append(frame)
fig.frames = frames
fig.update_layout(
updatemenus=[dict(
type='buttons',
showactive=False,
buttons=[dict(
label='Play',
method='animate',
args=[None, dict(frame=dict(duration=500, redraw=True), fromcurrent=True, transition=dict(duration=0))]
),
dict(
label='Pause',
method='animate',
args=[[None], dict(frame=dict(duration=0), mode='immediate', transition=dict(duration=0))]
)]
)]
)
fig.show()
```
这将生成一个动态柱状图,显示每个汽车制造地的平均马力随时间的变化。你可以通过点击“Play”按钮来启动动画,并通过调整`duration`参数来控制动画的速度。
阅读全文