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.

Elegir cuántas etiquetas del eje x se muestran en un gráfico de Altair en Python.

Tengo un gráfico de altair en el que estoy usando mark_rectangle. Quiero poder elegir cuántas etiquetas del eje x se muestran para que las marcas formen cuadrados en la visualización. O tal vez quiero elegir el rango de las etiquetas del eje x. En este momento, se muestran demasiadas etiquetas. A continuación, tengo un ejemplo de lo que estoy tratando de lograr y cómo es mi gráfico de salida actual. Si el problema se debe a algo más, pido disculpas, ya que actualmente estoy aprendiendo altair.

Mi código actual:

alt.Chart(temdf).mark_rect().encode(
x=alt.X('norm:O', title='', axis=alt.Axis(grid=False, labelAngle=360)),
y=alt.Y('term:N', title='', axis=alt.Axis(grid=False)),
color=alt.Color('norm:O', title='', scale=alt.Scale(scheme='blues'), legend=None),
facet=alt.Facet('title:N', title='', columns=3, header=alt.Header(labelOrient='bottom', labelPadding=15, labelAngle=360), 
sort=alt.EncodingSortField(field = 'title', order='ascending')))

Lo que estoy tratando de lograr:

imagen

Mi salida actual:

imagen

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para controlar el número de etiquetas del eje x que se muestran o establecer el rango de etiquetas del eje x en un gráfico de Altair usando mark_rect, puedes usar la transformación bin para discretizar la variable x en bins y luego usar un axis con el parámetro tickCount para establecer el número deseado de marcas en el eje x. A continuación se muestra un ejemplo modificado de tu código para lograr el resultado deseado:

    alt.Chart(temdf).mark_rect().encode(
        x=alt.X('norm:Q', title='', 
            axis=alt.Axis(grid=False, labelAngle=360, tickCount=5,
                          values=[-0.8, -0.4, 0, 0.4, 0.8])),
        y=alt.Y('term:N', title='', axis=alt.Axis(grid=False)),
        color=alt.Color('norm:Q', title='', scale=alt.Scale(scheme='blues'), legend=None),
        facet=alt.Facet('title:N', title='',columns=3, header=alt.Header(labelOrient='bottom', 
            labelPadding=15, labelAngle=360), sort=alt.EncodingSortField(field='title', order='ascending'))
    ).transform_bin(
        'norm', 'norm_raw', bin=alt.Bin(maxbins=10)
    ).properties(
        width=200,
        height=200
    ).configure_view(
        stroke='transparent'
    )
    

    En el código anterior, se utiliza el método transform_bin para crear una nueva variable binaria norm a partir de la variable norm_raw original. El argumento maxbins se establece en 10, lo que significa que la variable norm se dividirá en diez bins de igual tamaño. Luego, se utiliza el parámetro tickCount y el parámetro values en axis para establecer el número y los valores deseados de marcas en el eje x.

    Los parámetros width y height en properties se utilizan para establecer el tamaño de cada facet, y el parámetro stroke en configure_view se utiliza para asegurarse de que las líneas del eje no sean visibles.

    Puedes ajustar los parámetros maxbins, tickCount y values en función de tus datos y requisitos.

Comments are closed.