当我在与orgeom_abline
相同的情节中使用时出现错误,我不明白为什么。例如facet_wrap
facet_grid
# Example data
ex <- data.frame(x=1:10, y=1:10, f=gl(2, 5))
ggplot() +
geom_point(data=ex, aes(x=x, y=y)) +
geom_abline(slope=1, intercept=0) +
facet_wrap(~f)
原因Error in if (empty(data)) { : missing value where TRUE/FALSE needed
。
上面我在geom_point
图层中设置了数据,因为稍后我将添加来自不同数据帧的数据。这与问题有关,因为当我在基础层中设置数据时,我得到一个不同的错误:
ggplot(ex, aes(x=x, y=y)) +
geom_abline(slope=1, intercept=0) +
facet_wrap(~f)
Error in as.environment(where) : 'where' is missing
解决方法
有一个简单的解决方法:如果我制作一个数据框来定义一条 1:1 线并使用它绘制它,geom_line
我得到的图基本上与我从geom_abline
...
# Define a 1:1 line with data
one_to_one <- data.frame(xO=range(ex$totalcells), yO=range(ex$totalcells))
# Plot the 1:1 line with geom_line
ggplot() +
geom_point(data=ex, aes(x=x, y=y)) +
geom_line(data=one_to_one, aes(x=xO, y=yO), colour="black") +
facet_wrap(~f)
...所以这个问题更多的是关于为什么会出现这些错误(以及它们是否代表错误或预期的行为),而不是如何解决问题。