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()