我想在我在R中制作的3面板小平面网格图中添加一个脚注引用 . 这是一个信用数据源的脚注 . 理想情况下,我希望将它放在所有三个轴的下方和外部 - 最好是在左下方 .
我正在使用 ggplot2
和 ggsave()
. 这意味着我不能使用基于 grid.text()
的解决方案,因为它只能在 x11()
窗口上绘制,并且无法添加到ggplot对象中 .
使用 png() ...code... dev.off()
似乎不是一个选项,因为我需要 ggsave
's resizing parameters, and find this command produces better, clearer prints (that are also much faster, because I' m不能打印到屏幕上) .
这是我的基本代码:
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)
我试过了:
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)
这适当地将脚注放在x11()显示的左下角,在图表外部,但不幸的是,由于它没有应用于p1对象,因此ggsave命令不会保存它 .
我也尝试过:
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)
这使用ggsave成功打印,但它有以下问题:
-
在3个方面的每个方面重复3次,而不是1次 .
-
它包含在图中,而不是在图外部 .
-
文本难以放置---似乎是使用绘图单位(我的x轴是日期,因此0将其置于1970年左右) .
-
尽管我的尺寸参数,文字大小似乎没有变化 .
当我探索这个时,有几个相关的链接......
(不适用于ggsave)
(在情节内,不在外部/下面的情节)
(不适用于ggsave)
3 回答
添加到Brandon Bertelsen的答案:如果你想在左下角加上 Headers ,请添加
编辑:请注意,此解决方案与添加到ggplot2的最近 Headers 参数有些互补,因为textGrob在这里可以与整个图形对齐,而不仅仅是绘图面板 .
ggplot2现在具有此功能,无需额外的包 .
... + labs(caption = "footnote", ...)