如何缩放包括具有不同纵横比的图像的子图

问题描述 投票:0回答:1

我的问题的最小版本如下图所示。如何缩放右侧面板使其高度与左侧面板相同?

import matplotlib.pyplot as plt
import numpy as np

rnd = np.random.default_rng(123)

dx1, dy1 = 3, 2
dx2, dy2 = 3, 4

im1 = rnd.random((dy1, dx1))
im2 = rnd.random((dy2, dx2))

fig, (ax1, ax2) = plt.subplots(1, 2)

ax1.imshow(im1)
ax2.imshow(im2)

enter image description here

我可以手动定位这两个图,但我需要一个强大的程序来生成多个相似的图。我查看了

ImageGrid
GridSpec
但似乎都不支持我所需要的。我希望
subplots
自动执行我需要的操作,但事实并非如此。这是设计使然吗?

python matplotlib subplot
1个回答
0
投票

解决方案包括使用

plt.subplots
width_ratios

关键字
import matplotlib.pyplot as plt
import numpy as np

rnd = np.random.default_rng(123)

dx1, dy1 = 3, 2
dx2, dy2 = 3, 4

im1 = rnd.random((dy1, dx1))
im2 = rnd.random((dy2, dx2))

fig, (ax1, ax2) = plt.subplots(1, 2, width_ratios=[dx1/dy1, dx2/dy2])

ax1.imshow(im1)
ax2.imshow(im2)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.