。
問題:正如你所看到的,下面的圖(irf圖)被剪掉了。當我添加plt.subplots_adjust(hspace = 10),我得到:
這有點幫助,但代價是減少了頂部子圖的大小,這是不可取的。
問題:我怎樣才能讓兩個子圖的尺寸相等而不產生任何剪裁。我希望我可以從fig, (ax1, ax2) = plt.subplots(2,1)開始,然后將ax1傳遞給irf.plot()。這樣我就可以控制兩個軸了。但顯然,沒有辦法將軸傳給irf.plot()。它只是創建自己的圖形。如果有辦法的話,我甚至可以滿足于分別創建兩個圖形,然后將它們連接起來并保存為一個圖形。
uj5u.com熱心網友回復:
這里的基本問題是,irf.plot正在創建一個帶有單個子圖的圖(一行,一列)。然后你用add_subplot(211)添加了第二個子圖,這就是告訴matplotlib將其安排在2行配置的頂行。但是原來的子圖沒有被改變,所以它的一部分被新的子圖(ax1)所隱藏。
irf.plot就我所見,在創建時似乎沒有任何選項來控制這一點。
但是我們可以做的是在創建之后(例如像GridSpec),在添加新的子圖之前,使用這個答案來修改子圖的位置。
例如,類似這樣的東西可能會起作用:
importmatplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
irf = results.irf()
fig = irf.plot(plot_stderr=False, impulse=columns[1], response=columns[0]
# Change position of irf plot axes[/span]。
ax_irf = fig.get_axes()[0]
gs = gridspec.GridSpec(nrows=2, ncols=2)
ax_irf.set_position(gs[0, 0].get_position(fig)
ax_irf.set_subplotspec(gs[0, 0]) # 這可能是多余的。
# 現在添加第二幅子圖。
ax1 = fig.add_subplot(gs[1, 0] )
ax1.plot(df[columns].dropna().index, df[column].dropna().iloc[:, 1] , color='red')
ax1.tick_params(axis='y'/span>, labelcolor='red')
ax2 = ax1.twinx() #實體化第二個軸,共享同一個X軸。
ax2.plot(df[columns].dropna().index, df[column].dropna().iloc[:, 0], color='blue')
ax2.tick_params(axis='y', labelcolor='blue')
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/323179.html
標籤:


