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

时间:2017-02-02 01:53:41

标签: python matplotlib plot imshow

我此刻正试图运行以下代码:

imgplot = plt.imshow(dose_data, extent = [0,4,0,6], aspect = 'auto')

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

In[38]:imgplot
Out[38]: <matplotlib.image.AxesImage at 0x123ebd198>

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

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

2 个答案:

答案 0 :(得分:3)

正如您已经发现的那样,plt.imshow()的返回类型是matplotlib.image.AxesImage。调用img时得到的对象img = plt.imshow()是该类的实例。

一般情况下,你不必关心这个对象,因为它绑定到一个轴上,你想要做的大部分工作,如显示图形或保存它,不需要任何控制AxesImage本身。

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

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

  1. 更新图像数据:如果要在不生成新图的情况下更改图像数据,可以使用
    img.set_data(data)
    在使用user interactions或动画时,这可能很有用。
  2. 创建颜色条:在包含多个图像的图中创建颜色条时,应该创建此颜色条的图像可能并不明显,因此 plt.colorbar(img, cax=cax)将图片img的颜色条设置为轴cax
  3. 有关详细信息,您可能需要优化您的问题,更具体地询问某些属性,应用程序,潜在用途等。

答案 1 :(得分:1)

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

figure, axes = plt.subplots()
# or:
figure = plt.figure()
axes = figure.add_subplot(111)

然后您可以使用axes对象进行绘图。使用axes对象可以操作绘图中可以看到的大部分内容。

axes.imshow(...)

或保存数字

figure.savefig('file.png')