Python matplotlib:如何让 matrixplot 具有可变的列宽

Python matplotlib: how to let matrixplot have variable column widths

我有一个简单的需求,但找不到简单的解决方案。我有一个要绘制的矩阵,但我希望 row/columns 具有给定的宽度。

看起来像块矩阵的东西,您可以在其中告诉块大小。

接受具有相同视觉结果的任何解决方法。

import matplotlib.pyplot as plt
import numpy as np


samplemat = np.random.rand(3,3)
widths = np.array([.7, .2, .1])

# Display matrix
plt.matshow(samplemat)

plt.show()

matshowimshow 使用相同大小的单元格。因此它们不能在这里使用。相反,您可以使用 pcolorpcolormesh。这将需要提供单元格边缘的坐标。
因此,您首先需要根据给定的宽度计算那些。假设您希望它们从 0 开始,您可以将它们相加。

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(43)


samplemat = np.random.rand(3,3)
widths = np.array([.7, .2, .1])
coords = np.cumsum(np.append([0], widths))
X,Y = np.meshgrid(coords,coords)
# Display matrix
plt.pcolormesh(X,Y,samplemat)

plt.show()