私は以下で始まった議論をフォローアップしています:どうすれば geom_area() が欠落している値のためにギャップを残すことができますか? . geom_ribbon が欠損値のギャップを残さないようです。添付リンクの再現可能な例を実行してみてください。説明されている答えが得られません。あなたはできる?
1379 次
1 に答える
6
のバグのようです。NA 値を処理する新しい統一された方法の一部として追加する必要がある関数がggplot2
欠落しているようです。handle_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 に答える