2014-03-24 133 views
6

這與new pythonic style for shared axes square subplots in matplotlib?有關(或更確切地說是後續)。Pyplot:共享座標軸和子圖之間沒有空間

我想讓子圖共享一個軸,就像上面鏈接的問題一樣。不過,我也希望劇情之間沒有空間。這是我的代碼的相關部分:

f, (ax1, ax2) = plt.subplots(1, 2, sharex=True, sharey=True) 
plt.setp(ax1, aspect=1.0, adjustable='box-forced') 
plt.setp(ax2, aspect=1.0, adjustable='box-forced') 

# Plot 1 
ax1.matshow(pixels1, interpolation="bicubic", cmap="jet") 
ax1.set_xlim((0,500)) 
ax1.set_ylim((0,500)) 

# Plot 2 
ax2.matshow(pixels2, interpolation="bicubic", cmap="jet") 
ax2.set_xlim((0,500)) 
ax2.set_ylim((0,500)) 

f.subplots_adjust(wspace=0) 

這是結果: enter image description here

如果我註釋掉兩個plt.setp()命令,我得到一些額外的白色邊框: enter image description here

我該如何讓這個圖看起來像我的第一個結果,但是在第二個結果中碰到軸?

回答

5

編輯:讓你的結果的最快方式是通過@Benjamin Bannier所描述的,簡單地使用

fig.subplots_adjust(wspace=0) 

另一種方法是,使具有寬度/高度比等於2的圖(如你有兩塊地塊)。只有當您計劃在文檔中包含圖形,並且您已經知道最終文檔的列寬時,這纔是明智的。

您可以在調用Figure(figsize=(width,height))的調用中設置寬度和高度,或者以英寸爲參數設置plt.subplots()。例如:

fig, axes = plt.subplots(ncols=2, sharex=True, sharey=True,figsize=(8,4)) 
fig.subplots_adjust(0,0,1,1,0,0) 

截圖:enter image description here

由於@Benjamin Bannier指出,作爲一個缺點,你必須零頁邊距。然後你可以玩subplot_adjust(),但如果你想保持簡單的解決方案,你必須小心以對稱的方式創造空間。一個例子可能是fig.subplots_adjust(.1,.1,.9,.9,0,0)

+1

您的'subplots_adjust'隱藏了可能不需要的座標軸。我會建議'subplots_adjust(hspace = 0)',它專門去除面板之間的空間。 –

+0

你的意思是'wspace'。好點子。 – gg349

+0

尤普,似乎有錯誤的心理圖像,我總是把這兩個混合起來。 –

相關問題