Je voudrais ajouter une citation de note de bas de page à mon tracé de grille à trois facettes produit en R. C'est une note de bas de page pour créditer la source de données. J'aimerais idéalement l'avoir en dessous et à l'extérieur des trois axes --- de préférence en bas à gauche.
J'utilise ggplot2
Et aussi ggsave()
. Cela signifie que je ne peux pas utiliser de solutions basées sur grid.text()
, car cela ne s'appuie que sur la fenêtre x11()
et ne peut pas être ajouté à l'objet ggplot.
Utiliser à la place png() ...code... dev.off()
ne semble pas être une option car j'ai besoin des paramètres de redimensionnement de ggsave
, et trouver cette commande produit des impressions meilleures et plus claires (qui sont également beaucoup plus rapides, car je n'imprime pas à l'écran).
Voici mon code de base:
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)
J'ai essayé:
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)
Cela place correctement la note de bas de page dans le coin inférieur gauche de l'affichage x11 (), à l'extérieur des tracés, mais malheureusement, comme elle n'est pas appliquée à l'objet p1, elle n'est pas enregistrée par la commande ggsave.
J'ai aussi essayé:
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)
Cela s'imprime avec succès à l'aide de ggsave, mais il présente les problèmes suivants:
Quelques liens connexes depuis que j'ai exploré cela ...
(ne fonctionne pas avec ggsave)
Comment étiqueter le barplot dans ggplot avec les étiquettes dans un autre résultat de test?
(est à l'intérieur de l'intrigue, pas externe/sous l'intrigue)
Différentes faces et tailles de police dans les entrées de texte d'étiquette dans ggplot2
(ne fonctionne pas avec ggsave)
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)
Edit: notez que cette solution est quelque peu complémentaire à l'argument de légende récent ajouté à ggplot2, car textGrob peut ici être aligné par rapport à la figure entière, pas seulement au panneau de tracé.
ggplot2 a maintenant cette capacité en mode natif sans besoin de packages supplémentaires. ... + 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.")
Ajout à la réponse de Brandon Bertelsen: si vous voulez avoir la légende dans le coin gauche, ajoutez
theme(plot.caption = element_text(hjust = 0))