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.

Diferentes longitudes de línea en la leyenda horizontal en R

Quiero crear una leyenda horizontal con varias líneas (de diferentes longitudes) y el texto debajo de cada línea. Tengo el siguiente código:

library(RColorBrewer)

colorlevel <- brewer.pal(n = 5, name = 'Set1')

plot.new()
a <- legend("topleft",
            legend =c("", "", "", "", "", ""),
            lty = 1,
            lwd = 4,
            bty='o',
            seg.len= c(rep(1.5,5), 4),
            col = colorlevel,
            horiz = TRUE,
            trace=TRUE
)
text(a$text$x-0.05, a$text$y, c("A", "B", "C", "D", "E", "F"), pos=1)

que produce la siguiente leyenda:

Leyenda horizontal con diferentes longitudes de línea

Sin embargo, hay algunos problemas que no puedo resolver:

1) La última línea (la más larga, correspondiente a F) debe mantener la misma separación que todas las demás líneas, pero está bastante separada.
2) Aunque quiero que la distancia entre las líneas de colores sea la misma, ¿hay alguna forma de ajustar esta separación?
3) El borde de la leyenda está demasiado cerca del texto, etc. ¿Se puede ajustar?

Gracias de antemano.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para abordar los problemas con la leyenda actual, aquí van algunas sugerencias:

    1) Para mantener la misma separación en la última línea, puedes ajustar el parámetro seg.len de esa línea específica a un valor más pequeño (por ejemplo, 2 en lugar de 4). Esto hará que la línea sea más corta y la mantendrá más cerca de las otras líneas.

    2) La separación entre las líneas de color está controlada por el parámetro seg.len, por lo que puedes ajustar eso para aumentar o disminuir la distancia entre las líneas. Puedes probar diferentes valores hasta encontrar la separación deseada.

    3) Para ajustar el borde de la leyenda, puedes usar el parámetro border para cambiar el color del borde, y los parámetros box.lwd y box.col para ajustar el ancho y color del borde. Por ejemplo:

    legend("superior izquierda",
           legend = c("", "", "", "", "", ""),
           lty = 1,
           lwd = 4,
           bty = "o",
           seg.len = c(rep(1.5, 5), 2), # segmento más corto para la última línea
           col = niveldecolor,
           horiz = TRUE,
           trace = TRUE,
           text.col = "negro", # cambiar el color del texto
           border = "negro", # cambiar el color del borde
           box.lwd = 1.5, # ajustar el ancho del borde
           box.col = "blanco" # cambiar el color de relleno del borde
    )
    

    Al ajustar estos parámetros, puedes crear una leyenda personalizada que cumpla con tus requisitos específicos.

Comments are closed.