Gráfico de dispersión de colores Altair según la condición
Tengo este df:
x y term s
0 0.000000 0.132653 matlab 0.893072
1 0.000000 0.142857 matrix 0.905120
2 0.012346 0.153061 laboratory 0.902610
3 0.987654 0.989796 be 0.857932
4 0.938272 0.959184 a 0.861948
La variable s
nos dice la “distancia” del término desde la línea central (pendiente 1).
Y necesito hacer un gráfico de dispersión que se vea así:
Tengo este código hasta ahora:
chart = alt.Chart(scatterdata_df).mark_circle().encode(
x = alt.X('x:Q', axis = alt.Axis(tickMinStep = 0.05)),
y = alt.Y('y:Q', axis = alt.Axis(tickMinStep = 0.05)),
color=alt.condition('s:Q', alt.value('red'), alt.value('blue')),
tooltip = ['term']
).properties(
width = 500,
height = 500
)
chart
Y eso me da un error.
Error de Javascript: Error de análisis de expresión: (s:Q)?”red”:”blue”
Esto generalmente significa que hay un error tipográfico en la especificación del gráfico. Consulta la consola de Javascript para obtener el seguimiento completo.
Cuando solo hago color = 's'
obtengo esto, que está más cerca:
Pero nuevamente necesito ese doble degradado de colores. Sé que el degradado es respecto a la variable s
, pero no estoy seguro de cómo hacer que tenga dos degradados, uno para cada lado de la línea central.
davy.ai
Para crear un degradado doble de colores, puedes usar el parámetro
scale
en Altair. Aquí tienes una versión actualizada del código que debería darte el gráfico de dispersión deseado:En este código, he definido una escala personalizada
color_scale
que asigna la variables
a un degradado que va desde el azul, pasando por el blanco, hasta el rojo. El parámetrodomain=(-1,1)
especifica que la escala debe centrarse alrededor de 0 (es decir, la línea central con una pendiente de 1), de modo que los valores positivos des
se asignen a rojo y los valores negativos des
se asignen a azul.Con este código, deberías obtener un gráfico de dispersión que se ve como la primera imagen que proporcionaste.