我正在使用ggplot2来制作直方图:
geom_histogram(aes(x=...), y="..ncount../sum(..ncount..)")
Run Code Online (Sandbox Code Playgroud)
我收到错误:
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)
Run Code Online (Sandbox Code Playgroud)
是什么导致这一般?我对错误感到困惑,因为我没有将变量映射到y
,只是直方图,x
并希望直方图条的高度表示数据的标准化部分(这样所有条形高度总和为100%)数据.)
编辑:如果我想制作密度图geom_density
而不是geom_histogram
,我使用..ncount../sum(..ncount..)
或..scaled..
?我不清楚是什么..scaled..
.
jor*_*ran 41
这里的混乱是一个长期存在的(由详细的警告信息证明),所有这些都是从一开始的stat_bin
.
但是用户通常不会意识到他们的困惑是围绕着的stat_bin
,因为他们在使用任何一个geom_bar
或两个时都会遇到问题geom_histogram
.请注意每个文档:它们都使用stat = "bin"
(在当前的ggplot2版本中,此stat已被分为stat_bin
连续数据和stat_count
离散数据).
但是让我们回来吧.geom_*
将数据的实际渲染控制成某种几何形式.stat_*
只是简单地转换你的数据.这种区别在实践中有点令人困惑,因为stat_bin
默认情况下添加一层意志会调用geom_bar
,因此它与geom_bar
您学习时无法区分.
在任何情况下,请考虑类似"条形"的geom:直方图和条形图.两者显然都会涉及到某些地方的数据分类.但我们的数据可以预先总结或不预先.例如,我们可能想要一个条形图:
x
a
a
a
b
b
b
Run Code Online (Sandbox Code Playgroud)
或者相当于
x y
a 3
b 3
Run Code Online (Sandbox Code Playgroud)
第一个还没有被分类.第二个是预先装箱.两者的默认行为geom_bar
,并geom_histogram
是假设你有没有预先分级数据.因此,他们会尝试在您的值上调用stat_bin
(直方图,现在stat_count
是条形图)x
.
如警告所示,它会尝试将y
您映射到最终的计数.如果您还尝试将y
自己映射到其他变量,则最终会出现在Here Here Be Dragons区域中.映射y
到stat_bin
(..count..
等)返回的变量的函数应该没问题,不应该抛出那个警告(不适合我使用上面的@mnel示例).
外卖这里是一个为geom_bar
如果你已经预先计算的条的高度,始终记得用stat = "identity"
,或者更好的使用较新的geom_col
,它使用stat = "identity"
的默认值.因为geom_histogram
你不太可能预先计算了这些垃圾箱,所以在大多数情况下你只需要记住不要映射y
到超出返回范围的任何东西stat_bin
.
geom_dotplot
使用它自己的binning stat stat_bindot
,我相信这个讨论也适用于此.这种情况通常不是2d分箱情况(geom_bin2d
和geom_hex
)的问题,因为在1d情况下类似z
变量中的分类y
变量没有那么多的灵活性.如果未来的更新开始允许更多花哨的操作2d binning案例,我想这可能成为你必须注意的东西.
对于文档geom_histogram
的状态,这是一个别名stat_bin
和geom_bar
geom_density
使用平滑密度估计的状态文档stat_density
点击链接(或直接查找帮助页面)
stat_bin
该文档stat_bin
描述了如何stat_bin
使用以下(附加)列返回data.frame
计算 bin中的点数
bin中的点密度密度,按比例缩放为1
ncount count,缩放到最大值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..))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15579 次 |
最近记录: |