Python Matplotlib Colormap

Yo uso el mapa de colores “jet” para trazar mis gráficos. Pero me gustaría tener los valores más bajos en color blanco y este mapa de colores va del azul al rojo. Tampoco quiero usar otro mapa de colores porque necesito este rango de colores … Traté de hacer que mi mapa de colores obtuviera lo mismo que “jet” con un rango de valores en blanco, pero esto es demasiado difícil. Alguien podría ayudarme por favor? Gracias

Probablemente debería haber una solución más fácil, pero la forma en que lo descubrí es creando su propio matplotlib.colors.LinearSegmentedColormap, basado en el “jet”.

(El nivel más bajo de su mapa de colores se define en la primera línea de cada tupla de rojo, verde y azul, por lo que es donde comienza a editar. Agrego una tupla adicional para tener una mancha blanca en la parte inferior. … para Cada color, en el primer elemento de la tupla, indica la posición en su barra de colores (de 0 a 1) y en el segundo y tercero el color en sí mismo.

from matplotlib.pyplot import * import matplotlib import numpy as np cdict = {'red': ((0., 1, 1), (0.05, 1, 1), (0.11, 0, 0), (0.66, 1, 1), (0.89, 1, 1), (1, 0.5, 0.5)), 'green': ((0., 1, 1), (0.05, 1, 1), (0.11, 0, 0), (0.375, 1, 1), (0.64, 1, 1), (0.91, 0, 0), (1, 0, 0)), 'blue': ((0., 1, 1), (0.05, 1, 1), (0.11, 1, 1), (0.34, 1, 1), (0.65, 0, 0), (1, 0, 0))} my_cmap = matplotlib.colors.LinearSegmentedColormap('my_colormap',cdict,256) pcolor(np.random.rand(10,10),cmap=my_cmap) colorbar() show() 

Obtendrá lo siguiente: JetCormormap con blanco

Hay otra forma de hacer lo mismo sin definir un nuevo colobar. Puede usar el método cmap.set_under que define el color que se usará para todos los valores por debajo de un umbral determinado. El umbral se define durante el pcolormesh:

 from matplotlib.pyplot import * import numpy as np mycmap = cm.get_cmap('jet') mycmap.set_under('w') pcolor(np.random.rand(10,10), cmap=mycmap, vmin=.1) colorbar() show() 

Hay prácticamente este ejemplo en la página de mapas de colores . Excavando a través de la fuente matplotlib en mi máquina, jet se define como (en _cm.py ):

 _jet_data = {'red': ((0., 0, 0), (0.35, 0, 0), (0.66, 1, 1), (0.89,1, 1), (1, 0.5, 0.5)), 'green': ((0., 0, 0), (0.125,0, 0), (0.375,1, 1), (0.64,1, 1), (0.91,0,0), (1, 0, 0)), 'blue': ((0., 0.5, 0.5), (0.11, 1, 1), (0.34, 1, 1), (0.65,0, 0), (1, 0, 0))}