相当于matplotlib中matlab的imagesc? [复制]

Posted

技术标签:

【中文标题】相当于matplotlib中matlab的imagesc? [复制]【英文标题】:Equivalent to matlab's imagesc in matplotlib? [duplicate] 【发布时间】:2013-05-15 08:39:02 【问题描述】:

我从 Matlab 背景开始学习 Python、numpy 和 matplotlib。我一直使用的 matlab 中的一个函数是imagesc。在 matplotlib 的某个地方是否有与此完全等价的东西?我知道imshowpcolor,但第一个不允许您像imagesc 那样轻松设置轴的单位,第二个让您设置边界的x 和y 坐标像素,而不是像素的中心,我觉得不直观。

基本上,如果我想用 x 轴和 y 轴标签显示图像,这些标签不是像素数,而是数字,例如距离,以 mm 为单位,在 matplotlib 中最简单的方法是什么?

【问题讨论】:

【参考方案1】:

你想要extent kwarg

ax.imshow(data, extent=[0, 1, 0, 1])

有关更详细的示例,请参阅Imshow: extent and aspect。

【讨论】:

这很有帮助,谢谢,我在 imshow 文档中忽略了那个 kwarg。似乎 arg 的范围设置了图像边缘的坐标,对吧?因此,这无法解决的一项任务是为像素中心分配坐标,如果这是我想做的。 来自extent 文档:“轴的数据限制。默认将基于零的行、列索引分配给像素的 x、y 中心。”默认情况下,它会执行您想要的操作。也就是说,我认为它可能在某些时候在 mpl 版本之间发生了变化。 好吧,我的意思是将我选择的坐标分配给像素中心,而不仅仅是像素编号。 使用extent=[-.5 + x_start, x_end + .5, y_start - .5, y_end + .5] 请注意,@tcaswell 的评论不是一般情况,只有当您的像素相距 1 个单位时才有效。您想使用 0.5dx,其中 dx 是像素的间距。因此,例如,如果您的像素间隔 5 毫米,您会这样做:extent=[-2.5 + x_start, x_end + 2.5, y_start - 2.5, y_end + 2.5]

以上是关于相当于matplotlib中matlab的imagesc? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 ipython 中使用 matplotlib 显示图像

机器学习 Matplotlib库入门

数据分析与展示——Matplotlib库入门

Python——Matplotlib库入门

Matplotlib库(简介)

C++ opencv有没有类似Matlab中图片点乘、点除的函数?