Estoy haciendo mapas de cuánta energía solar recibe la superficie del suelo sobre Europa, usando matplotlib. Así que obviamente estoy trazando datos secuenciales. Estoy haciendo un mapa de contorno lleno.
Tengo mapas mensuales y anuales durante ~ 35 años y dado que mi objetivo es poder comparar visualmente entre todos ellos, quiero diseñar un mapa de colores consistente para usar. Lo que quiero hacer es asignar un color particular a un rango dentro del rango 0-420W/m2. Entonces, por ejemplo, si un tono particular de rojo es para 300-400 W/m2 y mi mapa no contiene datos con esa magnitud, este color no aparecerá en ese mapa.
Mis dos preguntas son ¿cuántos colores debo tener en mi mapa de colores y qué colores elegir?
En términos de cuántos colores, supongo que la respuesta es "suficiente para cubrir la variabilidad de los datos". Mirando algunas cosas en línea , por ejemplo, aquí , pensé que usaría 15 contenedores, por lo que cada valor 28 estaría representado por un color diferente. Sin embargo, incluso si tuviera que copiar los colores del mapa anterior, yo:
Supongo que dado que estoy trazando algo relacionado con "calor" y "solar", elegiría colores en el rango rojo en los máximos y probablemente azules en los mínimos. No sé cómo elegir los diferentes tonos y lo que hay en el medio.
Esto es lo que tengo hasta ahora con el esquema "jet" predeterminado de matplotlib (un mapa de colores del arco iris). Me han dicho que los arcoíris son muy malos para los datos secuenciales, así que no estoy interesado en usarlos. Además, tiene 50 niveles de contorno, pero probablemente terminaré usando menos. Sin embargo, todas las gráficas a continuación segmentan los colores en cada mapa para cada período por separado (no están estandarizados en todos los mapas). Estoy trazando el mismo período en estos a continuación, por lo que se ven casi iguales, pero hay una gran diferencia si tuviera que trazar el mes de julio, por ejemplo, ya que el rango de valores sería ~ 100-400 W / m2
También intenté usar el esquema Cynthia Brewer Red09 que tiene 9 niveles discretos:
Intenté extender el esquema Cbrewer Reds 09 a un mapa de colores segmentado lineal para que pueda acomodar 50 niveles de contorno, pero terminé borrando la variabilidad en el mapa:
Finalmente probé un esquema personalizado que tiene 19 niveles. Los RGB se ven así:
red = numpy.array([0, 0, 221, 239, 229, 217, 239, 234, 228, 222, 205, 196, 161, 137, 116, 89, 77, 60, 51]) / 256.
green = numpy.array([16, 217, 242, 243, 235, 225, 190, 160, 128, 87, 72, 59, 33, 21, 29, 30, 30, 29, 26]) / 256.
blue = numpy.array([255, 255, 243, 169, 99, 51, 63, 37, 39, 21, 27, 23, 22, 26, 29, 28, 27, 25, 22]) / 256.
El mapa:
Quiero enfatizar que no quiero que nadie escriba código por mí, lo resolveré yo mismo, quiero que me aconsejen sobre qué colores elegir y sus códigos de color o algo así para saber cuáles son e implementarlos: ). ¿Parece eso razonable? ¡Ojalá alguien pueda ayudar!
Creo que la mayoría de la gente se ha encontrado haciéndose la misma pregunta. yo se que tengo En general, he aceptado que cada conjunto de observaciones que existen dentro de un rango cuantitativo y continuo debe visualizarse utilizando mapas de colores secuenciales de dos colores, es decir, un color que se convierte gradualmente en su color complementario en el rango de valores dado. Si eres daltónico, puedes usar la rueda de armonía de colores para seleccionar complementarios.
Entonces está diciendo que desea que su rango de valores complete el rango de colores, lo que generalmente no es un problema a menos que comience a emparejar colores y valores (nunca debe hacer esto a menos que tenga datos cualitativos). La mayoría de las bibliotecas de trazado se encargan de este problema por usted. Matplotlib de Python proporciona un elemento cmap opcional en sus métodos de trazado, donde puede elegir cualquier mapa de colores predefinido o personalizado. Usando esto, nunca tendrá el problema de que sus colores no se asignen correctamente a sus valores.
En casos especiales, puede tener valores donde la desviación estándar aumenta para valores más altos. Este es un problema para el mapeo de colores que se resuelve, por ejemplo, con una transformación logarítmica (aumento exponencial) o una transformación raíz (aumento potencial). El inverso también puede ser el problema, en cuyo caso haces las transformaciones opuestas.
En una nota final, se debe enfatizar que no existen "mejores prácticas" generalmente acordadas cuando se trata de mapeo de colores en la visualización de datos. Solo hay sabor .
joojaa
tienes experiencia
Adi Shavit