绘制多列DataFrame:列名为X轴、行(国家)为图例的折线图
没问题!我来帮你搞定这个折线图的绘制~
绘制指定格式的DataFrame折线图
首先咱们明确核心需求:把年份(列名)作为X轴,各列数值作为Y轴,国家名称作为图例,生成展示数据变化的折线图。我用Python的pandas+matplotlib来演示,这是最常用且易上手的组合。
步骤1:准备示例DataFrame
先模拟一个符合你需求的数据集,比如不同国家历年的GDP数据:
import pandas as pd # 创建示例DataFrame:行=国家,列=年份 data = { "2018": [1.2, 2.3, 0.9], "2019": [1.5, 2.5, 1.1], "2020": [1.1, 2.1, 0.8], "2021": [1.6, 2.7, 1.2], "2022": [1.8, 2.9, 1.4] } df = pd.DataFrame(data, index=["中国", "美国", "日本"]) print(df)
运行后会得到这样的结构:
2018 2019 2020 2021 2022 中国 1.2 1.5 1.1 1.6 1.8 美国 2.3 2.5 2.1 2.7 2.9 日本 0.9 1.1 0.8 1.2 1.4
步骤2:绘制折线图
这里给你两种实现方式,按需选择:
方式一:pandas直接绘图(最简单)
pandas的DataFrame自带plot.line()方法,一行代码就能满足需求,核心是转置DataFrame:
import matplotlib.pyplot as plt # 转置后,年份变成X轴,国家自动作为图例 df.T.plot(kind='line', figsize=(10, 6)) plt.title('各国历年GDP变化') plt.xlabel('年份') plt.ylabel('GDP(万亿美元)') plt.legend(title='国家') plt.grid(True) plt.show()
为什么要转置?因为默认pandas会把行作为X轴,转置后原来的列(年份)成为X轴,原来的行(国家)变成不同的折线,完美匹配你的要求!
方式二:matplotlib手动绘制(更灵活)
如果需要自定义折线样式、颜色、标记等细节,可以手动循环绘制:
import matplotlib.pyplot as plt plt.figure(figsize=(10, 6)) # 遍历每个国家,逐个绘制折线 for country in df.index: plt.plot(df.columns, df.loc[country], label=country, marker='o', linewidth=2) # 添加图表元素 plt.title('各国历年GDP变化', fontsize=14) plt.xlabel('年份', fontsize=12) plt.ylabel('GDP(万亿美元)', fontsize=12) plt.legend(title='国家', fontsize=10) plt.grid(alpha=0.3) plt.show()
这种方式可以给每个国家设置独特的标记(比如marker='o'是圆圈标记)、线条宽度,自由度更高。
关键注意点
- 如果你的原始DataFrame结构是年份为行,国家为列,那直接用
df.plot.line()就行,不需要转置,记得根据自己的实际数据结构调整。 - 要是需要添加更多细节(比如折线颜色、图例位置、数据标签),随时调整代码里的参数就行。
这样就能轻松生成你想要的折线图啦,有其他细节问题随时提!
内容的提问来源于stack exchange,提问作者Joe MacGuffog
相关产品推荐
相关产品推荐

