es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo configurar manualmente un rango de colores divergentes

Estoy usando Altair para Python y mi código actual utiliza un esquema de color rojo-amarillo-azul que utiliza el color medio (amarillo) según mi parámetro de dominioMid.

El código es el siguiente:

color=alt.Color('Spline_WW_Diff_Trend:Q', scale=alt.Scale(scheme='redyellowblue', reverse=True, domain=[-3.57,2.270], domainMid=0, clamp=True), legend=alt.Legend(title="Trend"))

Esto me da como resultado:

Imagen

Necesito reemplazar el color amarillo por el color blanco. He cambiado el esquema a range y he probado diferentes combinaciones de parámetros de Scale, pero no respeta mi dominioMid.

Aquí tienes un ejemplo:

color=alt.Color('Spline_WW_Diff_Trend:Q', scale=alt.Scale(range=['#D4322C', 'white', '#4A74B4'], reverse=True, domain=[-3.57,2.270], domainMid=0, clamp=True), legend=alt.Legend(title="Trend"))

Esto me da como resultado:

Imagen

Puedes observar que la primera columna (que tiene todos los valores 0) muestra un color rojizo en lugar de blanco (como se suponía que iba a ser).

¿Cómo puedo obtener el mismo resultado que en el esquema de color (imagen uno), pero con blanco en lugar de amarillo?

Edición:

Lo mismo sucede con:

range=['blue', 'lightblue', 'white', 'pink', 'red']

El color medio es celeste claro, no blanco.

Imagen: enlace a la imagen

Edición 05/12/2022:

Para aclarar, me gustaría lograr el mismo esquema de color de esta imagen: enlace a la imagen

Este mapa de calor fue creado en R utilizando la paleta de colores RdYlBu (que tiene 11 colores) y se sobrescribió el color medio (6º color) con blanco. Luego, aumentaron el número de colores en la paleta a 99 para que el degradado se vea más fluido. ¿Alguien tiene alguna idea de cómo lograr eso en Altair?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para lograr el mismo esquema de colores que en la primera imagen pero con blanco en lugar de amarillo, puedes modificar el parámetro ‘Range’ en la función ‘Scale’ de la siguiente manera:

    color = alt.Color('Spline_WW_Diff_Trend:Q',
    scale=alt.Scale(range=['#D4322C', 'white', '#4A74B4'],
    reverse=True,
    domain=[-3.57, 0, 2.270],
    clamp=True),
    legend=alt.Legend(title='Tendencia'))

    Añadimos un valor adicional al parámetro ‘Range’, que es 0 (blanco), el cual representa el valor ‘domainMid’. Esto significa que cualquier valor dentro del rango ‘domain’ y igual a 0 se mapeará al color blanco.

    La misma lógica se puede aplicar a otros esquemas de colores que desees modificar, solo asegúrate de añadir el color deseado a la lista ‘range’ y ajustar el parámetro ‘domain’ en consecuencia.

    Para lograr un esquema de color con 99 colores y un color medio blanco, puedes utilizar un enfoque similar:

    color = alt.Color('Spline_WW_Diff_Trend:Q',
    scale=alt.Scale(scheme='rdylbu',
    reverse=True,
    domain=[-3.57, 0, 2.270],
    clamp=True),
    legend=alt.Legend(title='Tendencia'))

    Aquí, utilizamos el esquema de color incorporado ‘rdylbu’, que significa “rojo-amarillo-azul”. Nuevamente añadimos 0 al parámetro ‘domain’, y Altair automáticamente utilizará el sexto color del esquema de color como el color medio, que queremos que sea blanco. Dado que ‘rdylbu’ tiene 11 colores, podemos aumentar el número de colores a 99 utilizando la función ‘alt.ColorScheme’:

    color_scheme = alt.ColorScheme('rdylbu', extent=[0, 1])
    color_scheme = color_scheme.colors(99).to_dict()

    Luego, en la función ‘Scale’, podemos usar scale=color_scheme para utilizar el esquema de color personalizado con 99 colores.

Comments are closed.