tamaño - ggplot2 aumenta el espacio entre las teclas de leyenda
leyenda en ggplot2 (2)
¿Cómo puedo aumentar el espacio entre las claves de la leyenda de la trama ggplot2
?
library(ggplot2)
ggplot(aes(mpg, wt, colour = factor(cyl)),
, data = mtcars) +
geom_point() +
theme(legend.direction = "horizontal",
legend.position = "bottom") +
guides(color = guide_legend(nrow=2))
Estoy buscando una opción ggplot2 que agregue un tipo de ajuste vertical entre (clave 4 y clave 6) en el diagrama de arriba? ¿Debo crear una clave de leyenda personalizada?
PD: Quiero aumentar el espacio en blanco entre cuadros que no estén entre etiquetas.
la trama deseada es:
NOTA: No, la pregunta no está duplicada de la otra pregunta. Queremos agregar un espacio vertical entre los elementos que ya están en varias filas. En la otra pregunta, tenemos una leyenda de 1 fila y queremos agregar espacios (horizontales) entre los elementos.
Aquí una solución usando gtable
. Básicamente estoy extrayendo la tabla grobs de leyenda y agrego una fila en la tabla de leyenda.
library(gtable)
library(grid)
## transform the ggplot to a grobs table
p_table <- ggplot_gtable(ggplot_build(p))
## extract legend
leg <- which(sapply(p_table$grobs, function(x) x$name) == "guide-box")
## this is the tricky part !
## add a row in the second position (pos=2)
p_table$grobs[[leg]]$grobs[[1]] <-
gtable_add_rows(p_table$grobs[[leg]]$grobs[[1]],
unit(0.5, "line"), ## you can increase the height here
pos=2) ## since I have 2 rows , I insert it in the middle
plot(p_table)
PD: ¡No sé cómo forzar la mesa a una trama otra vez! tal vez alguien más puede ayudar aquí (solo estoy tramando y perdiendo la estructura del objeto)
Una solución alternativa (y probablemente más fácil) es usar legend.key
y legend.key.size
en la parte del theme
de su código:
ggplot(data = mtcars, aes(mpg, wt, colour = factor(cyl))) +
geom_point() +
guides(color = guide_legend(nrow = 2)) +
theme(legend.direction = ''horizontal'',
legend.position = ''bottom'',
legend.key = element_rect(size = 5),
legend.key.size = unit(1.5, ''lines''))
esto da:
En caso de que llame a theme_bw
o theme_classic
antes de manipular la leyenda, debe establecer el color del rectángulo de la leyenda:
legend.key = element_rect(size = 5, color = ''white'') #or: color = NA