【问题标题】:Removed data points in geom_bar histogram删除了 geom_bar 直方图中的数据点
【发布时间】:2017-10-15 17:11:40
【问题描述】:

我是 R 的新手,但尽我所能学习。在绘制多面密度图直方图时,我收到以下消息。

警告消息:已删除包含缺失值的 ### 行 (geom_bar)。

我已阅读该消息可能是由于 x 轴问题未显示所有数据点,但是,经过调查,它似乎并非如此。

错误似乎在 geom_histogram 的 "position = "fill" " 部分。当 position = "fill" 被移除时,不会产生错误。

非常感谢任何帮助或建议。

library(ggplot2)

df <- data.frame(recividism = sample(0:2, 100, replace = T),
                 TotalDays = sample(15:1000, 100, replace = T),
                 NumEnroll = sample(1:7, 100, replace = T))

df$recividism <- as.factor(df$recividism)

levels(df$recividism) <- c("Not Perm", "Perm", "Rec")

ggplot(data = df, aes(x = TotalDays)) + 
  geom_histogram(aes(fill = recividism), position = "fill" ) + 
  facet_grid(facets = NumEnroll ~ .)

【问题讨论】:

    标签: r ggplot2 histogram


    【解决方案1】:

    这有点令人困惑,我同意。显然,没有真正的缺失数据。正如你所说,如果你是stack 而不是fill,一切都很好。

    发生了什么,ggplot 在内部为每个 x 按组(在本例中为颜色)按方面组合创建了一个表。在stack 的情况下,没有任何值的组合不会被静默地绘制出来。这是因为它们叠加到零。但是对于fill,有一个除以总数,因为总数为0,所以答案将是Inf,但设置为NA

    你可以看到这个:

    p <- ggplot(data = df, aes(x = TotalDays)) + 
      geom_histogram(aes(fill = recividism), position = "fill" ) + 
      facet_grid(facets = NumEnroll ~ .)
    
    head(ggplot_build(p)$data[[1]], 10)
    

    演出:

          fill  y count         x      xmin      xmax     density ncount ndensity PANEL group ymin ymax colour size linetype alpha
    1  #619CFF NA     0  33.86207  16.93103  50.79310 0.000000000      0   0.0000     1     3   NA   NA     NA  0.5        1    NA
    2  #00BA38 NA     0  33.86207  16.93103  50.79310 0.000000000      0   0.0000     1     2   NA   NA     NA  0.5        1    NA
    3  #F8766D NA     0  33.86207  16.93103  50.79310 0.000000000      0   0.0000     1     1   NA   NA     NA  0.5        1    NA
    4  #619CFF NA     0  67.72414  50.79310  84.65517 0.000000000      0   0.0000     1     3   NA   NA     NA  0.5        1    NA
    5  #00BA38 NA     0  67.72414  50.79310  84.65517 0.000000000      0   0.0000     1     2   NA   NA     NA  0.5        1    NA
    6  #F8766D NA     0  67.72414  50.79310  84.65517 0.000000000      0   0.0000     1     1   NA   NA     NA  0.5        1    NA
    7  #619CFF  1     1 101.58621  84.65517 118.51724 0.007382892      1 135.4483     1     3    0    1     NA  0.5        1    NA
    8  #00BA38  1     0 101.58621  84.65517 118.51724 0.000000000      0   0.0000     1     2    1    1     NA  0.5        1    NA
    9  #F8766D  1     0 101.58621  84.65517 118.51724 0.000000000      0   0.0000     1     1    1    1     NA  0.5        1    NA
    10 #619CFF NA     0 135.44828 118.51724 152.37931 0.000000000      0   0.0000     1     3   NA   NA     NA  0.5        1    NA
    

    您可以在很多行中看到NAs 与y,这就是您收到警告的地方。

    希望能把事情弄清楚一点。所以事实证明它确实发生了,因为你没有某些级别的 x 的数据。但这还不是全部。

    【讨论】:

    • 感谢您的回答。只是为了澄清,如果在 facet 和 bin 中没有要显示类别的信息,则 NA 将显示在从用于绘制填充直方图的基础数据创建的表中。接下来,在绘制多面直方图时,ggplot 会从表中删除所有 NA……这就是所谓的“缺失”或“移除”值?
    • 从技术上讲,它们不是直方图,否则不正确!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多