matplotlib 如何调整imshow图的比例以保持子图中的y轴不变?

oyxsuwqo  于 2023-10-24  发布在  其他
关注(0)|答案(2)|浏览(114)

我有几个numpy数组,我用imshow绘制。它们都有相同的垂直大小,但不同的水平大小。我想调整方面是非标量和我的水平大小(x轴)成比例。
换一种方式,我有一个numpy数组A,它是100x200,numpy数组B是100x300。我希望在我的子图中,数组B的x轴比数组A长三倍。
imshow中的长宽值只取标量值,当然我的比例不是整数。我试着调整子图的大小,但到目前为止没有成功。
换句话说,我想让imshow中的纵横比值等于我的二维数组shape[1]/shape[0]的比率。

t30tvxxf

t30tvxxf1#

您可以设置plt.subplots()调用的width_ratios arg:

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()

a1o7rhls

a1o7rhls2#

这就是你要找的吗

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()

相关问题