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()
matshow
或 imshow
使用相同大小的单元格。因此它们不能在这里使用。相反,您可以使用 pcolor
或 pcolormesh
。这将需要提供单元格边缘的坐标。
因此,您首先需要根据给定的宽度计算那些。假设您希望它们从 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()
我有一个简单的需求,但找不到简单的解决方案。我有一个要绘制的矩阵,但我希望 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()
matshow
或 imshow
使用相同大小的单元格。因此它们不能在这里使用。相反,您可以使用 pcolor
或 pcolormesh
。这将需要提供单元格边缘的坐标。
因此,您首先需要根据给定的宽度计算那些。假设您希望它们从 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()