我正在尝试使用matplotlib创建一个图像网格。第一行和第一列定义函数的输入,网格的其余部分是输出。
以下是其他人对我希望它看起来如何的参考:reference。
特别要注意的是,第一行和第一列与其他所有行和列之间的分隔线。
我在过去的几个小时里一直在努力使它工作,到目前为止我做得最好的是使用Gridspec将图像分成四组,并使用PIL构建图像。
然而,由于某种原因,我无法理解不同子情节的形状不匹配。
附加一个最小的代码和它的输出。
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import PIL
f = plt.figure(figsize=(20, 20))
resolution = 256
num_images = 6
h = w = num_images
main_grid = gridspec.GridSpec(h, w, hspace=0, wspace=0)
col = f.add_subplot(main_grid[0, 1:])
row = f.add_subplot(main_grid[1:, 0])
mid = f.add_subplot(main_grid[1:, 1:])
corner = f.add_subplot(main_grid[0, 0])
corner_canvas = PIL.Image.new('RGB', (resolution, resolution), 'gray')
mid_canvas = PIL.Image.new('RGB', (resolution * w, resolution * h), 'yellow')
col_canvas = PIL.Image.new('RGB', (resolution * w, resolution), 'blue')
row_canvas = PIL.Image.new('RGB', (resolution, resolution * h), 'red')
corner.imshow(corner_canvas)
col.imshow(col_canvas)
row.imshow(row_canvas)
mid.imshow(mid_canvas)
plt.savefig('fig.png')
如您所见,形状不匹配,这使得网格不对齐。
1条答案
按热度按时间krcsximq1#
我将使用
GridSpec
和GridSpecFromSubplotSpec
的组合来实现这种布局: