2017-12-13 16 views
0

도시의 평균 기온이 상승하고 있는지 여부를 보여주는 그래프를 만들려고합니다. 나는 NOAA에서 제공하는 데이터를 사용하여 다음과 같이 보이는 DataFrame이있어 :기후 데이터를 사용하여 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') 

이렇게하면 각 달의 평균 기온을 보여주는 각 연도의 선 그래프 (예 : 아래 참조)가 생성됩니다. 그게 좋은 일이지만 시각적 인 비교를 위해 매년 그래프의 모든 그래프를 하나의 그래프에 넣을 수 있기를 바랍니다 (매월 평균이 증가하는지 확인).

Example output

나는하기 matplotlib와 팬더와 총 멍청한 놈, 그래서 내가 이렇게하는 가장 좋은 방법을 알고하지 않습니다. 나는 어딘가에서 잘못 가고 그냥 깨닫지 못하니? 그리고 내가 올바른 길을 가고 있다면, 나는 여기서 어디로 가야합니까?

답변

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