热点新闻
可视化:density与ridgeline
2023-07-16 16:49  浏览:3246  搜索引擎搜索“手机低淘网”
温馨提示:信息一旦丢失不一定找得到,请务必收藏信息以备急用!本站所有信息均是注册会员发布如遇到侵权请联系文章中的联系方式或客服删除!
联系我时,请说明是在手机低淘网看到的信息,谢谢。
展会发布 展会网站大全 报名观展合作 软文发布

  今天我们来谈谈生信分析中的常规图形 -- 密度图与山脊图 (densityridgeline)。为什么要把这个两图一起介绍呢?因为这两个图关系非常亲密,本质上呈现的意义是相同的。密度图,常用于展示一组变量的取值分布。而山脊图则常用于展示多分组时某一变量在各分组中的取值分布。这么看来,山脊图就像是密度图的团购形式。下面我们就一起来见证一下吧!

density

  首先,我们先绘制密度图看看,使用ggplot2内置数据集diamonds来绘图,这里为了方便跟后面的山脊图做对比,调整了分面和图例的顺序:

library(ggplot2) p <- ggplot(diamonds,aes(x=price,fill=cut)) + geom_density() + facet_grid(factor(cut,levels=c('Ideal','Premium','Very Good','Good','Fair')) ~.) + theme_bw() + guides(title='cut', fill = guide_legend(reverse = TRUE)) p

结果如下:






ridgeline

  在相同的数据基础上,我们使用ggridges包来绘制山脊图:

library(ggridges) p <- ggplot(diamonds, aes(x = price, y = cut, fill = cut)) + geom_density_ridges() + theme_ridges() + theme(legend.position = "none") p

结果如下:






前面说过山脊图是团购形式的密度图,所以这里说一个想要注意的地方,ggridges包不能画只有一个组别的山脊图,意思就是至少得有两个组别。

比较

  从上面的两张图可以看出,从分布的形态来说,密度图和山脊图的结果虽然不能说一模一样,但也可以相提并论了。细节上来说,密度图开始端的曲线呈现了断崖,而山脊图却是连续的曲线。当然,这个差异是可以修正的,下面我们就选取上面数据集的一个子集来说明,选取cut为Ideal的数据来进一步作图。

ideal <- subset(diamonds, cut == 'Ideal') den <- density(ideal$price, n=600) dendata <- data.frame(price=den$x, y=den$y) p <- ggplot(dendata,aes(x=price,y=y)) + geom_polygon(fill='#FDE725FF') + geom_line() + theme_minimal() + scale_y_continuous(breaks=0,labels='Ideal') + labs(y='') p

结果如下:






  现在这个密度图跟上面的山脊图相比,分布形态看起来不能说一模一样,可以说是完全相似。当然,山脊图还是一些其他方面的呈现形式,比如,可以将颜色映射为随X轴值的大小而变化(将函数geom_density_ridges替换为geom_density_ridges_gradient),还可以修改曲线为直方图 (在函数geom_density_ridges里面添加stat="binline"语句)。详细的用法,大家可以自行摸索,这里就不在赘述了。


往期绘图

单细胞:不同亚群的基因平均表达热图
可视化:bubble
可视化:scatterplot
可视化:barplot
可视化:泡泡图

发布人:f4c6****    IP:117.173.23.***     举报/删稿
展会推荐
让朕来说2句
评论
收藏
点赞
转发