我想知道:我有一个1 row, 4 column图。但是,前三个子图共享相同的yaxes范围(即,它们具有相同的范围并表示相同的事物)。第四则没有。

我想做的是更改前三个图的wspace,使它们接触(并分组),然后第四个图留出一点空间,且yaxis标签不重叠,等等。

我可以简单地通过编辑一些photoshop来做到这一点...但是我想要一个编码版本。我该怎么办?

最佳答案

您最可能想要的是GridSpec。它使您可以自由调整子图组的wspace

import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np

fig = plt.figure()
# create a 1-row 3-column container as the left container
gs_left = gridspec.GridSpec(1, 3)

# create a 1-row 1-column grid as the right container
gs_right = gridspec.GridSpec(1, 1)

# add plots to the nested structure
ax1 = fig.add_subplot(gs_left[0,0])
ax2 = fig.add_subplot(gs_left[0,1])
ax3 = fig.add_subplot(gs_left[0,2])

# create a
ax4 = fig.add_subplot(gs_right[0,0])

# now the plots are on top of each other, we'll have to adjust their edges so that they won't overlap
gs_left.update(right=0.65)
gs_right.update(left=0.7)

# also, we want to get rid of the horizontal spacing in the left gridspec
gs_left.update(wspace=0)

现在我们得到:

当然,您将需要对标签等进行操作,但是现在您可以调整间距了。
GridSpec可用于生成一些非常复杂的布局。看一下:

http://matplotlib.org/users/gridspec.html

关于python - 控制matplotlib子图的wspace,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24738578/

10-08 22:40