一图胜千言:用ggridges画的山脊图,让你的数据说话






一图胜千言:用ggridges画的山脊图,让你的数据说话

小果  生信果  2024-02-20 19:00:23

收录于话题

#R代码#生信绘图

Hello,各位小伙伴大家好,几天小果给大家介绍一种用于可视化数据分布的图表类型。它通常用于展示多个组或类别的数据在一个连续的轴上分布,并突显它们之间的相对密度。这种图表的名称源于其图形外观类似于山脊,除此之外,还被叫做也叫峰峦图和山峦图。
当然,正因为它能对多个数据进行统一展示,所以可以帮助大家进行相应生物信息学数据的展示。比如在描写基因表达分布时,山脊图可以用于显示不同基因或基因集的表达分布,也可用于可视化转录因子结合位点在基因组中的分布;在对蛋白质质谱数据进行可视化的时候,我们还可以利用山脊图表现不同实验条件下的蛋白质丰度。
拥有强大可视化功能的包叫做ggridges,没错,它也是ggplot2的拓展包,正因如此,才能增加对图形的可塑性而满足更多小伙伴的个性化要求。这里呢小果还要说明一下,我们这次做的数据是小果从大的数据中分出来的,原本的数据量是非常大的,我们操作占用内存比较大,所以建议各位小伙伴可以使用服务器去运行,如果没有自己的服务器也没有关系,可以欢迎联系我们使用服务器租赁哦~



公众号后台回复“111”

领取本篇代码、基因集或示例数据等文件

文件编号:240218

需要租赁服务器的小伙伴可以扫码添加小果,此外小果还提供生信分析,思路设计,文献复现等,有需要的小伙伴欢迎来撩~

那就开始我们今天的练习吧!
#安装与调用包install.packages('ggridges')library(ggridges)library(ggplot2)library(RColorBrewer)#读入数据data <- read.table('输入数据.txt',sep = 't',header = 1)head(data)
   
#简单出图P1 <- ggplot(data, aes(x = value, y = location)) +   #对图形进行大致描绘  geom_density_ridges(aes(fill = location))   #调用ggridges,设置填充变量P1
#改变颜色,根据变量的数量添加颜色P2 <- ggplot(data, aes(x = value, y = location)) +   #对图形进行大致描绘  geom_density_ridges(aes(fill = location)) +   #调用ggridges,设置填充变量  scale_fill_manual(values = c("#00AFBB", "#E7B800", "#FC4E07",'black', 'red'))  #对每个变量进行颜色改变    P2
#根据R语言色板进行颜色改变P3 <- ggplot(data, aes(x = value, y = location)) +   #对图形进行大致描绘  geom_density_ridges(aes(fill = location)) +  #调用ggridges,设置填充变量  scale_fill_manual(values = c(brewer.pal(5,'Set3')))  #对每个变量进行颜色改变P3
   
#渐变颜色P4 <- ggplot(data,aes(x = value, y = location)) +   geom_density_ridges_gradient(aes(fill = ..x..),  #不需改变                               scale = 1.5,                               rel_min_height = 0.01) +  # 剪掉拖尾的尾巴,相对于任何密度曲线的最高点的百分比截止值  scale_fill_gradientn(    colours = c("#0D0887FF", "#CC4678FF", "#F0F921FF"),    name = "value"   #图例名称  )+  labs(title = 'Microbial populations in different locations')P4
   
#添加数据点P5 <- ggplot(data,aes(x = value, y = location)) +   geom_density_ridges_gradient(aes(fill = ..x..),  #不需改变                               scale = 1.5,  #山风的高度                               rel_min_height = 0.01,  #对拖尾的处理,相对于任何密度曲线的最高点的百分比截止值                               jittered_points = TRUE, #是否展示数据点                               alpha = 0.5, #点的透明度                               point_size = 1.3) +    scale_fill_gradientn(    colours = c("#0D0887FF", "#CC4678FF", "#F0F921FF"),    name = "value"   #图例名称  )+  labs(title = 'Microbial populations in different locations') +  theme_bw()    P5
以上就是今天的全部代练内容哦,是不是很简单呢,一些代码的注释,小果都给出来了哦,赶快练习吧!其实不仅是以上提到的应用场景,小果更喜欢在基因组突变和表观遗传学上面使用山脊图,因为染色体是有长度的,而因此突变的位点也是具有相应的定位的,再加上各真核物种的染色体数目较多,所以在这方面的应用往往会获得较好的出图效果,与此相同,在解释DNA甲基化数据上,山脊图也有得天独厚的应用场景。
那么小果另一个使用的场景就是生存分析,在生存分析中,我们可以用山脊图显示不同生存组群中的生存曲线的密度分布,有助于观察生存时间的分布模式。总的来说,山脊图是一种有助于在多个条件或样本组之间比较连续型数据分布的可视化工具,可以提供更全面的了解和对比数据的方式。
看到这里,是不是觉得山脊图的应用范围、应用空间很大呢?其实就是因为山脊图的优势,才被多个研究者所喜爱,正如《Single-cell RNA sequencing identifies a population of human liver-type ILC1s》文章中的下图所示,不仅利用山脊图展现了实验组和对照组的结果比较,还展示出不同刺激条件下几种细胞的细胞因子的染色情况。其实不仅如此,本研究的数据量较大,如果想要使用正常的柱状图或折线图来展示的话肯定极为繁琐且不易读懂,但当我们改变可视化方法,不仅能使我们数据完美的展现出来,还能使我们的文章让人眼前一亮,抓住编辑和审稿人的心哦~而利用一张图展现多维数据,这正是我们利用山脊图想要达成的目的,各位小伙伴快来练习吧!    
但是,如果大家并不想在可视化上花费太多时间,可以来小果自己的云生信平台哦,里面有多种图形可视化的成熟代码,数据直接上传后直接就会出图哦,快来加入吧~
http://www.biocloudservice.com/home.html

小果还提供思路设计、定制生信分析、文献思路复现;有需要的小伙伴欢迎直接扫码咨询小果,竭诚为您的科研助力!


定制生信分析

服务器租赁

扫码咨询小果


往期回顾

01

1024G存储的生信服务器,两人成团,1人免单!

02

单个数据库用腻了?多数据库“组合拳”带你打开免疫浸润新思路!

03

孟德尔随机化的准备工作,GWAS数据的网站下载方法

04

跟着小果学复现-手把手带你拿下IF=46.9Nature 级别的主成分分析(PCA)图!!