imshow non unifrom 矩阵 bin 大小

Ore*_*ren 4 matplotlib imshow

我正在尝试使用 imshow 创建一个图像,但我的矩阵中的 bin 不相等。例如下面的矩阵

C = [[1,2,2],[2,3,2],[3,2,3]]
Run Code Online (Sandbox Code Playgroud)

是为了X = [1,4,8]和为了Y = [2,4,9] 我知道我可以做xticksand yticks,但我希望轴相等..这意味着我需要构建 imshow 的正方形具有不同的大小。是否可以?

Mel*_*Mel 5

这似乎是pcolormesh. 从何时在 pcolormesh 上使用 imshow

从根本上说,imshow 假设数组中的所有数据元素都以相同的大小呈现,而 pcolormesh/pcolor 将数据数组的元素与矩形元素相关联,矩形元素的大小可能会在矩形网格上有所不同。

pcolormesh 将矩阵绘制为单元格,并将单元格的 x 和 y 坐标作为参数,这允许您以不同的大小绘制每个单元格。

我假设您的示例数据的 X 和 Y 是单元格的大小。所以我将它们转换为坐标:

xSize=[1,4,9]
ySize=[2,4,8]
x=np.append(0,np.cumsum(xSize)) # gives [ 0  1  5 13]
y=np.append(0,np.cumsum(ySize)) # gives [ 0  2  6 15]
Run Code Online (Sandbox Code Playgroud)

然后,如果您想要与 类似的行为imshow,则需要还原 y 轴。

c=np.array([[1,2,2],[2,3,2],[3,2,3]])
plt.pcolormesh(x,-y,c)
Run Code Online (Sandbox Code Playgroud)

这给了我们:

pcolor 替换 imshow