Mapa de calor en la parte superior de la imagen

Tengo imágenes de diferentes objetos (Pascal Voc) y tengo un mapa de probabilidad. Quiero visualizarla trazando la imagen y de alguna manera el mapa de calor encima de ella. ¿Cuál sería la mejor manera de hacer eso?

Estaba pensando en usar el canal alfa de esta manera:

im_heat = np.zeros((image.shape[0],image.shape[1],4)) im_heat[:,:,:3] = image im_heat[:,:,3] = np.rint(255/heatmap) plt.imshow(im_heat, cmap='jet') plt.colorbar() 

¿Cómo personalizo la barra de colores desde min (mapa de calor) a máximo (mapa de calor)? ¿O hay alguna forma mejor de visualizar las probabilidades?

Puede astackr imágenes y diagtwigs con matplotlib y luego elegir qué controlador usar para la barra de colores. El uso de contourf los valores mínimo y máximo de la barra de color se basarán en su mapa de calor (o puede pasar vmin=min(heatmap) y vmax=max(heatmap) a contourf para explicitar este rango). El problema con esto es que el mapa de calor cubrirá tu imagen (y establecer la transparencia hará que todo sea transparente). La mejor opción es hacer un mapa de colores que sea transparente cuando esté cerca de cero, como sigue,

 import numpy as np import matplotlib.pyplot as plt import matplotlib.colors as mcolors import Image #2D Gaussian function def twoD_Gaussian((x, y), xo, yo, sigma_x, sigma_y): a = 1./(2*sigma_x**2) + 1./(2*sigma_y**2) c = 1./(2*sigma_x**2) + 1./(2*sigma_y**2) g = np.exp( - (a*((x-xo)**2) + c*((y-yo)**2))) return g.ravel() def transparent_cmap(cmap, N=255): "Copy colormap and set alpha values" mycmap = cmap mycmap._init() mycmap._lut[:,-1] = np.linspace(0, 0.8, N+4) return mycmap #Use base cmap to create transparent mycmap = transparent_cmap(plt.cm.Reds) # Import image and get x and y extents I = Image.open('./deerback.jpg') p = np.asarray(I).astype('float') w, h = I.size y, x = np.mgrid[0:h, 0:w] #Plot image and overlay colormap fig, ax = plt.subplots(1, 1) ax.imshow(I) Gauss = twoD_Gaussian((x, y), .5*x.max(), .4*y.max(), .1*x.max(), .1*y.max()) cb = ax.contourf(x, y, Gauss.reshape(x.shape[0], y.shape[1]), 15, cmap=mycmap) plt.colorbar(cb) plt.show() 

lo que da,

introduzca la descripción de la imagen aquí