如何调整imshow图的比例以保持子图中的y轴恒定?

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

我有几个用 imshow 绘制的 numpy 数组。它们都具有相同的垂直尺寸,但水平尺寸不同。我想将方面调整为非标量并与我的水平尺寸(x 轴)成比例。 为了以不同的方式表述,我有 numpy 数组 A,它是 100x200,numpy 数组 B 是 100x300。我希望在我的子图中,数组 B 的 x 轴比数组 A 长三倍。

imshow中的aspect值只取标量值,当然我的比例不是整数。我尝试过调整子图大小,但到目前为止没有成功。 换句话说,我希望 imshow 中的方面值等于我的二维数组 shape[1]/shape[0] 的比率。对于非标量。

python matplotlib imshow
2个回答
0
投票

您可以设置

width_ratios
 调用的 
plt.subplots()
参数:

import numpy as np
import matplotlib.pyplot as plt

arr1 = np.random.rand(100, 200)
arr2 = np.random.rand(100, 300)

fig, (ax1, ax2) = plt.subplots(ncols=2, width_ratios=[arr1.shape[1], arr2.shape[1]])

ax1.imshow(arr1, aspect="equal")
ax2.imshow(arr2, aspect="equal")

plt.show()


0
投票

这是您要找的吗?

import numpy as np
import matplotlib.pyplot as plt

arr1 = np.random.rand(100, 200)
arr2 = np.random.rand(100, 300)

fig, axes = plt.subplots(ncols=1, nrows=2)

for ax in axes:
    ax.set_anchor('W')

axes[0].imshow(arr1, aspect="equal")
axes[1].imshow(arr2, aspect="equal")

plt.show()

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