2010-06-14 13 views
11

Qual è il modo migliore per aggiungere una nota a piè di pagina al fondo di un grafico creato con ggplot2? Ho provato con una combinazione della logica notare qui http://www.r-bloggers.com/r-good-practice-%E2%80%93-adding-footnotes-to-graphics/ così come l'annotazione ggplot2 funzione diggplot2 footnote

p + annotate("text",label="Footnote", 
    x=unit(1,"npc") - unit(2, "mm"),y=unit(2, "mm"), 
    just=c("right", "bottom"),gp=gpar(cex= 0.7, col=grey(.5))) 

ma sto ottenendo l'errore di errore" a as.data.frame.default (x [[i]] , facoltativo = TRUE, stringheAsFactors = stringheAsFactors): non può forzare la classe c ("unit.arithmetic", "unit") in un data.frame ".

+0

Questo funziona se si visualizza la trama in R ma non sembra che funzioni con la funzione ggsave. – user338714

+0

Quindi apri un dispositivo grafico appropriato invece di usare 'ggsave()', ad esempio 'pdf (" nomefile.pdf ", larghezza = 10, altezza = 6); stampa (p); grid.text (...); dev.off() ' – rcs

risposta

12

vorrei usare qualcosa di simile:

pdf("filename.pdf", width=10, height=6) # open an appropriate graphics device 
print(p) 
makeFootnote() # from webpage above (uses grid.text; ggplot2 is based on grid) 
dev.off() 
+0

Funziona alla grande - grazie! – user338714

+2

Sì, questo è eccellente. Inoltre, se hai bisogno di ggplot2 per lasciare un po 'più margine alla tua nota, prova questo: p + theme (plot.margin = unit (c (1,1,2,1), "lines")) – Owen

3

Utilizzare i laboratori() per aggiungere una nota in calce direttamente alla trama.

p <- ggplot(mtcars, aes(mpg, wt, colour = cyl)) + 
    geom_point() 
p + labs(caption = "(Pauloo, et al. 2017)")