2011-04-27 1 views
1

차트의 세로 형 치수가 날짜 인 2D 배열입니다. 관례 상 날짜는 위에서 아래로 증가해야합니다. 이 코드를 다른 방법으로 주위에 잘 작동 날짜를 표시 :거꾸로 된 세로 형 날짜 축 표시

import numpy as np 
import matplotlib as mpl 
import matplotlib.colorbar as cb 
import matplotlib.pyplot as plt 
from datetime import datetime 

y = np.reshape(np.random.rand(100), (10, 10)) 
f1 = plt.figure() 
ax1 = f1.add_axes([0.15, 0.15, 0.76, 0.80]) 
mindate = mpl.dates.date2num(datetime(2010, 1, 10)) 
maxdate = mpl.dates.date2num(datetime(2010, 1, 20)) 
im1 = ax1.imshow(y, cmap='binary', aspect='auto', origin='upper', 
       interpolation='nearest', extent=(0, 1, mindate, maxdate)) 
ax1.yaxis_date() 
plt.show() 

는 축 방향을 반대로 연결하면 간격 경계를 전환하여 다른 데이터 유형과 매우 간단하지만 날짜이 빈 Y 축에서 발생합니다. 사용자 정의 틱 탐지기를 작성하지 않고도이 작업을 수행 할 수있는 방법이 있습니까?

답변

2

datetime 축을 반전 시키면 진드로 케이 터 및 서식 설정이 지워지는 것이 너무 나쁩니다. 내가 알아낼 수있는 가장 쉬운 방법은 수동으로 다시 설정하는 것입니다. 다음은 format table에 대한 링크입니다. DateFormatter에 대한 링크가 있습니다. 아마도 AutoDateFormatter을 사용할 수도 있습니다.

import numpy as np 
import matplotlib as mpl 
import matplotlib.colorbar as cb 
import matplotlib.pyplot as plt 
from datetime import datetime 
from matplotlib import dates 

y = np.reshape(np.random.rand(100), (10, 10)) 
f1 = plt.figure() 
ax1 = f1.add_axes([0.15, 0.15, 0.76, 0.80]) 
mindate = mpl.dates.date2num(datetime(2010, 1, 10)) 
maxdate = mpl.dates.date2num(datetime(2010, 1, 20)) 
im1 = ax1.imshow(
    y, cmap='binary', aspect='auto', 
    origin='upper', interpolation='nearest', 
    extent=(0, 1, mindate, maxdate)) 

ax1.yaxis_date() 

ax1.invert_yaxis() 
hfmt = dates.DateFormatter('%b %d %Y') 
ax1.yaxis.set_major_locator(dates.DayLocator(interval=1)) 
ax1.yaxis.set_major_formatter(hfmt) 

plt.show() 

그것은이 생산 : enter image description here

+0

가 대단히 감사합니다

여기에 코드입니다! – elpres