【发布时间】:2016-04-28 07:08:43
【问题描述】:
我正在尝试创建一个由 2x2 网格组成的图形,其中每个象限中有 2 个垂直堆叠的子图(即 2x1 网格)。不过,我似乎无法弄清楚如何实现这一目标。
我得到的最接近的是使用 gridspec 和一些丑陋的代码(见下文),但因为 gridspec.update(hspace=X) 改变了所有子图的间距,我仍然不是我想要的。
理想情况下,我想要的是,以下图为例,减小每个象限内子图之间的间距,同时增加顶部和底部象限之间的垂直间距(即在 1-3 和 2-4 之间) .
有没有办法做到这一点(使用或不使用 gridspec)?我最初设想的是生成每个子图网格(即每个 2x1 网格)并将它们插入到更大的 2x2 子图网格中,但我还没有弄清楚如何将子图添加到子图,如果甚至离开。
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
plt.figure(figsize=(10, 8))
gs = gridspec.GridSpec(4,2)
gs.update(hspace=0.4)
for i in range(2):
for j in range(4):
ax = plt.subplot(gs[j,i])
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
plt.tick_params(which='both', top='off', right='off')
if j % 2 == 0:
ax.set_title(str(i+j+1))
ax.plot([1,2,3], [1,2,3])
ax.spines['bottom'].set_visible(False)
ax.get_xaxis().set_visible(False)
else:
ax.plot([1,2,3], [3,2,1])
【问题讨论】:
标签: python matplotlib figure subplot