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.

Eliminar espacio entre marcas en la visualización de Altair

Tengo una visualización en la que intento aumentar el tamaño de los marcadores y hacer que se toquen entre sí (disminuir el espacio entre los marcadores) utilizando altair. ¿Hay alguna forma de hacer esto sin simplemente usar ‘size=’? Me gustaría que esto sea adaptable a una función y no codificar el tamaño, sino que dependa de los datos proporcionados.

Aquí está mi código actual hasta ahora:

alt.Chart(df).mark_square().encode(
    x=alt.X('p1:N'),
    y=alt.Y('p2:N'),
    color=alt.Color('weight:O', legend=alt.Legend(type='symbol'), scale=alt.Scale(scheme='blues'))
).properties(
    height=500,
    width=500
)

Mi salida actual es la siguiente:

Output actual

Mi salida deseada que intento lograr es la siguiente:

Output deseado

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar la codificación size en combinación con el parámetro scale para lograr el efecto deseado.

    Primero, definamos una variable para controlar el tamaño de las marcas basado en los datos:

    size_var = alt.Size('weight:Q', scale=alt.Scale(range=[50, 500]))
    

    Esto mapeará el rango de valores en la columna weight a un rango de tamaños de marca entre 50 y 500. Ajusta los valores del rango según tus necesidades.

    Luego, agrega la variable size_var a la codificación del gráfico:

    alt.Chart(df).mark_square().encode(
        x=alt.X('p1:N'),
        y=alt.Y('p2:N'),
        color=alt.Color('weight:O', legend=alt.Legend(type='symbol'), scale=alt.Scale(scheme='blues')),
        size=size_var
    ).properties(
        height=500,
        width=500
     )
    

    Esto usará size_var como la codificación de tamaño para las marcas.

    Para disminuir el espacio entre las marcas, puedes usar el parámetro spacing en mark_square:

    alt.Chart(df).mark_square(spacing=0).encode(
        x=alt.X('p1:N'),
        y=alt.Y('p2:N'),
        color=alt.Color('weight:O', legend=alt.Legend(type='symbol'), scale=alt.Scale(scheme='blues')),
        size=size_var
    ).properties(
        height=500,
        width=500
     )
    

    Ajusta el valor de spacing para controlar el espacio entre las marcas.

    Poniéndolo todo junto, el código completo sería:

    size_var = alt.Size('weight:Q', scale=alt.Scale(range=[50, 500]))
    
    alt.Chart(df).mark_square(spacing=0).encode(
        x=alt.X('p1:N'),
        y=alt.Y('p2:N'),
        color=alt.Color('weight:O', legend=alt.Legend(type='symbol'), scale=alt.Scale(scheme='blues')),
        size=size_var
    ).properties(
        height=500,
        width=500
     )
    

Comments are closed.