Puede hacer esto con el código a continuación, y el código en su pregunta en realidad estaba muy cerca de lo que necesitaba, todo lo que tiene que hacer es llamar al cmapobjeto que tiene.
import matplotlib
cmap = matplotlib.cm.get_cmap('Spectral')
rgba = cmap(0.5)
print(rgba) # (0.99807766255210428, 0.99923106502084169, 0.74602077638401709, 1.0)
Para valores fuera del rango [0.0, 1.0] devolverá el color inferior y superior (respectivamente). Este, por defecto, es el color mínimo y máximo dentro del rango (por lo tanto, 0.0 y 1.0). Este valor predeterminado se puede cambiar con cmap.set_under()y cmap.set_over().
Para números "especiales" como np.nany np.infel valor predeterminado es usar el valor 0.0, esto se puede cambiar usando de cmap.set_bad()manera similar a under y over como se indicó anteriormente.
Finalmente, puede ser necesario que normalice sus datos de manera que se ajusten al rango [0.0, 1.0]. Esto se puede hacer usando matplotlib.colors.Normalizesimplemente como se muestra en el pequeño ejemplo a continuación, donde los argumentos vminy vmaxdescriben qué números deben asignarse a 0.0 y 1.0 respectivamente.
import matplotlib
norm = matplotlib.colors.Normalize(vmin=10.0, vmax=20.0)
print(norm(15.0)) # 0.5
También está disponible un normalizador logarítmico ( matplotlib.colors.LogNorm ) para rangos de datos con un amplio rango de valores.
(Gracias a Joe Kington y tcaswell por sus sugerencias sobre cómo mejorar la respuesta).
                 
                
cmap.set_under('red'); print cmap(0.0), cmap(-0.01)set_badque definen qué hace paranp.nanenp.infiirc. Deberías mencionar losNormalizemétodos aquí también.module 'matplotlib' has no attribute 'cm', intente reemplazar las dos primeras líneas conimport matplotlib.pyplot as plt; cmap = plt.cm.get_cmap('Spectral')Para obtener el valor entero rgba en lugar del valor flotante, podemos hacer
Entonces, para simplificar el código basado en la respuesta de Ffisegydd, el código sería así:
fuente
Para construir sobre las soluciones de Ffisegydd y amaliammr , aquí hay un ejemplo en el que hacemos una representación CSV para un mapa de colores personalizado:
fuente
Para completar, estas son las opciones de cmap que encontré hasta ahora:
fuente