Изменение размера тепловой карты imshow до заданного размера изображения в matplotlib

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

Mat.shape

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

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

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 с избыточностью. Кто-нибудь может дать мне какое-нибудь эффективное решение?

2
0
1 301
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте 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

Другие вопросы по теме