误差GGPLOT2映射变量y和使用STAT =“bin”的(Error with ggplot2 m

2019-07-27 08:30发布

我使用GGPLOT2进行直方图:

geom_histogram(aes(x=...), y="..ncount../sum(..ncount..)")

我得到的错误:

Mapping a variable to y and also using stat="bin".
  With stat="bin", it will attempt to set the y value to the count of cases in each group.
  This can result in unexpected behavior and will not be allowed in a future version of ggplot2.
  If you want y to represent counts of cases, use stat="bin" and don't map a variable to y.
  If you want y to represent values in the data, use stat="identity".
  See ?geom_bar for examples. (Deprecated; last used in version 0.9.2)

是什么原因导致这个有什么看法? 我感到困惑的错误,因为我不是映射到一个变量y ,只是直方图-ING x和想直方图条的高度来表示数据的标准化分数(例如,所有的酒吧高度一起合计为100 %的数据)。

编辑 :如果我想打一个密度图geom_density代替geom_histogram ,我用..ncount../sum(..ncount..)..scaled.. ? 我不清楚什么..scaled..一样。

Answer 1:

这里的混乱是一个长期存在的一个(就证明了详细的警告信息),与所有开始stat_bin

但是,用户通常不会意识到他们的困惑围绕stat_bin ,因为他们同时使用两种通常会遇到的问题geom_bargeom_histogram 。 注意对于每个文档:它们都使用stat = "bin" (在当前版本GGPLOT2这个统计已经被分成stat_bin的连续数据和stat_count为离散数据)由缺省值。

但是,让我们备份。 geom_*的控制数据的实际呈现成某种几何形式。 stat_*的简单转换数据。 这种区别在实践中是有点混乱,因为添加了一层stat_bin将默认,调用geom_bar ,因此它可以区分似乎geom_bar当你学习。

在任何情况下,考虑“酒吧”般GEOM的:柱状图和条形图。 两者都明确地将某处沿线涉及数据的一些分级。 但是,我们的数据可以是预定总结与否。 例如,我们可能想柱状图来自:

x
a
a
a
b
b
b

或者等价地从

x  y
a  3
b  3

第尚未装箱。 第二个是预分级。 两者的默认行为geom_bargeom_histogram是假设你没有预先分级数据。 因此,他们将尝试呼叫stat_bin (对于直方图,现在stat_count您的条形图) x值。

正如警告说,它会再尝试映射y为你所得到的计数。 如果你试图映射y自己你最终会一些其他的变量此处有怪物的领地。 映射y通过返回的变量的函数stat_bin..count..等)应该没问题,不应该抛出警告(它使用上面@ MNEL的例子并不对我来说)。

外卖这里是一个为geom_bar如果你已经预先计算的条的高度,始终记住使用stat = "identity" ,或更好,但使用新的geom_col它采用stat = "identity"默认情况下。 对于geom_histogram这是非常不可能的,你会预先计算出仓,因此在大多数情况下,你只需要记住不要映射y至超出了从返回什么事stat_bin

geom_dotplot使用它自己的分级统计, stat_bindot ,并讨论在这里也适用,我相信。 这种事情通常一直没有与2D分级情况(一期geom_bin2dgeom_hex ),因为还没有在类似的可用更大的灵活性z变量的分级y在1D情况变量。 如果未来的更新开始允许的2D分级的情况下,这可能我想成为你要注意有什么更有趣的操作。



Answer 2:

对于文档geom_histogram说,它是一个别名stat_bingeom_bar

为文档geom_density使用平滑密度估计值的状态使用产生stat_density

继链接(或者直接找到帮助页面)

stat_bin

对于文档stat_bin介绍如何stat_bin返回具有以下(附加)列data.frame

算上斌点数

在仓点的密度密度,扩展到集成到1

NCOUNT计数,缩放到最大的1

ndensity密度,缩放到最大的1

stat_density

对于文档stat_density介绍如何stat_density返回具有以下(附加)列data.frame

密度密度的估计

分的密度*号-用于堆叠密度图有用

缩放密度估计值,缩放到最大的1


为了产生一个阴谋以相同的规模它会出现你想要..ndensity..stat_bin..scaled..stat_density..density..从两个

ggplot(dd, aes(x=x)) + 
  geom_histogram(aes(y= ..density..)) +  
  geom_density(aes(y=..density..))


ggplot(dd, aes(x=x)) + 
  geom_histogram(aes(y= ..ndensity..)) + 
  geom_density(aes(y=..scaled..))


文章来源: Error with ggplot2 mapping variable to y and using stat=“bin”
标签: r ggplot2