📜  如何在 Matplotlib 中更改 imshow 纵横比?(1)

📅  最后修改于: 2023-12-03 14:52:26.729000             🧑  作者: Mango

如何在 Matplotlib 中更改 imshow 纵横比?

在 Matplotlib 中,我们可以使用 imshow() 函数来展示图片。有时候,我们可能需要更改图片的纵横比以使其更适合我们展示的场景。在本教程中,我们将介绍如何在 Matplotlib 中更改 imshow 的纵横比。

1. 使用 aspect 参数

在 Matplotlib 中,imshow() 函数有一个名为 aspect 的参数,该参数可以用来设置图片的纵横比。默认情况下,aspect 的值为 auto,即自动计算图片的纵横比。如果我们想手动设置纵横比,可以将 aspect 的值设置为纵横比(宽度除以高度)的比例。

import matplotlib.pyplot as plt
import numpy as np

# 创建一个 2x2 的图像数组
img_array = np.random.rand(20, 20)

# 使用 aspect 参数更改纵横比
plt.subplot(121)
plt.imshow(img_array, aspect=0.5)
plt.title('Aspect ratio = 0.5')

plt.subplot(122)
plt.imshow(img_array, aspect=2.0)
plt.title('Aspect ratio = 2.0')

plt.show()

输出:

aspect_ratio

在上面的例子中,我们创建了一个随机的 20x20 的图像数组,并使用 plt.imshow() 函数展示了该图像。我们在左侧的图像中将 aspect 参数设置为 0.5,结果呈现出一个更为宽大的图像;在右侧的图像中,我们将 aspect 设置为 2.0,结果呈现出一个更为高大的图像。

2. 使用 extent 参数

除了使用 aspect 参数外,我们还可以使用 extent 参数来设置图像的大小和位置。extent 参数接受一个四元组 (left, right, bottom, top),其中 leftright 表示图像在 X 轴上的最小值和最大值,bottomtop 表示图像在 Y 轴上的最小值和最大值。

当使用 extent 参数时,我们可以将 aspect 设置为 auto,这将会让 Matplotlib 根据 extent 的值自动计算纵横比。

import matplotlib.pyplot as plt
import numpy as np

# 创建一个 2x2 的图像数组
img_array = np.random.rand(20, 20)

# 使用 extent 参数更改图像大小和位置,不设置 aspect 参数
plt.subplot(121)
plt.imshow(img_array, extent=[0, 10, 0, 20])
plt.title('Extent = [0, 10, 0, 20]')

plt.subplot(122)
plt.imshow(img_array, extent=[0, 10, 0, 5])
plt.title('Extent = [0, 10, 0, 5]')

plt.show()

输出:

extent

在上面的例子中,我们使用 extent 参数来设置图像的大小和位置。在左侧的图像中,我们设置 extent[0, 10, 0, 20],这使得图像宽度为 10,高度为 20。在右侧的图像中,我们设置 extent[0, 10, 0, 5],这使得图像宽度为 10,高度为 5。

结论

在本教程中,我们介绍了如何在 Matplotlib 中更改 imshow 的纵横比。我们可以使用 aspect 参数手动设置纵横比,也可以使用 extent 参数来设置图像的大小和位置。