gpt4 book ai didi

r - 堆叠直方图,如流式细胞术

转载 作者:行者123 更新时间:2023-12-02 05:30:19 24 4
gpt4 key购买 nike

我正在尝试使用 ggplot 或 base R 来生成如下内容:

enter image description here

我知道如何使用 ggplot2 绘制直方图,并且可以使用 facet_grid 或 facet_wrap 轻松地将它们分开。但我想垂直“交错”它们,这样它们就有一些重叠,如下所示。抱歉,我不允许发布我自己的图片,而且很难找到我想要的更简单的图片。如果可以,我只会发布左上角的面板。

我知道这不是一种特别好的显示数据的方式——但这个决定并不取决于我。

示例数据集如下:

my.data <- as.data.frame(rbind( cbind( rnorm(1e3), 1) , cbind( rnorm(1e3)+2, 2), cbind( rnorm(1e3)+3, 3), cbind( rnorm(1e3)+4, 4)))

我可以用 geom_histogram 绘制它,如下所示:
ggplot(my.data) + geom_histogram(aes(x=V1,fill=as.factor(V2))) + facet_grid( V2~.)

但我希望 y 轴重叠。

最佳答案

require(ggplot2)
require(plyr)

my.data <- as.data.frame(rbind( cbind( rnorm(1e3), 1) , cbind( rnorm(1e3)+2, 2), cbind( rnorm(1e3)+3, 3), cbind( rnorm(1e3)+4, 4)))
my.data$V2=as.factor(my.data$V2)

根据 V2 计算密度
res <- dlply(my.data, .(V2), function(x) density(x$V1))
dd <- ldply(res, function(z){
data.frame(Values = z[["x"]],
V1_density = z[["y"]],
V1_count = z[["y"]]*z[["n"]])
})

根据 V2 添加偏移量
dd$offest=-as.numeric(dd$V2)*0.2 # adapt the 0.2 value as you need
dd$V1_density_offest=dd$V1_density+dd$offest

和情节
ggplot(dd, aes(Values, V1_density_offest, color=V2)) + 
geom_line()+
geom_ribbon(aes(Values, ymin=offest,ymax=V1_density_offest, fill=V2),alpha=0.3)+
scale_y_continuous(breaks=NULL)

results

关于r - 堆叠直方图,如流式细胞术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23852212/

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