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

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

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

【问题讨论】:

    标签: python image matlab 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]
    猜你喜欢
    • 1970-01-01
    • 2011-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多