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.

El ancho de la caja en el diagrama de caja se ignora si solo hay un diagrama de caja.

Estoy usando CairoMakie para trazar un diagrama de caja. El argumento “width” en “boxplot” parece funcionar solo si hay 2 o más diagramas de caja para trazar, pero se ignora si solo hay un diagrama de caja. Por ejemplo,

using CairoMakie

xs = rand(1:2, 1000)
ys = randn(1000)

boxplot(xs, ys; width=0.2)
current_figure()

da un aspecto delgado a un diagrama de caja correctamente:

Imagen

pero al hacer esto:

using CairoMakie

xs = rand(1:1, 1000)
ys = randn(1000)

boxplot(xs, ys; width=0.2)
current_figure()

en su lugar, da un aspecto ancho a un diagrama de caja sin importar el valor que le dé al argumento “width”:

Imagen

¿Es esto un error? ¿Hay alguna solución alternativa para que trazar solo 1 diagrama de caja también me dé un diagrama de caja delgado? Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que este comportamiento no es un error sino más bien una característica intencionada de la función boxplot en CairoMakie. Cuando se traza solo un boxplot, el argumento width se ignora y el ancho del boxplot se establece automáticamente para llenar toda el área de la gráfica.

    Una solución alternativa para esto sería ajustar manualmente la proporción del aspecto de la gráfica para crear un boxplot delgado. Por ejemplo, podrías agregar la siguiente línea antes de llamar a la función boxplot:

    figure(window_size=(400, 200), aspect_ratio=3)
    

    Esto creará una ventana de gráfica con un ancho de 400 píxeles y una altura de 200 píxeles, con una proporción de aspecto de 3 (lo que significa que el ancho es tres veces la altura). Esto creará un área de gráfica delgada que hará que tu boxplot luzca también delgado.

    El código completo se vería así:

    using CairoMakie
    
    figure(window_size=(400, 200), aspect_ratio=3)
    
    xs = rand(1:1, 1000)
    ys = randn(1000)
    
    boxplot(xs, ys; width=0.2)
    
    current_figure()
    

    Esto debería darte un boxplot delgado incluso cuando se traza solo un boxplot.

Comments are closed.