matplotlib.imshow()实际上返回什么对象?如何使用这个物件?

Jib*_*Dan 6 python plot matplotlib imshow

我当时正在尝试运行以下代码:

imgplot = plt.imshow(dose_data, extent = [0,4,0,6], aspect = 'auto')
Run Code Online (Sandbox Code Playgroud)

在控制台上,我输入了以下输入:

In[38]:imgplot
Out[38]: <matplotlib.image.AxesImage at 0x123ebd198>
Run Code Online (Sandbox Code Playgroud)

输出使我想知道对象是什么。在查阅了文档之后,它看起来像一个AxesImage对象(AxesImage文档)。但是我想知道如何使用存储在imgplot中的对象。目前,我既看不到它是什么,也无法保存到图像中。

PS我知道如何显示图像以及如何保存图像。我只是想知道这个对象如何有用以及它实际上是什么(例如,它是图像对象还是数组?还是其他一些奇怪的对象类型?)

Imp*_*est 6

如您所知,返回类型plt.imshow()matplotlib.image.AxesImageimg调用时获得的对象img = plt.imshow()是该类的实例。

通常,您不必关心此对象,因为它已绑定到轴,并且您想要执行的大多数操作(例如显示图形或保存它)不需要对该对象AxesImage本身进行任何控制。

与其他任何对象一样,它可能有助于访问其某些属性以供以后使用。例如,img.cmap返回图像的颜色图,img.get_extent()为您提供图像范围。

我想到了两个AxesImage经常使用的应用程序:

  1. 更新图像数据:如果要在不生成新图的情况下更改图像数据,则可以使用。
    img.set_data(data)
    在处理用户交互或动画时,这可能很有用。
  2. 创建颜色条:在包含多个图像的图中创建颜色条时,应该为哪个图像创建颜色条并不明显,因此 plt.colorbar(img, cax=cax)将图像的颜色条设置img为轴cax

有关更多详细信息,您可能需要优化您的问题,更具体地询问某些属性,应用程序,潜在用途等。


ber*_*nie 5

如果您希望使用绘图对象的对象性质,请首先启动图形和轴对象。

figure, axes = plt.subplots()
# or:
figure = plt.figure()
axes = figure.add_subplot(111)
Run Code Online (Sandbox Code Playgroud)

然后您可以使用坐标区对象进行绘图。轴对象可让您操纵绘图中可以看到的大多数内容。

axes.imshow(...)
Run Code Online (Sandbox Code Playgroud)

或者保存数字

figure.savefig('file.png')
Run Code Online (Sandbox Code Playgroud)