你能让geom_ribbon为缺失值留下空隙吗?

时间:2016-02-17 10:38:17

标签: r ggplot2 ggproto

我正在开始讨论:How can I make geom_area() leave a gap for missing values?。似乎geom_ribbon不再为缺失值留下空白。请尝试在附加的链接中执行可重现的示例。我无法得到所描述的答案。你能吗?

2 个答案:

答案 0 :(得分: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)

得到以下特性:

enter image description here

答案 1 :(得分:0)

我得到的图像与您的图像不同,并且似乎这里发生了问题。有什么建议吗?

enter image description here