运行下面的代码时,出现错误Error in FUN(X[[i]], ...) : object 'typoft' not found
。我有两个geom_texts,因为我在图的上方放置了更多文本。谁能在这里帮助我,让我知道为什么会有一个
答案 0 :(得分:2)
您的问题出在以下事实上:在aes
调用中定义ggplot()
时,这些设置会被其后的所有geom_*
继承,如果它们未被覆盖。
如果我们将您的问题简化为最小形式,我们可以清楚地看到这一点。我们可以仅使用最后一个geom_text
复制您的问题:
ggplot(gb, aes(x = y, y = y1, fill = typeoft)) +
geom_text(data = labdat, aes(x = x,y = y,label = label))
Error in FUN(X[[i]], ...) : object 'typeoft' not found
之所以发生这种情况,是因为在aes
中定义ggplot
时,需要为x
,y
和fill
设置一个值。当您在aes
中调用geom_text
时,x
和y
的值将被覆盖,但fill的值不会被覆盖。因此,aes
的{{1}}实际上是这样的:geom_text
。但是,由于对象aes(x = x, y = y, label = label, fill = typeoft)
中没有名为typeoft
的变量,它将返回错误。
我们可以通过为您的labdat
提供参数geom_text
来停止这种行为:
inherit.aes = FALSE
现在,# This works!
ggplot(gb, aes(x = y, y = y1, fill = typeoft)) +
geom_text(data = labdat,aes(x = x, y = y, label = label), inherit.aes = FALSE)
的{{1}}仅包含您告诉它的内容。