Matplotlib python cambia de un solo color en mapa de colores

Uso el mapa de colores en python para trazar y analizar valores en una matriz. Necesito asociar el color blanco a cada elemento igual a 0.0, mientras que para otros me gustaría tener un mapa de color “tradicional”. Mirando Python Matplotlib Colormap modifiqué el diccionario usado por pcolor como:

dic = {'red': ((0., 1, 1), (0.00000000001, 0, 0), (0.66, 1, 1), (0.89,1, 1), (1, 0.5, 0.5)), 'green': ((0., 1, 1), (0.00000000001, 0, 0), (0.375,1, 1), (0.64,1, 1), (0.91,0,0), (1, 0, 0)), 'blue': ((0., 1, 1), (0.00000000001, 1, 1), (0.34, 1, 1), (0.65,0, 0), (1, 0, 0))} 

El resultado es: introduzca la descripción de la imagen aquí

Lo puse:

 matrix[0][0]=0 matrix[0][1]=0.002 

Pero como puede ver, ambos están asociados con el color blanco, incluso si configuro 0.00000000001 como punto de partida para el azul. ¿Cómo es esto posible? ¿Cómo puedo cambiarlo para obtener lo que me gustaría?

Aunque no es ideal, enmascarar el valor cero funciona. Puede controlar su visualización con el cmap.set_bad() .

 from matplotlib.colors import LinearSegmentedColormap import matplotlib.pyplot as plt import numpy as np dic = {'red': ((0., 1, 0), (0.66, 1, 1), (0.89,1, 1), (1, 0.5, 0.5)), 'green': ((0., 1, 0), (0.375,1, 1), (0.64,1, 1), (0.91,0,0), (1, 0, 0)), 'blue': ((0., 1, 1), (0.34, 1, 1), (0.65,0, 0), (1, 0, 0))} a = np.random.rand(10,10) a[0,:2] = 0 a[0,2:4] = 0.0001 fig, ax = plt.subplots(1,1, figsize=(6,6)) cmap = LinearSegmentedColormap('custom_cmap', dic) cmap.set_bad('white') ax.imshow(np.ma.masked_values(a, 0), interpolation='none', cmap=cmap) 

introduzca la descripción de la imagen aquí