puntos matrices libreria graficos graficar example python matplotlib

python - matrices - Mostrar subplots con la misma barra de colores



matplotlib legend example (2)

Quiero hacer 4 imshow de imshow pero todas comparten el mismo mapa de colores. Matplotlib ajusta automáticamente la escala en el mapa de colores dependiendo de las entradas de las matrices. Por ejemplo, si una de mis matrices tiene todas las entradas como 10 y la otra tiene todas las entradas iguales a 5 y uso el mapa de colores de Greys entonces una de mis subparcelas debería ser completamente negra y la otra debería ser completamente gris. Pero ambos terminan volviéndose completamente negros. ¿Cómo hacer que todas las subparcelas compartan la misma escala en el mapa de colores?


Es posible que no sepa de antemano los rangos de sus datos, pero que sepa que de alguna manera son compatibles. En ese caso, es posible que prefiera dejar que matplotlib elija esos rangos para la primera parcela y use el mismo rango para las parcelas restantes. Aquí sabrás como podrás hacerlo. La clave es obtener los límites con properties()[''clim'']

import numpy as np import matplotlib.pyplot as plt my_image1 = np.linspace(0, 10, 10000).reshape(100,100) my_image2 = np.sqrt(my_image1.T) + 3 fig, axes = plt.subplots(nrows=1, ncols=2) im = axes[0].imshow(my_image1) clim=im.properties()[''clim''] axes[1].imshow(my_image2, clim=clim) fig.colorbar(im, ax=axes.ravel().tolist(), shrink=0.5) plt.show()


Para hacerlo bien, necesita tener todas las imágenes con la misma escala de intensidad, de lo contrario, los colorbar() la colorbar() colores colorbar() tienen sentido. Para hacer eso, usa los argumentos vmin y vmax de imshow() , y asegúrate de que sean iguales para todas tus imágenes.

Por ejemplo, si el rango de valores que desea mostrar va de 0 a 10, puede usar lo siguiente:

import pylab as plt import numpy as np my_image1 = np.linspace(0, 10, 10000).reshape(100,100) my_image2 = np.sqrt(my_image1.T) + 3 subplot(1, 2, 1) plt.imshow(my_image1, vmin=0, vmax=10, cmap=''jet'', aspect=''auto'') plt.subplot(1, 2, 2) plt.imshow(my_image2, vmin=0, vmax=10, cmap=''jet'', aspect=''auto'') plt.colorbar()