我试图创建一个由2x2网格组成的图形,其中每个象限中有2个垂直堆叠的子图(即2 × 1网格)。我似乎不知道如何实现这一点,虽然。
我最接近的方法是使用gridspec和一些丑陋的代码(见下文),但是因为gridspec.update(hspace=X)
改变了所有子图的间距,所以我仍然没有达到我想要的效果。
理想情况下,我想要的是,以下面的图片为例,减少每个象限内子图之间的间距,同时增加顶部和底部象限之间的垂直间距(即1-3和2-4之间)。
有没有办法做到这一点(使用或不使用gridspec)?我最初设想的是生成每个子子情节网格(即每个2x 1网格),并将它们插入到更大的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])
4条答案
按热度按时间8qgya5xd1#
您可以使用SubplotSpec嵌套GridSpec。外部栅格为2 x 2,内部栅格为2 x 1。下面的代码应该给予你基本的概念。
qfe3c7zg2#
现在可以使用
figure.subfigure
嵌套子图:https://matplotlib.org/stable/gallery/subplots_axes_and_figures/subfigures.html您可能还会发现
subplot_mosaic
很有用,因为它支持嵌套:https://matplotlib.org/stable/tutorials/provisional/mosaic.html虽然嵌套总是有点麻烦,但可以说这两种方法都使这个过程更容易,更灵活。
从上面的例子中得出:
p4tfgftt3#
由于我不得不依赖Suever的答案,但不得不根据我的需要进行修改,我想我可能会有所贡献,以防有人发现它有帮助:
yacmzcpb4#
将子图添加到子图的简单方法是将图划分为子图,然后将子图添加到子图。
你可以参考这个Matplotlib官方文档here
希望这对你有帮助。