簡體   English   中英

使用氣候數據在一張圖中使用pandas和matplotlib繪制多條線

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM