gpt4 book ai didi

R:加权 Joyplot/Ridgeplot/Density Plot?

转载 作者:行者123 更新时间:2023-12-02 15:06:38 34 4
gpt4 key购买 nike

我正在尝试使用 ggridges 包(基于 ggplot2)创建一个 joyplot。一般的想法是 joyplot 创建很好缩放的堆叠密度图。但是,我似乎无法使用加权密度生成其中之一。在创建 joyplot 时,是否可以通过某种方式将采样权重(用于加权密度)纳入密度计算?

这是 ggridges 包的文档链接:https://cran.r-project.org/web/packages/ggridges/ggridges.pdf我知道很多基于 ggplot 的包可以接受额外的美学,但我不知道如何为这种类型的 geom 对象添加权重。

此外,这是 ggplot 中未加权的 joyplot 示例。我正在尝试将其转换为密度根据 pweight 加权的加权图。

# Load package, set seed
library(ggplot)
set.seed(1)

# Create an example dataset
dat <- data.frame(group = c(rep("A",100), rep("B",100)),
pweight = runif(200),
val = runif(200))

# Create an example of an unweighted joyplot
ggplot(dat, aes(x = val, y = group)) + geom_density_ridges(scale= 0.95)

最佳答案

看起来这样做的方法是使用 stat_density而不是默认的 stat_density_ridges。根据您链接到的文档:

Note that the default stat_density_ridges makes joint density estimation across all datasets. This may not generate the desired result when using faceted plots. As an alternative, you can set stat = "density" to use stat_density. In this case, it is required to add the aesthetic mapping height = ..density.. (see examples).

幸运的是,stat_density(不同于stat_density_ridges)理解美学权重并将其传递给底层density称呼。你最终会得到类似的东西:

ggplot(dat, aes(x = val, y = group)) +
geom_density_ridges(aes(height=..density.., # Notice the additional
weight=pweight), # aes mappings
scale= 0.95,
stat="density") # and use of stat_density

..density.. 变量由 stat_density 自动生成。

注意:当您使用 stat_density 时,x 轴范围的行为似乎有点不同:它会将密度图修剪到数据范围内并降低 nice - 看起来像尾部。您可以通过手动扩展 x 轴轻松纠正此问题,但我认为值得一提。

关于R:加权 Joyplot/Ridgeplot/Density Plot?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46655329/

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