2

我想在 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"))

4

2 回答 2

1

以下是我从包作者 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 ~ .)
于 2017-08-17T10:50:34.337 回答
0

问题是您使用了 forx= 2:3和 for y=20:21。X 和 Y 应该只给定一个值/参数,而不是像您的情况那样的向量。如果您更改为x=2and y=20,则绘图显示没有任何错误:

ggplot(mtcars, aes(x = wt, y = mpg)) + geom_point() + facet_grid(vs~.) + annotate("text", x = 2, y = 20, label = c("my label", "label 2"))
于 2017-07-27T11:58:26.547 回答