2017-12-13 3 views
0

私の都市の平均気温が上昇しているかどうかを示すグラフを作成しようとしています。私はNOAAによって提供されたデータを使用してこのようになりますDATAFRAME持っている:気候データを使用して、1つのグラフに複数の線をpandasとmatplotlibでプロットする

  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とプロット機能を使用します。

avgs.groupby(["YEAR"]).plot(kind='line',x='MONTH', y='TAVG') 

これは、各月の平均気温を示す各年の折れ線グラフを作成します(下図参照)。それはすばらしいことですが、視覚的な比較のために、毎年の折れ線グラフを1つのグラフにまとめることができるようにしたいと思います。

Example output

私はmatplotlibのとパンダとの合計のnoobので、私はこれを行うための最善の方法を知りません。私はどこかで間違っていて、それを認識していませんか?私が正しい道を歩いているなら、ここからどこに行くべきですか?

答えて

0

あなたが行うことができます:それはプロットを描いたところ

ax = None 
for group in df.groupby("YEAR"): 
    ax = group[1].plot(x="MONTH", y="TAVG", ax=ax) 

plt.show() 

plot()戻っmatplotlibのインスタンスを座標軸。だから毎回それを戻すことで、同じ軸群を繰り返し描くことができます。

残念なことに、機能的なスタイルで直接行うことはできません。

0

他の回答(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() 

enter image description here

になります
関連する問題