[英]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.