2016-08-08 6 views
2

저는 종종 ipython 쉘 또는 ipython 노트북에서 대화식으로 작업하고 있습니다. 말은,이처럼 DatetimeIndexpandas.DataFrame을했다 :matplotlib에서 제정신 인 기본 날짜 축 얻기

을 플롯하기 위해
idx = pd.date_range("12:00", periods=400000, freq="S") 
df = pd.DataFrame({"temp":np.random.normal(size=len(idx))}, index=idx) 

, 나는 간단하게 수행 할 수 있습니다

plt.plot(df.temp, '.') 

enter image description here

사람이 볼 수 있듯이, 어느 쪽도 없습니다 DataFrame에서 유추 된 X 축 데이터를 지정해야합니까? 아니면 실제로 x 축이 날짜 기반이되도록 지정해야합니까? (시간은 사라졌습니다 plt.plot_date) 정말 대단합니다!

그러나 x 축 두 가지 방법으로 추한 외모 :

레이블이 겹쳐 읽기 어려운
  • .
  • 레이블은 날짜 대신 시간을 표시합니다.

하나는 거의과 같이 수정합니다. 다음과 같이하십시오 :

plt.plot(df.temp, '.') 
import matplotlib.dates as mdates 
plt.gca().xaxis.set_major_formatter(
    mdates.DateFormatter('%d-%m-%Y %H:%M:%S')) 
plt.gcf().autofmt_xdate() 

결과 플롯에서 볼 수 있듯이 가장 왼쪽 날짜 레이블이 잘립니다. leftmost date label is clipped

따라서 코드 크기를 300 % 늘리면 멋진 음모를 얻을 수 있습니다. 내 질문에 이제


는 :

나는 내 인생을 위해 날짜를 기준으로 플롯을 할 때 나는 항상 입력해야이 2..3 라인을 기억할 수 없습니다. 인터페이스가 서투른 느낌을줍니다. 나는 항상 해결책을 찾기 위해 google에 ...

matplotlib은 날짜 기반의 플로팅과 관련하여 개인적인 기본값이 무엇인지 기억하는 방식으로 설정할 수 있습니까?

나는 실제로 plot 기능을 해킹 할 수 있다고 생각합니다. 그러나 어쩌면 내가 찾을 수 없었던이 matplotlib.rc_params을 사용하는 방법이있을 것입니다.

위에서 말했듯이 plt.plot은 내가 원하는 것을 실제로 추측하기 위해 먼 길을 가고 있습니다. 그것은 x 축 데이터를 DataFrame의 인덱스로 추측합니다. 그리고 실제로는 날짜의 숫자 표현 대신에 날짜 기반 x 축을 그려야합니다. 어떻게하면 을 추가 할 수 있습니까?

plt.plot(df.temp, '.', date_fmt='%d-%m-%Y %H:%M:%S') 

또는

plt.plot(df.temp, '.', autofmt_xdate=True) 

답변

2

사용할 수 DateFormatter : 다음 동안

import matplotlib.dates as mdates 

fig, ax = plt.subplots(figsize=(8,5)) 
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d-%m-%Y %H:%M:%S')) 
#rotates the tick labels automatically 
fig.autofmt_xdate() 

ax.plot(df["T"], '.') 

plt.show() 

graph

+0

내가 생각하고

어쩌면 몇 가지 힌트와 같은 그것을 제공 코드는 분명히 imp이다. 결과 *를 지금 당깁니다. 대답은 내 질문의 자리를 치지 않습니다. 나는 희망을 가지고 그것을 더 분명하게하기 위해 지금 질문을 바꿔 말할 것이다. –

+0

고맙습니다. '제정 된 축 라벨링 '에 대해 설명해주십시오. 원하는 출력을 추가 할 수 있습니까? – jezrael

+0

'축축한 라벨링'에 대한 부분이 있습니다. 그러나 나는 일회성 답변으로 가고 싶지 않았지만, 나는 한 번 해답을 찾고있다. –

관련 문제