【问题标题】:Create NonUniformImage based on Numpy 2d array with custom cell width and height基于具有自定义单元格宽度和高度的 Numpy 2d 数组创建 NonUniformImage
【发布时间】:2019-05-09 19:51:01
【问题描述】:

我正在尝试使用 2d Numpy 数组的 Matplotlib 制作“热图”,并找到了 NonUniformImage 选项here。下面是一个简单的单一版本。不幸的是,我无法在不更改 y 的情况下更改 x。 pyhton Promppts 的错误是:Axes don't match array shape

可重现的示例

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.image import NonUniformImage
from matplotlib import cm

x = np.arange(6)
y = np.arange(6)
z = x[:, np.newaxis].dot(y[:, np.newaxis].transpose())

fig, ax = plt.subplots()
im = NonUniformImage(ax, interpolation='nearest', extent=(0, len(x)-1, 0, len(y)-1))
im.set_data(x, y, z)
ax.images.append(im)
ax.set_xlim(0, len(x)-1)
ax.set_ylim(0, len(y)-1)

我的目标是基于带有“自定义网格单元”的 Numpy 2d 数组绘制地图。这意味着我可以为 x 和 y 分配不规则系列(例如np.array([0.5,3,8,15,15.4])。我知道分配的 x 和 y 代表单元格的中心,所以我最不想解决的问题是该图是完全可见的(如果可能的话)。

如何制作具有不同约束(不是正方形)的图像,自定义宽度和高度取决于两个列表?

【问题讨论】:

  • 当我运行你的代码时,我得到this image。这不是你想要的吗?还是你得到不同的结果?
  • 不,我得到了相同的结果,但我只能创建相同尺寸的图像(例如 6x6、8x8 或 21x21)。我想制作一个 60 x 29 的图像,并根据列表自定义高度和宽度。我更改了问题以使其更清楚。

标签: python numpy matplotlib


【解决方案1】:

我想你在定义z 时犯了一个错误。可能你追求的是

x = np.arange(6)
y = np.arange(8)
z = x[np.newaxis,:] * y[:, np.newaxis]
print(z.shape)

使得形状为 (8,6)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-04
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 2019-07-02
    • 1970-01-01
    相关资源
    最近更新 更多