Matplotlib.pyplot.imshow 中如何使用 ‘extent’

Matplotlib.pyplot.imshow 中如何使用 ‘extent’

阅读更多:Matplotlib 教程

介绍

matplotlib.pyplot.imshow 是一个用于绘制图像的函数,它可以将数据数组显示为图像,支持灰度图和彩色图,以及不同维度数据的展示。其中有一个非常有用的参数 extent,它用于指定图像在坐标系中的显示位置和大小。

extent 是一个浮点数列表或元组,其格式为 (left, right, bottom, top),表示图像在 x、y 轴上的显示范围。如果只提供了一个值,则会认为是 (0, value, 0, value)

使用例子

以下是一个简单的例子,展示了如何使用 extent 参数。

import matplotlib.pyplot as plt
import numpy as np

# 生成示例数据
data = np.arange(16).reshape((4, 4))
x = np.arange(data.shape[1] + 1)
y = np.arange(data.shape[0] + 1)

# 绘制图像
fig, ax = plt.subplots()
im = ax.imshow(data, extent=[x[0], x[-1], y[0], y[-1]], cmap="YlGn")
ax.set_xlim(x[0], x[-1])
ax.set_ylim(y[0], y[-1])
plt.colorbar(im)
plt.show()
Python

在这个例子中,我们生成了一个 4×44 \times 4 的数据矩阵,然后使用 imshow 函数将其绘制成图像。通过指定 extent 参数为 [x[0], x[-1], y[0], y[-1]] 来确保图像在 x、y 轴上显示的范围正确。最后使用 colorbar 函数添加颜色条。

下面我们来更详细地了解 extent 参数的使用。

不指定 extent

extent 没有被指定时,imshow 默认会显示整个数据矩阵,左上角坐标为 (0,0)(0, 0),右下角坐标为 (N,M)(N, M),其中 NNMM 分别是数据矩阵的行数和列数。

fig, ax = plt.subplots()
im = ax.imshow(data, cmap="YlGn") # 未指定 extent

ax.set_xticks(np.arange(data.shape[1]))
ax.set_yticks(np.arange(data.shape[0]))
ax.set_xticklabels(["col{}".format(i) for i in range(data.shape[1])])
ax.set_yticklabels(["row{}".format(i) for i in range(data.shape[0])])

plt.colorbar(im)
plt.show()
Python

指定 extent 参数

当我们指定 extent 参数时,imshow 会根据指定的范围来显示数据矩阵。假设我们的数据矩阵是一个温度图像,其中每个像素点表示一个温度值。那么我们可以按如下方式绘制图像:

# 温度数据
data = np.array([[20, 25, 30], [30, 35, 40], [40, 45, 50]])

# 横纵坐标范围
x = np.array([1, 2, 3])
y = np.array([1, 2, 3])

# 绘制图像
fig, ax = plt.subplots()
im = ax.imshow(data, extent=[x[0]-0.5, x[-1]+0.5, y[0]-0.5, y[-1]+0.5], cmap="cool")

# 设置坐标轴标签
ax.set_xticks(range(data.shape[1]))
ax.set_yticks(range(data.shape[0]))
ax.set_xticklabels(["X1", "X2", "X3"])
ax.set_yticklabels(["Y1", "Y2", "Y3"])

# 添加颜色条
plt.colorbar(im)
plt.show()
Python

在这个例子中,我们生成了一个 3×33 \times 3 的温度数据矩阵,然后指定了横纵坐标范围。我们将 extent 参数设置为 [x[0]-0.5, x[-1]+0.5, y[0]-0.5, y[-1]+0.5],这将确保图像正好填满整个坐标轴区域。

需要注意的是,由于 imshow 函数默认从左下角开始绘制图像,所以当 extent 参数被指定时,左下角的坐标就会改变,因此需要用 x[0]-0.5y[0]-0.5 调整坐标。

总结

在本篇文章中,我们介绍了 matplotlib.pyplot.imshow 函数中的 extent 参数,并通过示例代码演示了如何使用该参数来控制图像在坐标系中的位置和大小。希望读者能够在实际应用中灵活使用 extent 参数,绘制出更加合理、美观的图像。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程