用python做一个1960-2019全球GDP的动态柱形图
时间: 2024-02-14 09:04:40 浏览: 135
好的,你可以通过使用Python中的matplotlib库和pandas库来创建一个动态的柱形图,以下是一个简单的示例代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
# 读取数据
df = pd.read_csv('global_gdp.csv', index_col=0)
# 创建初始图形
fig, ax = plt.subplots(figsize=(10, 6))
# 定义更新函数
def update(num):
plt.cla() # 清除旧图
top_gdp = df[df['Year'] == num].sort_values('GDP', ascending=False).head(10) # 取前十个最大GDP的国家
x = top_gdp['Country']
y = top_gdp['GDP']
ax.bar(x, y)
ax.set_xticklabels(x, rotation=45, ha='right')
ax.set_ylabel('GDP (trillion USD)')
ax.set_title(f'Top 10 Countries GDP ({num})')
# 创建动画
ani = FuncAnimation(fig, update, frames=range(1960, 2020), interval=500)
# 保存动画
ani.save('global_gdp.gif', writer='imagemagick')
```
在上面的代码中,我们假设数据文件为 `global_gdp.csv`,格式如下:
```
Year,Country,GDP
1960,USA,0.54
1960,China,0.05
1960,Japan,0.04
...
```
首先,我们使用 `pd.read_csv` 函数读取数据,并创建一个初始图形。然后,我们定义一个 `update` 函数,该函数接受一个参数 `num`,表示年份。在该函数中,我们使用 `df[df['Year'] == num].sort_values('GDP', ascending=False).head(10)` 这个语句来选择特定年份的前十个最大GDP的国家。接着,我们创建一个柱形图,并使用 `FuncAnimation` 函数创建动画。最后,我们使用 `ani.save` 函数将动画保存为 `global_gdp.gif` 文件。
请注意,上面的代码仅仅是示例代码,你需要根据你的数据格式和需求进行修改。
阅读全文