xxcjw

plt.imshow 和 plt.show 的区别,为什么要同时用?

plt.imshowplt.show 是 Matplotlib 库中用于显示图像的两个不同函数。虽然它们常常一起使用,但它们在功能和用途上有明显的区别。

plt.imshow:

  • 功能: plt.imshow 用于在绘图区域显示一幅图像。它会创建一个图像对象,并将其添加到当前的绘图区域(即当前的 Axes 对象)中。
  • 使用场景: 当你有一个图像数据(如一个 NumPy 数组)并希望在绘图区域显示它时,可以使用 plt.imshow。例如,显示一个二维数组作为图像。
import matplotlib.pyplot as plt
import numpy as np

# 创建一个随机的二维数组
data = np.random.rand(10, 10)

# 使用 plt.imshow 显示数组
plt.imshow(data)

plt.show:

  • 功能: plt.show 用于显示所有已创建的图形。它会打开一个图形窗口,并渲染当前所有的绘图对象。这是 Matplotlib 用于将绘图对象实际显示在屏幕上的方法。
  • 使用场景: 当你完成了所有绘图命令,并希望将图形显示在屏幕上时,可以使用 plt.show。在没有 plt.show 的情况下,绘图命令只是创建了图形对象,并不会真正显示。
# 显示图像
plt.show()

为什么要同时用?

结合使用的典型过程:

  1. 先使用 plt.imshow 来创建并配置图像。
  2. 然后使用 plt.show 来实际显示图像。

原因:

  • plt.imshow 创建图像对象并配置其属性,但不会显示图像。
  • plt.show 实际上显示所有已经配置好的图形,包括由 plt.imshow 创建的图像。

举个完整的例子:

import matplotlib.pyplot as plt
import numpy as np

# 创建一个随机的二维数组
data = np.random.rand(10, 10)

# 使用 plt.imshow 显示数组
plt.imshow(data)

# 显示图像
plt.show()

在这个例子中,plt.imshow 创建了一个图像对象,plt.show 则将这个图像对象显示在屏幕上。这样,你就可以看到实际的图像输出。