微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将二维数组数据绘制成以特定像素为中心的图形

如何解决将二维数组数据绘制成以特定像素为中心的图形

我有一个带有轴对象的图形。 我想使用 ax.scatter 将一些东西散布到图中,这没问题。最重要的是,我想将二维数组数据绘制到同一个图形中(例如使用 ax.imshow...):

import numpy as np
from matplotlib import pyplot as plt

vidRes = np.array([[-700,700],[-500,500]])
dim = np.array([vidRes[0,1] - vidRes[0,0],vidRes[1,1] - vidRes[1,0]])

with plt.style.context('dark_background'):
    fg = plt.figure()
    fg.set_size_inches((10,10*dim[1]/dim[0]))
    ax = fg.add_subplot(111)
    ax.set_aspect('equal')
    ax.get_xaxis().set_visible(False)
    ax.get_yaxis().set_visible(False)
    ax.set_xlim(vidRes[0,vidRes[0,1])
    ax.set_ylim(vidRes[1,1])

random = np.random.random(size = (401,401,),)
ax.imshow(random,cmap = 'hot')

This is the output

二维数组有 401x401 个条目。是否有一种直接的方法来移动 imshow 对象,使其以我的 1400x1000 像素图形中的给定像素为中心?我是瞎子看不到吗?

图像被绘制到图中,但它始终与左下角或左上角(取决于 ax.imshow 的原点)对齐到我的绘图中心的 (0,0) 坐标,我可以'不要把它移到别处。

解决方法

您可以使用 extent 参数。来自文档:

范围:标量(左、右、下、上),可选,默认值:无 数据坐标中左下角和 右上角。如果 None,图像被定位为 像素中心落在从零开始的(行、列)索引上。

将您的 imshow 调用更改为以下行:

ax.imshow(random,cmap = 'hot',extent=[-200.5,200.5,-200.5,200.5])

产量:

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。