首页 > 解决方案 > 在python中绘制3个变量的折线图

问题描述

Country Month   GDPA
USA     January  5
USA     February 10
USA     March    5
Canada  January  7
Canada  February 4
Canada  March    10
Mexico  January  9
Mexico  February 17
Mexico  March    8

以上是我的数据框。

我想制作df的折线图。其中 x 轴是变量 Month。y 轴是 GDPA。每个国家/地区都有三个单独的线路。最好只使用 matplotlib。

plt.plot(df[‘Country’], df[‘GDPA’], df[‘Month’]

我上面的代码没有产生预期的图表,因为线是连接的,甚至没有考虑 GDPA 值。

我希望 x 轴是:1 月 2 月 3 月
y 轴是 GDPA 值。
并且有 3 行(每个国家/地区)

在此处输入图像描述

标签: pythonmatplotlib

解决方案


这可能不是尽可能优雅,但一种低级的方法是基本上只制作一组国家(所以你没有重复),然后循环该组并为每个国家绘制一条线。

import matplotlib.pyplot as plt
import pandas

d = {'Country': ['USA', 'USA', 'USA', 'Canada', 'Canada', 'Canada', 'Mexico', 'Mexico', 'Mexico'],
     'Month': ['January', 'February', 'March', 'January', 'February', 'March', 'January', 'February', 'March'],
     'GDPA': [5, 10, 5, 7, 4, 10, 9, 17, 8]}
df = pandas.DataFrame(data=d)
print(df)

country_set = set(df['Country'])

plt.figure()
for country in country_set:
     selected_data = df.loc[df['Country'] == country]
     plt.plot(selected_data['Month'], selected_data['GDPA'], label=country)
     
plt.legend()
plt.show()

结果图在这里

纯python和matplotlib!


推荐阅读