2012-09-27 48 views
3

我绘制geom_path对象,并在同一ggplot一个geom_text对象,但我遇到了以下问题:添加geom_path和geom_text相同的ggplot生成R错误

#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)) 

但得到的错误 错误在eval(expr,envir,enclos):object'site'not found

任何想法?

+2

主'ggplot'调用中的每个美学都在随后的'geom_'中。我想我应该补充一点,解决办法是将'label = site'移动到'geom_path'中,或者将它解除映射为NULL。 – joran

+0

谢谢。我添加了标签调用并且工作。也许你会评论一个答案,所以我可以接受它? – Elizabeth

回答

7

主要ggplot调用中的每种美学都会在每个后续geom_中预期。解决方法是移动label = site或将其取消映射到geom_path,方法是将其设置为NULL

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