簡體   English   中英

python matplotlib創建2個子圖共享軸屬性

[英]python matplotlib create 2 subplot sharing axes properties

我正在使用以下代碼創建帶有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()

這里的結果圖:

在此處輸入圖片說明

我希望底部的子圖具有與上面的子圖相同的網格,主要/次要刻度線和axvspan。 我可以重寫所有ax1 ...將ax1更改為ax2 ,但我懷疑可能有一種方法可以在1步中將不同的元素(即網格,次要/主要刻度和axvspan)分配給兩個軸?

確定找到它:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM