jpg example colorscales python matplotlib

python - example - plt.imshow jpg



Definir un mapa de color discreto para imshow en matplotlib (2)

Tengo una imagen simple que estoy mostrando con imshow en matplotlib. Me gustaría aplicar un mapa de colores personalizado para que los valores entre 0-5 sean blancos, 5-10 sean rojos (colores muy simples), etc. He intentado seguir este tutorial:

http://assorted-experience.blogspot.com/2007/07/custom-colormaps.html con el siguiente código:

cdict = { ''red'' : ((0., 0., 0.), (0.5, 0.25, 0.25), (1., 1., 1.)), ''green'': ((0., 1., 1.), (0.7, 0.0, 0.5), (1., 1., 1.)), ''blue'' : ((0., 1., 1.), (0.5, 0.0, 0.0), (1., 1., 1.)) } my_cmap = mpl.colors.LinearSegmentedColormap(''my_colormap'', cdict, 3) plt.imshow(num_stars, extent=(min(x), max(x), min(y), max(y)), cmap=my_cmap) plt.show()

Pero esto termina mostrando colores extraños, y solo necesito 3-4 colores que quiero definir. ¿Cómo hago esto?


Puede usar un ListedColormap para especificar el blanco y el rojo como los únicos colores en el mapa de color, y los límites determinan dónde está la transición de un color al siguiente:

import matplotlib.pyplot as plt from matplotlib import colors import numpy as np np.random.seed(101) zvals = np.random.rand(100, 100) * 10 # make a color map of fixed colors cmap = colors.ListedColormap([''white'', ''red'']) bounds=[0,5,10] norm = colors.BoundaryNorm(bounds, cmap.N) # tell imshow about color map so that only set colors are used img = plt.imshow(zvals, interpolation=''nearest'', origin=''lower'', cmap=cmap, norm=norm) # make a color bar plt.colorbar(img, cmap=cmap, norm=norm, boundaries=bounds, ticks=[0, 5, 10]) plt.savefig(''redwhite.png'') plt.show()

La figura resultante tiene solo dos colores:

Propuse esencialmente lo mismo para una pregunta algo diferente: visualización de datos de cuadrícula 2D en Python

La solución está inspirada en un ejemplo matplotlib . El ejemplo explica que los bounds deben ser uno más que el número de colores utilizados.

BoundaryNorm es una normalización que asigna una serie de valores a enteros, que luego se utilizan para asignar los colores correspondientes. cmap.N , en el ejemplo anterior, solo define el número de colores.