我正在跟进一个讨论,开始于:如何让 geom_area() 为缺失值留下空白?. 似乎 geom_ribbon 不再为缺失值留下空白。请尝试执行附加链接中的可重现示例。我无法得到描述的答案。你能?
问问题
1379 次
1 回答
6
看起来像中的一个错误ggplot2
,似乎缺少handle_na
一个需要添加的功能,作为处理 NA 值的新统一方式的一部分。
更新:
这里的第一篇文章改进了一个全新ggproto
的方法来解决这个问题,但我意识到作为一种单行解决方法,您可以handle_na
像我在下面的代码中那样覆盖该函数(# fix GeomRibbon
):
require(dplyr)
require(ggplot2)
require(grid)
set.seed(1)
test <- data.frame(x = rep(1:10, 3), y = abs(rnorm(30)), z = rep(LETTERS[1:3], 10))
%>% arrange(x, z)
test[test$x == 4, "y"] <- NA
test$ymax <- test$y
test$ymin <- 0
zl <- levels(test$z)
for (i in 2:length(zl)) {
zi <- test$z == zl[i]
zi_1 <- test$z == zl[i - 1]
test$ymin[zi] <- test$ymax[zi_1]
test$ymax[zi] <- test$ymin[zi] + test$ymax[zi]
}
# fix GeomRibbon
GeomRibbon$handle_na <- function(data, params) { data }
ggplot(test, aes(x = x,y=y, ymax = ymax, ymin = ymin, fill = z)) +
geom_ribbon() +
scale_x_continuous(breaks = 1:10)
产生:
于 2016-02-17T15:33:19.097 回答