2010-06-14 10 views
11

Quelle est la meilleure façon d'ajouter une note au bas d'un graphique créé avec ggplot2? Je l'ai essayé d'utiliser une combinaison de la logique ici http://www.r-bloggers.com/r-good-practice-%E2%80%93-adding-footnotes-to-graphics/ noté ainsi que la fonction d'annoter ggplot2ggplot2 note de bas de page

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

mais je reçois l'erreur « Erreur dans as.data.frame.default (x [[i]] , optionnel = TRUE, stringsAsFactors = stringsAsFactors): ne peut pas contraindre la classe c ("unit.arithmetic", "unit") dans un data.frame ".

+0

Cela fonctionne si vous affichez le tracé dans R mais il ne semble pas que cela fonctionne avec la fonction ggsave. – user338714

+0

Puis ouvrez un périphérique graphique approprié au lieu d'utiliser 'ggsave()', par exemple, 'pdf (" filename.pdf ", width = 10, height = 6); imprimer (p); grid.text (...); dev.off() ' – rcs

Répondre

12

Je voudrais utiliser quelque chose comme ça:

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

Cela fonctionne très bien - merci! – user338714

+2

Oui, c'est excellent. Aussi, si vous avez besoin de ggplot2 pour laisser un peu plus de marge pour votre note, essayez ceci: p + theme (plot.margin = unit (c (1,1,2,1), "lines")) – Owen

3

Utilisez la fonction des laboratoires() pour ajouter une note directement à l'intrigue.

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