Python matplotlib: как позволить matrixplot иметь переменную ширину столбцов - PullRequest
0 голосов
/ 23 мая 2018

У меня есть простая потребность, но я не могу найти ее простое решение.У меня есть матрица для построения графика, но я бы хотел, чтобы строки / столбцы имели ширину.

Что-то похожее на заблокированную матрицу, где вы указываете размеры блока.

Допускается любое решение с таким же визуальным результатом.

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

Usual outcome

Desired outcome (fake drawing)

1 Ответ

0 голосов
/ 24 мая 2018

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

enter image description here

...