我正在尝试使用imshow创建一个图像,但我的矩阵中的二进制文件并不相同。 例如以下矩阵
C = [[1,2,2],[2,3,2],[3,2,3]]
适用于X = [1,4,8]
和Y = [2,4,9]
我知道我可以做xticks
和yticks
,但我希望轴线相等。这意味着我需要构建imshow的方块具有不同的大小。
有可能吗?
答案 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)
这给了我们: