`ggplot2`中的`annotate`与`facet_grid`结合使用时报告错误

时间:2017-07-27 09:40:58

标签: r ggplot2 facet-grid

我想在ggplot图中添加两个注释。 如果图表不包含facet_grid,例如p1,则添加此类annotate图层的工作正常,即q1。但是,当我向原始图表添加facet_grid图层时,即p2,然后添加相同的注释'图层,即q2会导致错误报告:

  

错误:美学必须是长度1或与数据(4)相同:标签

有什么建议吗?感谢。

PS,我使用的ggplot2包的版本是2.2.1。

p1 <- ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() p2 <- p1 + facet_grid(vs~.) q1 <- p1 + annotate("text", x = 2:3, y = 20:21, label = c("my label", "label 2")) q2 <- p2 + annotate("text", x = 2:3, y = 20:21, label = c("my label", "label 2"))

2 个答案:

答案 0 :(得分:0)

问题在于您用于y=20:21x=2。 X和Y应该只给出一个值/参数而不是像你的情况那样的向量。如果您更改为y=20ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() + facet_grid(vs~.) + annotate("text", x = 2, y = 20, label = c("my label", "label 2")) ,则会显示没有任何错误的情节:

AGGREGATE(16,..)

答案 1 :(得分:0)

以下是我从包裹作者Hadley Wickham那里得到的答案:

https://github.com/tidyverse/ggplot2/issues/2221

不幸的是,让annotate()自动执行此操作非常困难。相反,只需自己创建数据集即可“手动”完成。

library(ggplot2)
df <- data.frame(wt = 2:3, mpg = 20:21, label = c("my label", "label 2"))
ggplot(mtcars, aes(wt, mpg)) + 
geom_point() +
geom_text(aes(label = label), data = df) + 
facet_grid(vs ~ .)