在R中将geom_path和geom_text添加到同一ggplot中会生成错误

3

我正在绘制一个包含geom_path对象和geom_text对象的ggplot,但遇到了以下问题:

#load the data frames
df1 <- data.frame(x=c(32, 42, 52), y=c(15, 20, 25), grp=c(1, 2, 2), site=c("A", "B", "C"))
df1$grp = factor(df1$grp)
colnames(df1)[3] = "Group"

df2 <- data.frame(x=c(32, 42, 52), y=c(15, 20, 25))

#create basic plot with site name coloured by group 
p = ggplot(df1, aes(x=x, y=y, label=site))
p = p + geom_text(aes(colour=factor(Group)), size=4)
p = p + coord_fixed()

#I try adding a path
p = p + geom_path(data=df2, aes(x=x, y=y)) 

但是出现了错误 在评估(expr, envir, enclos)时出错:找不到对象'site' 有什么想法吗?

2
每个主要的ggplot调用中的美学都应该在每个后续的geom_中出现。我想我应该补充说明的是,解决方案要么是将label = site移动,要么是通过将其设置为NULL来取消在geom_path中的映射。 - joran
谢谢。我添加了标签调用,这起作用了。也许您可以将您的评论移至答案中,这样我就可以接受它了? - Elizabeth
2个回答

7
每个 ggplot 的主调中的美学元素都应该出现在每个后续的 geom_ 中。解决方案是把 label = site 移动或者通过在 geom_path 中将其设置为 NULL 来取消映射。

4
ggplot(df1, aes(x, y)) + 
geom_text(aes(label = site, colour = factor(Group)), size = 4) +
coord_fixed() + geom_path(df2, aes(x, y)) 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接