2015-02-09 116 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