我需要按如下方式创建图表。并且需要像在图像中一样在x轴上显示日期。
但我只能生成如下图表。
请参阅用于生成此图表的代码
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()
我知道我可以垂直添加旋转或显示标签。但无法弄清楚如何在第一张图片中显示标签。
答案 0 :(得分:2)
您可以使用tick对象的set_position
和get_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))
这产生了
请注意,0.05
移位是屏幕尺寸。