如何基于给定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
相关产品推荐
相关产品推荐

