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 cmap
objeto 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.nan
y np.inf
el 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.Normalize
simplemente como se muestra en el pequeño ejemplo a continuación, donde los argumentos vmin
y vmax
describen 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_bad
que definen qué hace paranp.nan
enp.inf
iirc. Deberías mencionar losNormalize
mé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