gpt4 book ai didi

python - Matplotlib:在子图网格中重新定位子图

转载 作者:太空狗 更新时间:2023-10-29 20:38:58 27 4
gpt4 key购买 nike

我正在尝试制作一个包含 7 个子图的图。目前我正在绘制两列,一列有四个地 block ,另一列有三个,即像这样:enter image description here

我正在按照以下方式构建此图:

    #! /usr/bin/env python
import numpy as plotting
import matplotlib
from pylab import *
x = np.random.rand(20)
y = np.random.rand(20)
fig = figure(figsize=(6.5,12))
subplots_adjust(wspace=0.2,hspace=0.2)
iplot = 420
for i in range(7):
iplot += 1
ax = fig.add_subplot(iplot)
ax.plot(x,y,'ko')
ax.set_xlabel("x")
ax.set_ylabel("y")
savefig("subplots_example.png",bbox_inches='tight')

但是,为了发布,我认为这看起来有点难看——我想做的是将最后一个子图移到两列之间的中心。那么,调整最后一个子图的位置以使其居中的最佳方法是什么? IE。将前 6 个子图放在 3X2 网格中,最后一个子图在两列之间居中。如果可能的话,我希望能够保留 for 循环,这样我就可以简单地使用:

    if i == 6:
# do something to reposition/centre this plot

谢谢,

亚历克斯

最佳答案

使用网格规范 (doc)使用 4x4 网格,并让每个绘图跨越 2 列:

import matplotlib.gridspec as gridspec
gs = gridspec.GridSpec(4, 4)
ax1 = plt.subplot(gs[0, 0:2])
ax2 = plt.subplot(gs[0,2:])
ax3 = plt.subplot(gs[1,0:2])
ax4 = plt.subplot(gs[1,2:])
ax5 = plt.subplot(gs[2,0:2])
ax6 = plt.subplot(gs[2,2:])
ax7 = plt.subplot(gs[3,1:3])
fig = gcf()
gs.tight_layout(fig)
ax_lst = [ax1,ax2,ax3,ax4,ax5,ax6,ax7]

关于python - Matplotlib:在子图网格中重新定位子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12372380/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com