2016-12-31 19 views
0

我使用以下代碼創建具有2副區的圖:蟒matplotlib創建2副區共享軸屬性

fig, (ax1, ax2) = plt.subplots(2, sharex = True, figsize=(20, 6)) 

mpf.candlestick_ohlc(ax1,quotes, width=0.01) 
ax1.xaxis_date() 
ax1.xaxis.set_major_locator(mpl.dates.DayLocator(interval=1)) 
ax1.xaxis.set_major_formatter(mpl.dates.DateFormatter('%a, %b %d \'%y')) 
ax1.xaxis.set_minor_locator(mpl.dates.HourLocator(byhour=range(0,24,4))) 
ax1.xaxis.set_minor_formatter(mpl.dates.DateFormatter('%-H')) 
ax1.grid(True) 
ax1.grid(b=True, which='minor', color='0.7', linestyle='dotted') 
ax2.tick_params(direction='out', pad=15) 

majors=ax1.xaxis.get_majorticklocs() 
chart_start, chart_end = (ax1.xaxis.get_view_interval()[0],ax1.xaxis.get_view_interval()[1]) 
for major in majors: 
    ax1.axvspan(max (chart_start, major-(0.3333)),min(chart_end, major+(0.3333)),color="0.95", zorder=-1) 

plt.bar(quotes[:,0] , quotes[:, 5], width = 0.01) 

plt.show() 

這裏所得到的圖中:

enter image description here

我想副區在底部具有相同的網格,主要/次要壁蝨和axvspan作爲上面的子圖。我可以重寫所有ax1 ...行ax1ax2,但我懷疑可能有辦法將1個go中的兩個軸分配不同的元素(即grid,minor/major ticks和axvspan)?

回答

0

確定發現:

fig, (axes) = plt.subplots(2, sharex = True, figsize=(20, 6)) 

mpf.candlestick_ohlc(axes[0],quotes, width=0.01) 
plt.bar(quotes[:,0] , quotes[:, 5], width = 0.01) 

for i , axes[i] in enumerate(axes): 
    axes[i].xaxis_date(tz="Europe/Berlin") 
    axes[i].xaxis.set_major_locator(mpl.dates.DayLocator(interval=1)) 
    axes[i].xaxis.set_major_formatter(mpl.dates.DateFormatter('%a, %b %d \'%y')) 
    axes[i].xaxis.set_minor_locator(mpl.dates.HourLocator(byhour=range(0,24,4))) 
    axes[i].xaxis.set_minor_formatter(mpl.dates.DateFormatter('%-H')) 
    axes[i].tick_params(direction='out', pad=15) 
    axes[i].grid(True) 
    axes[i].grid(b=True, which='minor', color='0.7', linestyle='dotted') 

    majors=axes[i].xaxis.get_majorticklocs() 
    chart_start, chart_end = (axes[i].xaxis.get_view_interval()[0], axes[i].xaxis.get_view_interval()[1]) 
    for major in majors: 
     axes[i].axvspan(max (chart_start, major-(0.3333)),min(chart_end, major+(0.3333)),color="0.95", zorder=-1) 

plt.show()