gpt4 book ai didi

r - ggplot2 将变量映射到 y 并使用 stat ="bin"时出错

转载 作者:行者123 更新时间:2023-12-03 14:31:27 27 4
gpt4 key购买 nike

我正在使用 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 , 只是直方图 x并希望直方图条的高度表示数据的归一化部分(这样所有条的高度加起来就是数据的 100%。)

编辑:如果我想制作密度图 geom_density而不是 geom_histogram , 我用 ..ncount../sum(..ncount..)..scaled.. ?我不清楚 ..scaled.. 是什么做。

最佳答案

这里的混淆是一个长期存在的混淆(如冗长的警告消息所证明的那样),一切都以 stat_bin 开头。 .

但用户通常不会意识到他们的困惑围绕着 stat_bin ,因为他们在使用 geom_bar 时通常会遇到问题或 geom_histogram .请注意每个文档:它们都使用 stat = "bin" (在当前 ggplot2 版本中,此统计信息默认分为 stat_bin 用于连续数据和 stat_count 用于离散数据)。

但是,让我们备份。 geom_* ' 控制将数据实际呈现为某种几何形式。 stat_*只是转换您的数据。区别在实践中有点困惑,因为添加了一层stat_bin默认情况下,将调用 geom_bar所以它看起来与 geom_bar 没有区别在你学习的时候。

无论如何,请考虑类似“条形”的几何图形:直方图和条形图。两者显然都将涉及沿线某处的一些数据分箱。但我们的数据可以是预先汇总的,也可以不是。例如,我们可能想要一个条形图:

x
a
a
a
b
b
b

或等效地来自
x  y
a 3
b 3

第一个还没有被装箱。第二个是预装箱。 geom_bar 的默认行为和 geom_histogram是假设您没有预先分箱您的数据。所以他们会尝试调用 stat_bin (对于直方图,现在 stat_count 对于条形图)在您的 x 上值(value)观。

正如警告所说,它将尝试映射 y为您计算结果。如果您还尝试映射 y你自己到其他一些变量,你最终会出现在这里有龙的领域。测绘 ystat_bin 返回的变量的函数( ..count.. 等)应该没问题,不应该抛出那个警告(它不适合我使用上面@mnel 的例子)。

这里的要点是 geom_bar如果您已经预先计算了条形的高度,请始终记住使用 stat = "identity" ,或者更好的是使用更新的 geom_col使用 stat = "identity"默认情况下。对于 geom_histogram您不太可能预先计算 bin,因此在大多数情况下,您只需要记住不要映射 y除了从 stat_bin 返回的内容之外的任何内容.
geom_dotplot使用它自己的分箱统计, stat_bindot ,我相信这个讨论也适用于这里。这种事情通常不会成为二维分箱案例( geom_bin2dgeom_hex )的问题,因为在类似的 z 中没有那么多的灵 active 。分箱 y 的变量在一维情况下的变量。如果 future 的更新开始允许对 2d 分箱案例进行更多花哨的操作,我想这可能会成为您必须注意的事情。

关于r - ggplot2 将变量映射到 y 并使用 stat ="bin"时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15651084/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com