scale_x_discrete manipulation ggtitle ggplot change r label facet ggplot2

manipulation - ¿Cómo se agrega una etiqueta general a las facetas en ggplot2?



ggtitle size (3)

Además del método descrito por kohske, puede agregar un borde a los cuadros agregados al cambiar

col=NA

a

col=gray(0.5), linetype=1

Además, cambie

fill=gray(0.5)

para

fill=grey(0.8)

y

gp=gpar(col=gray(1))

a

gp=gpar(col=gray(0))

Si desea que las barras nuevas coincidan con las etiquetas de facetas

es decir

z <- gtable_add_grob(z, list(rectGrob(gp = gpar(col = gray(0.5), linetype=1, fill = gray(0.8))), textGrob("Variable 1", rot = -90, gp = gpar(col = gray(0)))), 4, 8, 6, name = paste(runif(2)))

A menudo tengo valores numéricos para facetar. Deseo proporcionar información suficiente para interpretar estos valores de facetado en un título suplementario, similar a los títulos de los ejes. Las opciones de etiquetado repiten mucho texto innecesario y no se pueden usar para títulos variables más largos.

¿Alguna sugerencia?

El valor por defecto:

test<-data.frame(x=1:20, y=21:40, facet.a=rep(c(1,2),10), facet.b=rep(c(1,2), each=20)) qplot(data=test, x=x, y=y, facets=facet.b~facet.a)

Lo que me gustaría:

Lo mejor que puedo hacer en ggplot:

qplot(data=test, x=x, y=y)+facet_grid(facet.b~facet.a, labeller=label_both)

Según lo indicado por @Hendy, similar a: agregar un eje y secundario a las ggplot2 gráficas - hacerlo perfecto


Como el último ggplot2 usa internamente gtable , es bastante fácil modificar una figura:

library(ggplot2) test <- data.frame(x=1:20, y=21:40, facet.a=rep(c(1,2),10), facet.b=rep(c(1,2), each=20)) p <- qplot(data=test, x=x, y=y, facets=facet.b~facet.a) # get gtable object z <- ggplotGrob(p) library(grid) library(gtable) # add label for right strip z <- gtable_add_cols(z, unit(z$widths[[7]], ''cm''), 7) z <- gtable_add_grob(z, list(rectGrob(gp = gpar(col = NA, fill = gray(0.5))), textGrob("Variable 1", rot = -90, gp = gpar(col = gray(1)))), 4, 8, 6, name = paste(runif(2))) # add label for top strip z <- gtable_add_rows(z, unit(z$heights[[3]], ''cm''), 2) z <- gtable_add_grob(z, list(rectGrob(gp = gpar(col = NA, fill = gray(0.5))), textGrob("Variable 2", gp = gpar(col = gray(1)))), 3, 4, 3, 6, name = paste(runif(2))) # add margins z <- gtable_add_cols(z, unit(1/8, "line"), 7) z <- gtable_add_rows(z, unit(1/8, "line"), 3) # draw it grid.newpage() grid.draw(z)

Por supuesto, puede escribir una función que agregue automáticamente las etiquetas de la tira. Una versión futura de ggplot2 puede tener esta funcionalidad; pero no estoy seguro


Puede haber una mejor manera de hacerlo, pero puede:

fac1 = factor(rep(c(''a'',''b''),10)) fac2 = factor(rep(c(''a'',''b''),10)) data = data.frame(x=1:10, y=1:10, fac1=fac1, fac2=fac2) p = ggplot(data,aes(x,y)) + ggplot2::geom_point() + facet_grid(fac1~fac2) p + theme(plot.margin = unit(c(1.5,1.5,0.2,0.2), "cm")) grid::grid.text(unit(0.98,"npc"),0.5,label = ''label ar right'', rot = 270) # right grid::grid.text(unit(0.5,"npc"),unit(.98,''npc''),label = ''label at top'', rot = 0) # top