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 ...
(no funciona con ggsave)
¿Cómo se etiqueta la barra en ggplot con las etiquetas en otro resultado de prueba?
(está dentro de la trama, no en la trama externa / inferior)
Diferentes caras y tamaños de fuente dentro de las entradas de texto de etiqueta en ggplot2
(no funciona con ggsave)
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.