varias superponer studio lineas graficos graficas r ggplot2 annotations r-grid

studio - superponer graficas en r



Añadir una cita de pie de página fuera del área de trazado en R? (3)

Agregando a la respuesta de Brandon Bertelsen: si desea tener la leyenda en la esquina izquierda, agregue

theme(plot.caption = element_text(hjust = 0))

Me gustaría agregar una cita a pie de página a mi trama de cuadrícula de faceta de 3 paneles producida en R. Es una nota al pie para acreditar la fuente de datos. Lo ideal sería tenerlo debajo y fuera de los tres ejes, preferiblemente en la esquina inferior izquierda.

Estoy usando ggplot2 y también ggsave() . Esto significa que no puedo usar soluciones basadas en grid.text() , porque eso solo se basa en la ventana x11() y no se puede agregar al objeto ggplot.

Usando en su lugar png() ...code... dev.off() no parece ser una opción porque necesito los parámetros de cambio de tamaño de ggsave , y encuentro que este comando produce impresiones mejores y más claras (que también son mucho más rápidas, porque No estoy imprimiendo en la pantalla).

Aquí está mi código básico:

p1 <- ggplot(data, aes(date, value)) facet_grid(variable ~ .) + geom_point(aes(y =value), size=1) + theme_bw() + opts(title=mytitle) print(p1) ggsave("FILE.png",width=mywidth, height=myheight, p1, dpi=90)

He intentado:

p1 <- ggplot(data, aes(date, value)) facet_grid(variable ~ .) + geom_point(aes(y =value), size=1) + theme_bw() + opts(title=mytitle) print(p1) grid.text(unit(0.1,"npc"),0.025,label = "Data courtesy of Me") grid.gedit("GRID.text", gp=gpar(fontsize=7)) ggsave("FILE.png",width=mywidth, height=myheight, p1, dpi=90)

Esto coloca apropiadamente la nota al pie en la esquina inferior izquierda de la pantalla x11 (), externa a los gráficos, pero desafortunadamente, como no se aplica al objeto p1, no se guarda con el comando ggsave.

También lo intenté:

p1 <- ggplot(data, aes(date, value)) facet_grid(variable ~ .) + geom_point(aes(y =value), size=1) + theme_bw() + opts(title=mytitle) + annotate("text", label = "Footnote", x = 0, y = 10, size = 5, colour = "black") + print(p1) ggsave("FILE.png",width=mywidth, height=myheight, p1, dpi=90)

Esto se imprime con éxito usando ggsave, sin embargo tiene los siguientes problemas:

  • Se repite 3 veces, en cada una de las 3 facetas, en lugar de 1 vez.
  • Está contenido dentro de las tramas, en lugar de ser externo a ellas.
  • El texto es difícil de colocar --- parece estar usando unidades de trazado (mi eje x es la fecha, por lo que 0 lo pone alrededor de 1970).
  • El tamaño del texto no parece cambiar a pesar de mi parámetro de tamaño.

Un par de enlaces relacionados desde cuando exploré esto ...


ggplot2 ahora tiene esta capacidad de forma nativa sin necesidad de paquetes adicionales. ... + labs(caption = "footnote", ...)

library(ggplot2) ggplot(diamonds, aes(carat, price, color = clarity)) + geom_point() + labs(title = "Diamonds are forever...", subtitle = "Carat weight by Price", caption = "H. Wickham. ggplot2: Elegant Graphics for Data Analysis Springer-Verlag New York, 2009.")


library(gridExtra) library(grid) library(ggplot2) g <- grid.arrange(qplot(1:10, 1:10, colour=1:10) + labs(caption="ggplot2 caption"), bottom = textGrob("grid caption", x = 1, hjust = 1, gp = gpar(fontface = 3L, fontsize = 9))) ggsave("plot.pdf", g)

Editar: tenga en cuenta que esta solución es un poco complementaria al argumento de leyenda reciente agregado a ggplot2, ya que el textoGrupo puede alinearse aquí con respecto a la figura completa, no solo al panel de trazado.