当我运行下面的代码时,我得到了错误Error in FUN(X[[i]], ...) : object 'typoft' not found
。我有两个geom_texts,因为我在图的顶部放置了更多的文本。有没有人能帮我一下,让我知道为什么有一个
发布于 2018-08-31 07:19:45
您的问题来自这样一个事实:当您在ggplot()
调用中定义一个aes
时,如果这些设置没有被覆盖,那么它后面的所有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
之所以会发生这种情况,是因为在ggplot
中定义aes
时,需要为x
、y
和fill
设置值。在geom_text
中调用aes
时,x
和y
的值将被覆盖,但fill的值不会被覆盖。所以geom_text
的aes
实际上看起来是这样的:aes(x = x, y = y, label = label, fill = typeoft)
。但是,因为在对象labdat
中没有名为typeoft
的变量,所以它会返回一个错误。
我们可以通过向您的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)
现在,geom_text
的aes
将只包含您告诉它拥有的内容。
https://stackoverflow.com/questions/52106424
复制相似问题