matplotlib 如何获取subplot和GridSpec来定位和调整子图的大小?

93ze6v8z  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(133)

我试图创建一个2x 10的子情节图。我希望他们都是正方形与他们之间的薄白色空间,但他们出来的矩形(长在高度比宽度)。我把图像放在网格的每个单元格都是正方形的,但是单元格本身不是正方形的,所以多余的空间就变成白色,这在顶行和底行之间产生了一个巨大的间隙。这是显示矩形的代码:

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
from PIL import Image

fig = plt.figure()
gs1 = GridSpec(2, 10)
for a in range(10):
    ax = plt.subplot(gs1[0, a])
    ax2 = plt.subplot(gs1[1, a])
plt.show()

想象一下,但几乎没有间隙之间的细胞和每个细胞是正方形,而不是矩形。提前感谢任何帮助!

iezvtpos

iezvtpos1#

你可以使用plt.tight_layout()来清理你的子图。另外,使用plt.rcParams来设置图的大小:

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
from PIL import Image
plt.rcParams["figure.figsize"] = (20,10)
fig = plt.figure()
gs1 = GridSpec(2, 10)
for a in range(10):
    ax = plt.subplot(gs1[0, a])
    ax2 = plt.subplot(gs1[1, a])
plt.tight_layout()
plt.show()

输出

要获得更多控制,您可以使用fig,ax并关闭所有标签和刻度。然后您可以删除子图之间的白色。

import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
from PIL import Image
plt.rcParams["figure.figsize"] = (20,4)
fig, ax = plt.subplots(2,10)
gs1 = GridSpec(2, 10)
for x in range(2):
    for y in range(10):
        ax[x,y].plot()
        ax[x,y].tick_params(axis  = 'both', bottom= False, left  = False, 
                            labelbottom = False, labelleft   = False) 
ax[1,0].tick_params(axis  = 'both', bottom= True, left  = True, 
                    labelbottom = True, labelleft   = True) 

plt.subplots_adjust(wspace=0.05, hspace=0.05)
plt.show()

输出:

相关问题