[英]Plotting multiple lines in one graph with pandas and matplotlib, using climate data
我正在尝试创建一个图表,以显示我城市的平均气温是否在上升。 我正在使用NOAA提供的数据,并且有一个看起来像这样的DataFrame:
DATE TAVG MONTH YEAR
0 1939-07 86.0 07 1939
1 1939-08 84.8 08 1939
2 1939-09 82.2 09 1939
3 1939-10 68.0 10 1939
4 1939-11 53.1 11 1939
5 1939-12 52.5 12 1939
这被保存在一个名为“ avgs”的变量中,然后我使用groupby和plot函数,如下所示:
avgs.groupby(["YEAR"]).plot(kind='line',x='MONTH', y='TAVG')
这将产生每年的折线图(例如,请参见下文),显示每个月的平均温度。 那是很棒的东西,但是我希望能够将所有的年度折线图放到一张图中,以进行视觉比较(看每月平均值是否在增加)。
我对matplotlib和熊猫一无所知,所以我不知道这样做的最佳方法。 我在某个地方出错了,只是没有意识到吗? 如果我走的路正确,我应该从这里去哪里?
与其他答案非常相似(由Anake提出),但您可以在此处控制图例(其他答案,所有年份的图例都将是“ TAVG”。我在您的数据中添加了一个新的年份条目以显示此信息。
avgs = '''
DATE TAVG MONTH YEAR
0 1939-07 86.0 07 1939
1 1939-08 84.8 08 1939
2 1939-09 82.2 09 1939
3 1939-10 68.0 10 1939
4 1940-11 53.1 11 1940
5 1940-12 52.5 12 1940
'''
ax = plt.subplot()
for key, group in avgs.groupby("YEAR"):
ax.plot(group.MONTH, group.TAVG, label = key)
ax.set_xlabel('Month')
ax.set_ylabel('TAVG')
plt.legend()
plt.show()
将导致
你可以做:
ax = None
for group in df.groupby("YEAR"):
ax = group[1].plot(x="MONTH", y="TAVG", ax=ax)
plt.show()
每个plot()
返回plot()
的matplotlib Axes实例。 因此,通过每次都反馈该坐标,您可以重复绘制同一组轴。
我认为您不能像不幸的尝试那样直接以功能样式进行操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.