Изменение размера тепловой карты imshow до заданного размера изображения в matplotlib - PullRequest
0 голосов
/ 26 октября 2018

Я использую matplotlib для построения графиков, и у меня есть следующая матрица, Mat, которую я хотел бы построить в тепловой карте.

Mat.shape

, что дает (20,20).

Я использую следующий код, чтобы отобразить его в тепловой карте, следуя this .

plt.imshow(Mat, cmap='Reds', interpolation='nearest')    
plt.show()

Но мне нужно изменить размер этой тепловой карты до размера 1600 x 1200 (x, y), поскольку я хочу, чтобы она перекрывалась с изображением img. Код выглядит следующим образом.

plt.imshow(img, alpha=.5) # for image
plt.xlim(0, 1600)
plt.ylim(1200, 0)
plt.axis('off')

plt.imshow(Mat, cmap='Reds', interpolation='nearest', alpha=.5)   # for heatmap to overlap
plt.show()

Почему-то не хотелось бы менять размер img.


Моя попытка

Я пытался изменить размер на уровне plt.imshow(Mat), что мне показалось трудным. Единственный вариант, который я вижу в настоящее время, - изменить размер матрицы Mat на 1600 x 1200 с избыточностью. Кто-нибудь, чтобы дать мне какое-нибудь эффективное решение?

1 Ответ

0 голосов
/ 26 октября 2018

Используйте параметр extent=, равный imshow, чтобы масштабировать матрицу до масштаба изображения ( дополнительная информация также здесь ).

plt.figure()
img = plt.imread('stinkbug.png')
plt.imshow(img, alpha=1) # for image
#plt.axis('off')

xmin, xmax = plt.xlim()
ymin, ymax = plt.ylim()

Mat = np.random.normal(size=(20,20))
plt.imshow(Mat, cmap='Reds', interpolation='nearest', alpha=.5, extent=(xmin,xmax,ymin,ymax))   # for heatmap to overlap
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...