You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于给定DataFrame绘制多国家年度count时间序列折线图?

实现多国家时间序列折线图的方法

这里提供两种常用实现方式,都能生成你需要的「每个国家一条折线、随年度count值变化」的时间序列图:

方法一:用Pandas自带绘图工具

Pandas的DataFrame自带plot方法,配合数据透视可以快速生成目标图表:

import pandas as pd
import matplotlib.pyplot as plt

# 构造你提供的数据集
data = {
    'Year': [2005,2005,2005,2005,2005,2006,2006,2006,2006,2006,2007,2007,2007,2007,2007],
    'country': ['Australia','Austria','Belgium','Canada','China']*3,
    'count': [2,1,0,4,0,3,0,1,5,2,5,1,2,6,3]
}
df = pd.DataFrame(data).set_index('Year')

# 转成宽格式:年份为行、国家为列、count为对应值
pivot_df = df.pivot(columns='country', values='count')

# 绘制折线图
pivot_df.plot(kind='line', figsize=(10,6))

# 补充图表细节
plt.title('各国Count年度变化')
plt.xlabel('年份')
plt.ylabel('Count数值')
plt.legend(title='国家')
plt.grid(alpha=0.3)
plt.show()

方法二:用Seaborn库(更简洁的分组绘图)

Seaborn的lineplot可以直接通过hue参数区分国家,不需要手动转换数据格式:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 构造数据集(和上面一致)
data = {
    'Year': [2005,2005,2005,2005,2005,2006,2006,2006,2006,2006,2007,2007,2007,2007,2007],
    'country': ['Australia','Austria','Belgium','Canada','China']*3,
    'count': [2,1,0,4,0,3,0,1,5,2,5,1,2,6,3]
}
df = pd.DataFrame(data)

# 绘制多折线图
plt.figure(figsize=(10,6))
sns.lineplot(data=df, x='Year', y='count', hue='country', marker='o')

# 补充图表细节
plt.title('各国Count年度变化')
plt.xlabel('年份')
plt.ylabel('Count数值')
plt.legend(title='国家')
plt.grid(alpha=0.3)
plt.show()

两种方法都能生成和参考图风格一致的结果:每条折线对应一个国家,横轴为年份、纵轴为count数值,折线随年度数据起伏,同时配有清晰图例区分不同国家。

内容的提问来源于stack exchange,提问作者SimoneA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 16:42:51