首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流式细胞术中的叠加直方图

流式细胞术中的叠加直方图
EN

Stack Overflow用户
提问于 2014-05-25 05:05:46
回答 5查看 4.9K关注 0票数 3

我正在尝试使用ggplot或base来生成类似于以下内容:

我知道如何使用ggplot2进行直方图处理,并且可以使用facet_grid或facet_wrap轻松地将它们分开。但我想“交错”他们垂直,使他们有一些重叠,如下所示。对不起,我不允许张贴自己的照片,很难找到一个简单的图片,我想要什么。如果可以的话,我只会张贴左上角面板。

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

样本数据集如下:

代码语言:javascript
复制
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绘制如下图:

代码语言:javascript
复制
ggplot(my.data) + geom_histogram(aes(x=V1,fill=as.factor(V2))) + facet_grid( V2~.)

但我想要y轴重叠。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-05-26 14:53:35

代码语言:javascript
复制
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的密度计算

代码语言:javascript
复制
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添加偏移量

代码语言:javascript
复制
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

和情节

代码语言:javascript
复制
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)

票数 11
EN

Stack Overflow用户

发布于 2014-05-25 05:27:59

densityplot()来自生物导体flowViz封装是一种可选择的堆叠密度。

出发地:http://www.bioconductor.org/packages/release/bioc/manuals/flowViz/man/flowViz.pdf

对于flowSets,其思想是将flowSet中所有帧的密度估计图水平堆叠成一个或几个flow参数。在后一种情况下,每个参数将被绘制在一个单独的面板中,即我们对参数的隐含条件。

您可以在这里看到示例可视化:http://www.bioconductor.org/packages/release/bioc/vignettes/flowViz/inst/doc/filters.html

代码语言:javascript
复制
source("http://bioconductor.org/biocLite.R")
biocLite("flowViz")
票数 4
EN

Stack Overflow用户

发布于 2018-10-09 08:37:36

使用ggridges包:

代码语言:javascript
复制
ggplot(my.data, aes(x = V1, y = factor(V2), fill = factor(V2), color = factor(V2))) +
  geom_density_ridges(alpha = 0.5)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23852212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档