2015-02-09 157 views
3

我正在製作一個總共有68個子圖的圖形,並且希望刪除它們之間的空白區域。這是我有:如何去除子圖之間的「空」空間?

plot with too much space

我該怎麼做呢?

編輯:使用plt.tight_layout()使事情變得更糟:

even more space between the subplots

這裏是我的代碼:

for j in range(0,len(sort_yf)): 
for i in range(0,len(yf)): 
    if yf[i]==sort_yf[j]: 
     sort_ID=np.append(sort_ID,'output/'+ID[i]+'.png') 
for i in range (1,69): 
    plt.subplot(17,4,i,aspect='equal') 
    plots=img.imread(sort_ID[i]) 
    plt.imshow(plots) 
    plt.axis('off') 
plt.show() 
+0

我想這個問題的答案是[這裏](https://stackoverflow.com/questions/41071947/how-to-remove-the-space-between-subplots-in-matplotlib-pyplot)爲none這裏的答案真的很有用。 – ImportanceOfBeingErnest 2017-10-02 00:06:47

回答

5

您是否嘗試過的緊密佈局功能?

plt.tight_layout() 

又見HERE

編輯:另外,您也可以使用gridspec

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib as mpl 
images = [np.random.rand(40, 40) for x in range(68)] 
gs = mpl.gridspec.GridSpec(17, 4) 
gs.update(wspace=0.1, hspace=0.1, left=0.1, right=0.4, bottom=0.1, top=0.9) 
for i in range(68): 
    plt.subplot(gs[i]) 
    plt.imshow(images[i]) 
    plt.axis('off') 
plt.show() 

enter image description here

+0

嗨,剛試過這個,不幸的是它沒有工作。出於某種原因,它似乎使問題變得更糟。 – blablabla 2015-02-09 11:38:24

+0

它是怎麼變得更糟? 此外,你可以修改你的示例代碼片段,以便可以執行嗎?例如,你沒有指定'sort_yf'。 – SmCaterpillar 2015-02-09 11:46:22

+0

每張圖片實際上都變小了,我會上傳一張我的意思。我真的不能這樣做,因爲它需要一個csv文件和一個文件夾,裏面裝滿了相當大的圖像。 – blablabla 2015-02-09 11:48:53

2

調整空白周圍的次要情節與:

plt.subplots_adjust(wspace=0.01,hspace=0.01) 

在我的例子中,我剛剛修改了wspace和hspace。你也可以調整位置。考慮documentation。您也可以修改GridSpec Layout