python - 从 Matplotlib 使用 ImageGrid 时如何调整子图的大小

标签 python matplotlib subfigure

使用 Python 和 Matplotlib,我试图生成一个由两个子图组成的图,每个子图都包含一组具有公共(public)颜色条的图。我几乎一切正常。我唯一想不通的是如何使顶部和底部的子图具有相同的宽度——即 4x2 网格 + 颜色条的宽度应与 2x1 网格 + 颜色条的宽度相同。故意让左下方的图像与其他图的形状不同。

这是我的代码:

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import AxesGrid, ImageGrid
from numpy.random import rand

fig = plt.figure(1)

grid1 = ImageGrid(fig, 211,
                nrows_ncols = (2, 4),
                axes_pad = 0.07,
                share_all=True,
                label_mode = "L",
                cbar_location = "right",
                cbar_mode="single",
                cbar_size="7%",
                cbar_pad="7%",
                aspect = True
                )

for n in range(8):
    im = grid1[n].imshow(rand(10,10),interpolation="nearest")

grid1.axes_all

cb1 = grid1.cbar_axes[0].colorbar(im)
cb1.set_label_text('subfig 1')

grid2 = ImageGrid(fig, 212,
                nrows_ncols = (1, 2),
                axes_pad = 0.1,
                label_mode = "L",
                share_all = False,
                cbar_location="right",
                cbar_mode="single",
                cbar_size="7%",
                cbar_pad="7%",
                aspect = True
                )

im = grid2[0].imshow(rand(10,15),interpolation="nearest")
im = grid2[1].imshow(rand(10,10),interpolation="nearest")

cb2 = grid2.cbar_axes[0].colorbar(im)
cb2.set_label_text('subfig 2')

plt.figtext(0.05,0.85,'(a)',size=20)
plt.figtext(0.05,0.45,'(b)',size=20)

plt.show()

结果如下:

result

实际的图是图像,所以我为每个图保持正确的宽高比很重要。

我认为缺少的步骤是访问每个子图(不是子图)的轴,但我不知道该怎么做。

我通读了文档并查看了 examples在 matplotlib.org。有显示如何调整单个 grid[n] 大小的示例,但我找不到任何显示如何调整 grid 大小的示例。有没有人有任何指示?

最佳答案

对我来说,指定图形大小有帮助:

fig = plt.figure(1, (6., 6.))

我还必须更改 figtext 位置:

plt.figtext(0.0,0.85,'(a)',size=20)
plt.figtext(0.0,0.45,'(b)',size=20)

结果:

Seems like it maintained the aspect ratio

关于python - 从 Matplotlib 使用 ImageGrid 时如何调整子图的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22912598/

相关文章:

python - 函数调用中有多个 kwargs?

python - 冲突的 OpenCV 和 Matplotlib

latex 翻转人物

python - 如何在 Python 中为图形使用多种背景颜色?

python - re.split ("", string) 和 re.split ("\s+", string) 之间的区别?

python - 如何减少 list-dict 键引用的处理时间

python - django 无法连接到 RDS postgresql

python - 如何用Python实时绘制每秒15000点连续读取的数据?

python - gaussian_kde 具有偏态分布吗?

latex - 在小页面/子图中缩放时控制 LaTeX 中图形的字体大小?