首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在R中的绘图区之外添加脚注引用?

在R中的绘图区之外添加脚注引用?
EN

Stack Overflow用户
提问于 2012-04-18 03:22:26
回答 3查看 41.5K关注 0票数 36

我想在我用R制作的3-panel facet网格图中添加一个脚注引用。这是一个脚注,以表扬数据来源。理想情况下,我希望它位于所有三个轴的下方和外部-最好是在左下角。

我使用的是ggplot2ggsave()。这意味着我不能使用grid.text()-based解决方案,因为它只在x11()窗口上绘制,不能添加到x11()对象中。

使用png() ...code... dev.off()似乎不是一个选择,因为我需要ggsave的大小调整参数,并且发现这个命令可以产生更好、更清晰的打印结果(速度也更快,因为我没有打印到屏幕上)。

下面是我的基本代码:

代码语言:javascript
复制
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)

我试过了:

代码语言:javascript
复制
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命令保存。

我也尝试过:

代码语言:javascript
复制
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左右)。
  • 尽管我设置了size参数,但文本大小似乎没有变化。

我探索这篇文章的时候有几个相关的链接...

(不适用于ggsave)

(位于图内,而不是外部/在plot)

(不适用于ggsave)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-18 03:51:46

代码语言:javascript
复制
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)

编辑:请注意,此解决方案在某种程度上是对最近添加到ggplot2的标题参数的补充,因为textGrob可以相对于整个图形对齐,而不仅仅是绘图面板。

票数 36
EN

Stack Overflow用户

发布于 2017-02-17 07:33:01

ggplot2现在不需要额外的包就能实现这一功能。... + labs(caption = "footnote", ...)

代码语言:javascript
复制
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.")

票数 64
EN

Stack Overflow用户

发布于 2018-04-04 17:49:51

补充到Brandon Bertelsen的回答:如果你想让标题出现在左角,添加

代码语言:javascript
复制
theme(plot.caption = element_text(hjust = 0))
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10197738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档