studio script ggplot examples course r ggplot2 visualization

script - En ggplot2 y facet_wrap, ¿cómo eliminar todos los márgenes y el relleno pero mantener strip.text?



plot in r ggplot (1)

Entre la lista de posibles argumentos para theme() , no hay solo panel.margin ("margen alrededor de los paneles faceta (unidad)", ver ?theme ), sino cómodamente, también puede acceder a uno de los ejes a la vez, con panel.margin.x y panel.margin.y respectivamente ("margen horizontal / vertical alrededor de los paneles de facetas (unidad; hereda de panel.margin)").

Por lo tanto, aunque disminuir el margen debajo de cero se siente un poco como un truco, algo como lo siguiente hará el trabajo (es posible que tengas que ajustar el valor un poco - la unit(-2, "lines") funcionó mejor para mí):

p + theme(strip.text = element_text(size = rel(3.0), vjust = -4.0), panel.margin.y = unit(-2, "lines"))

Si usa strip.text = element_blank() , probablemente debería usar panel.margin.y = unit(-0.5, "lines") .

Esto puede ser principalmente el resultado de mi error sobre cómo funciona panel.margin = unit(...) en la función theme() ... pero no puedo personalizar los márgenes en facet_wrap como me gustaría. Básicamente, quiero una facet_grid que se vea así, con texto de faceta (es decir, strip.text ) insertado en cada faceta y sin spcaing entre cada faceta:

(He dejado en los bordes rosados ​​para mostrar las dimensiones de cada faceta)

Así que aquí está el código hasta ahora.

Para configurar los datos y el trazado:

library(ggplot2) library(grid) p <- ggplot() + geom_bar(data = mtcars, aes(x = cyl, y = qsec), stat = ''identity'') + facet_wrap( ~ carb, ncol = 3) mytheme <- theme_minimal() + theme( axis.text.x = element_blank(), axis.text.y = element_blank(), axis.ticks = element_blank(), axis.title = element_blank(), panel.margin = unit(0, "lines"), panel.border = element_rect(colour = rgb(1.0, 0, 0, 0.5), fill=NA, size=1) ) La trama estándar

p + mytheme

Extracción de strip.text completamente

p + mytheme + theme(strip.text = element_blank())

Agregar el strip.text e insertarlo

p + mytheme + theme(strip.text = element_text(size = rel(3.0), vjust = -4.0))

La reincorporación de strip.text (y el aumento del tamaño relativo) aumenta el margen vertical entre las dos filas. Entonces, en este punto, no sé cómo cerrar la brecha vertical entre las filas superior e inferior.

Demasiado margen negativo

p + mytheme + theme(strip.text = element_text(size = rel(3.0), vjust = -4.0), panel.margin = unit(c(-2, -2), "lines"))

Entonces, ¿cómo objetivo solo el panel. Margen entre las dos filas?

Editar: información adicional. El espacio entre las filas parece ser strip.background :

p + mytheme + theme(strip.text = element_text(size = rel(3.0), vjust = -4.0), panel.margin = unit(-1, "lines"), strip.background = element_rect(fill = rgb(0, 1.0, 0, 0.2)))