imshow non unifrom矩阵箱尺寸

时间:2016-01-28 13:01:54

标签: matplotlib imshow

我正在尝试使用imshow创建一个图像,但我的矩阵中的二进制文件并不相同。 例如以下矩阵

C = [[1,2,2],[2,3,2],[3,2,3]]

适用于X = [1,4,8]Y = [2,4,9] 我知道我可以做xticksyticks,但我希望轴线相等。这意味着我需要构建imshow的方块具有不同的大小。 有可能吗?

1 个答案:

答案 0 :(得分:4)

这似乎是pcolormesh的工作。 来自When to use imshow over pcolormesh

  

从根本上说,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]

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

c=np.array([[1,2,2],[2,3,2],[3,2,3]])
plt.pcolormesh(x,-y,c)

这给了我们:

pcolor to replace imshow