2013-11-22 108 views
3

我需要創建一個圖表,如下所示。並且需要像圖像一樣在x軸上顯示日期。matplotlib x標籤放置

enter image description here

但我只能夠生成圖表像以下。 enter image description here

請參閱使用生成這個圖表

fig, ax = plt.subplots()    
ax.plot(numpyTradeData.date, numpyTradeData.adj_close) 

#Add Text in Grap 
ax.text(0.5,0.1, 'Class Period\n %s - %s'%(clsStartPeriod.strftime('%B %d, 
%Y'),clsEndPeriod.strftime('%B %d, %Y')), 
horizontalalignment='center', 
fontsize=9, color='red', 
transform=ax.transAxes) 

#Fill An Area in Graph 
ax.fill_between(numpyTradeData.date[classStartPeriodIndex:classEndPeriodIndex], 0, numpyTradeData.adj_close[classStartPeriodIndex:classEndPeriodIndex], facecolor='0.9', alpha='0.5') 

ax.xaxis.set_major_locator(LinearLocator(numticks=5)) 
ax.xaxis.set_major_formatter(dateStrFormatter) 
ax.set_xlim(minDate,maxDate) 
ax.set_ylabel('Share Price') 

formatter = FuncFormatter(self.addDollarSymbol) 
ax.yaxis.set_major_formatter(formatter) 
fig.autofmt_xdate() 

我知道我可以垂直旋轉添加或顯示標籤的代碼。但無法弄清楚如何在第一張圖片中顯示標籤。

回答

2

您可以使用刻度對象的set_positionget_position方法。 一個小例子將是:

import matplotlib.pyplot as plt 
f,a = plt.subplots(1,1) 
a.plot([1,2]) 
ticks = a.xaxis.get_ticklabels() 
for tick in ticks[::2]: 
    tpos = tick.get_position() 
    tick.set_position((tpos[0],tpos[1]-0.05)) 

這產生
enter image description here
注意,0.05移是在屏面尺寸。

+0

感謝,似乎工作... – Nick