matplotlib.imshow() 实际返回啥对象?如何使用这个对象?
Posted
技术标签:
【中文标题】matplotlib.imshow() 实际返回啥对象?如何使用这个对象?【英文标题】:What object does matplotlib.imshow() actually return? How to use this object?matplotlib.imshow() 实际返回什么对象?如何使用这个对象? 【发布时间】:2017-06-18 23:32:29 【问题描述】:我当时正在尝试运行以下代码:
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 中的对象。目前我无法看到它是什么,也无法将其保存到图像中。
附:我知道如何显示图像以及如何保存图像。我只是想知道这个对象如何有用以及它实际上是什么(例如,它是一个图像对象吗?一个数组?还是其他一些奇怪类型的对象?)
【问题讨论】:
【参考方案1】:如果您希望使用绘图对象的对象特性,请先启动图形和轴对象。
figure, axes = plt.subplots()
# or:
figure = plt.figure()
axes = figure.add_subplot(111)
然后您可以使用坐标区对象进行绘图。坐标区对象可让您操纵绘图中可以看到的大部分内容。
axes.imshow(...)
或者保存数字
figure.savefig('file.png')
【讨论】:
太棒了。对 111 子图 id 有什么意义??【参考方案2】:正如您已经发现的,plt.imshow()
的返回类型是matplotlib.image.AxesImage
。调用img = plt.imshow()
时得到的对象img
是该类的一个实例。
一般来说,你不必关心这个对象,因为它绑定到一个轴上,你想做的大部分事情,比如显示一个图形或保存它,不需要对 AxesImage
本身进行任何控制.
与任何其他对象一样,它可能有助于访问其某些属性以供以后使用。例如img.cmap
返回图片的颜色图,img.get_extent()
提供图片范围。
我想到了两个应用程序,其中AxesImage
经常使用:
-
更新图像数据:如果您想更改图像数据而不生成新图,可以使用
img.set_data(data)
这在使用 user interactions 或动画时可能很有用。
创建颜色条:在包含多个图像的绘图中创建颜色条时,应该为哪个图像创建此颜色条可能并不明显,因此
plt.colorbar(img, cax=cax)
将图像img
的颜色条设置为坐标轴cax
。
如需更多详细信息,您可能需要完善您的问题,更具体地询问某些属性、应用、潜在用途等。
【讨论】:
以上是关于matplotlib.imshow() 实际返回啥对象?如何使用这个对象?的主要内容,如果未能解决你的问题,请参考以下文章