我想在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"))
答案 0 :(得分:0)
问题在于您用于y=20:21
和x=2
。 X和Y应该只给出一个值/参数而不是像你的情况那样的向量。如果您更改为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"))
,则会显示没有任何错误的情节:
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 ~ .)