A menudo tienen valores numéricos de las facetas.
Deseo aportar la información suficiente para interpretar estas facetas valores en una forma complementaria de título, similar a la de los títulos de los ejes.
La etiquetadora de opciones de repetir mucho innecesario de texto y se pueden utilizar por más tiempo variable títulos.

Alguna sugerencia?

El valor predeterminado:

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)

¿Cómo agregar un general de la etiqueta de las facetas en ggplot2?

Lo que me gustaría:

¿Cómo agregar un general de la etiqueta de las facetas en ggplot2?

Lo mejor que puedo hacer en ggplot:

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

¿Cómo agregar un general de la etiqueta de las facetas en ggplot2?

Según lo indicado por @Hendy, similar a:
añadir un secundario eje y a ggplot2 parcelas – la hacen perfecta

  • La vaca sagrada. Justo estaba buscando esto, encontrado a través de google… y ahora a ver de que se le pidió hace un minuto. Esta pregunta parece estar haciendo la misma cosa con base en su comentario, a pesar del título que podría implicar lo contrario. Gran maquetas para ilustrar. Esto es exactamente mi problema, sería bueno si no tengo que explicar mi numérico faceta categorías. El gráfico habla por sí mismo, con una simple etiqueta explicar las facetas variables.
  • Le pregunté a un pregunta similar en el pasado.
  • Me preguntó con Winston Chang (no sé su MANERA de manejar), uno de los principales ggplot los desarrolladores, a través de correo electrónico. Él no piensa que esto es en la actualidad una opción, pero puede considerar la adición. Él me sugirió que añadir un problema en github, así que lo hice
  • Sí, creo que es una gran idea, pero no tienes idea de lo difícil que es hacerlo en general.
  • Parece que esto apareció en la lista de correo y Winston hágamelo saber. Él creó una rama con la aplicación general de este por la parte superior de las etiquetas. Ver el hilo de aquí. @hadley: estás en lo correcto. No tengo idea de lo difícil que es hacerlo en general. Si esto no sucede nunca… mi gratitud por ggplot todavía prevalece 🙂
  • En algún momento yo deje de tratar de bregar R/ggplot2 y hacer algunas modificaciones deseadas utilizando un editor de imágenes.
  • En la segunda lo que dijo Andy. Guardar el gráfico en formato SVG, del pop y el resultado en un editor vectorial, tales como Inkscape. Usted puede editar la trama perfectamente. Es una opción en tu caso?
  • cualquier actualización sobre las mejores prácticas aquí?

3 Comentarios

  1. 45

    Como la última ggplot2 utiliza gtable internamente, es muy 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)

    ¿Cómo agregar un general de la etiqueta de las facetas en ggplot2?

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

    • – Me estoy preguntando si esto es todavía el más limpio de enfoque, a partir de la versión 0.9.3.1. No veo algo que se parece a «este fuctionality» en la documentación más reciente docs.ggplot2.org/0.9.3.1
    • Versión 0.9.3.1 proporciona ggplotGrob() que es el mismo como ggplot_gtable(ggplot_build()). Creo que esta es todavía la mejor manera.
    • Este enfoque sobrescribe la leyenda que cuando no es uno. Me pregunto si hay una manera de evitar esto.
    • Si no me equivoco, esta solución no es más válido como algunas funciones están ahora en desuso.
    • pruébalo ahora
    • Oh, sí, me di cuenta, pero se perdió la oportunidad para hacer de la edición que hizo. He utilizado este «tipo de código» en un número de presentación ya. Es muy práctico. Gracias funciona bien!
    • Esto no es trabajar con ggplot2 3.2.1 y R 3.6.1. No hay mensaje de error, pero no tengo las etiquetas en la gráfica resultante.

  2. 2

    Puede haber una forma mejor de hacerlo, pero usted 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
  3. 1

    Además con el método descrito por kohske, usted puede agregar un borde a las cajas añadido por el cambio de

    col=NA

    a

    col=gray(0.5), linetype=1

    También, cambiar

    fill=gray(0.5)

    para

    fill=grey(0.8)

    y

    gp=gpar(col=gray(1))

    a

    gp=gpar(col=gray(0))

    Si quieres las nuevas barras para que coincida con el aspecto de las etiquetas de

    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)))

Dejar respuesta

Please enter your comment!
Please enter your name here