반응형
같은 그림에 다른 데이터 프레임을 플로팅합니다.
다음과 같은 형식으로 수년간의 온도 기록이있는 온도 파일이 있습니다.
2012-04-12,16:13:09,20.6
2012-04-12,17:13:09,20.9
2012-04-12,18:13:09,20.6
2007-05-12,19:13:09,5.4
2007-05-12,20:13:09,20.6
2007-05-12,20:13:09,20.6
2005-08-11,11:13:09,20.6
2005-08-11,11:13:09,17.5
2005-08-13,07:13:09,20.6
2006-04-13,01:13:09,20.6
매년 기록의 숫자와 시간이 다르므로 pandas datetimeindices는 모두 다릅니다.
비교를 위해 동일한 그림에 다른 연도의 데이터를 플로팅하고 싶습니다. X 축은 1 월부터 12 월까지이고 Y 축은 온도입니다. 이 작업을 어떻게해야합니까?
Chang의 대답은 동일한 그림에 여러 번 플롯하는 방법을 설명하지만이 경우 a groupby
및 unstack
ing을 사용하는 것이 더 나을 수 있습니다 .
(데이터 프레임에 이미 날짜 시간 인덱스가 있다고 가정)
In [1]: df
Out[1]:
value
datetime
2010-01-01 1
2010-02-01 1
2009-01-01 1
# create additional month and year columns for convenience
df['Month'] = map(lambda x: x.month, df.index)
df['Year'] = map(lambda x: x.year, df.index)
In [5]: df.groupby(['Month','Year']).mean().unstack()
Out[5]:
value
Year 2009 2010
Month
1 1 1
2 NaN 1
이제 쉽게 플로팅 할 수 있습니다 (매년 별도의 선으로).
df.groupby(['Month','Year']).mean().unstack().plot()
시험:
ax = df1.plot()
df2.plot(ax=ax)
Jupyter / Ipython 노트북을 실행 중이고 사용에 문제가있는 경우;
ax = df1.plot()
df2.plot(ax=ax)
같은 셀 내에서 명령을 실행하십시오 !! 어떤 이유로 연속 셀로 분리되면 작동하지 않습니다. 적어도 나를 위해.
여러 데이터 프레임에 대해이를 수행하려면 해당 프레임에 대해 for 루프를 수행 할 수 있습니다.
fig = plt.figure(num=None, figsize=(10, 8))
ax = dict_of_dfs['FOO'].column.plot()
for BAR in dict_of_dfs.keys():
if BAR == 'FOO':
pass
else:
dict_of_dfs[BAR].column.plot(ax=ax)
참고 URL : https://stackoverflow.com/questions/13872533/plot-different-dataframes-in-the-same-figure
반응형
'programing tip' 카테고리의 다른 글
AngularJS에서 ng-repeat를 사용하여 100 개 중 6-10 개 결과 필터링 (0) | 2020.10.13 |
---|---|
왜 strcpy 대신 strncpy를 사용해야합니까? (0) | 2020.10.13 |
UIView 흔들림 애니메이션 (0) | 2020.10.13 |
마우스 오버 또는 호버 vue.js (0) | 2020.10.13 |
Python 중첩 함수 변수 범위 지정 (0) | 2020.10.13 |