科研巨佬的ldquo万水千山图rd

最近,在文献中看到这样一个令人惊艳不已的组合图,如下。很明显,这个图至少是由8个小图表组合而成的,通过坐标轴粗细和图表间隔的不一致可以看出来。可见,熟练使用Ai(Adobeillustrator)也是成为科研巨佬的必备技能。(ThePlantCell,)除去两侧的聚类树和条形图,组合图的中间部分其实是一种比较新颖的山峦图,也称作山脊线图(Ridgelineplots),可以用作图软件一次性画出来。山峦图本质上是多个核密度曲线图的相互重叠组合,当然,你也可以看作是只有半个“小提琴”的横向小提琴图。山峦图的用法与小提琴图、箱形图相似,主要用于展示和比较数据(比如基因的表达量、物种的丰度等)的分布情况,而外形上却具有中国山水画的美感。可以说,能用箱形图、小提琴图展示的数据都以试试山峦图,可能会得到出乎预料的效果。那么,如何绘制这样的山峦图呢?这里推荐使用基于ggplot2的ggridges包。●一、R包安装与数据导入●山峦图的绘制主要用到ggridges包的geom_density_ridges函数,无需统计分析,可直接使用原始数据绘制密度曲线。

#安装ggridges包;#install.packages("ggridges")#载入ggridges和ggplot2包;library(ggridges)library(ggplot2)#读入本地数据;dt-read.csv("test.csv",header=T,row.names=1)#查看数据的前12行;head(dt,12)●二、绘制无分组山峦图●

#建立单样本的映射关系;p1-ggplot(dt,aes(x=expression,y=cluster,color=cluster,fill=cluster))p1

#添加“山峦”图层,查看初始绘图效果;#scale参数设置绘图区域重叠部分的大小,scale=1时刚好没有重叠(以最高的为准),数值越大,重叠部分越多;#alpha设置填充颜色的透明度;p2-p1+geom_density_ridges(scale=1.6,alpha=0.3)p2

#去掉密度曲线两侧的“尾巴”;p3-p1+geom_density_ridges(scale=1.6,alpha=0.5,rel_min_height=0.01)p3参数rel_min_height用于设置曲线的最小高度(相对于对应曲线最大高度的百分比)。一般来说,rel_min_height=0.01或更大时可去掉密度曲线两侧的“尾巴”。

#添加分位线(中位线);#线的样式可选solid、dashed、dotted、dotdash、longdash、twodash等。也可指定单一颜色,如vline_color="black";p3-p1+geom_density_ridges(scale=1.6,alpha=0.4,rel_min_height=0.01,quantile_lines=TRUE,quantiles=0.5,vline_size=0.3,vline_linetype="dashed")p3

#调整坐标轴,修改标题,去掉空余区域;#coord_cartesian(clip="off")可避免图形边缘被绘图区剪切;p4-p3+scale_y_discrete(name="")+scale_x_continuous(name="Expressionlevels")+coord_cartesian(expand=FALSE,clip="off")p4

#自定义颜色,并隐藏图例;mycolor-c("#c1","#00a99e","#6bc72b","#ff5a20","#ff","#")p5-p4+scale_fill_manual(values=rev(mycolor),guide="none")+scale_color_manual(values=rev(mycolor),guide="none")p5#p5+theme_ridges(grid=FALSE)

#自定义图形主题;#去掉panel.background填充颜色;#去掉纵轴的刻度、横轴的网格线;#设置坐标轴线、网格线的颜色、粗细;#Line/bordersize的单位是mm,textsize的单位是pts;#设置绘图区边距,顺序为top,right,bottom,left;mytheme-theme(panel.background=element_rect(fill=NA),plot.margin=margin(t=10,r=10,b=5,l=5,unit="mm"),axis.ticks.y=element_blank(),axis.ticks.x=element_line(colour="grey40",size=0.5),axis.line.x=element_line(colour="grey40",size=0.5),axis.text.x=element_text(size=10),axis.title.x=element_text(size=12),panel.grid.major.y=element_line(colour=rev(mycolor),size=0.5),panel.grid.major.x=element_blank())#应用自定义主题;p5+mytheme当然,也可以令coord_cartesian(expand=TRUE,clip="off"),通过panel.grid.major.y=element_line(colour=NA,size=0.5)隐藏主刻度线,效果如下。●三、绘制分组山峦图●

#建立分组映射并绘制山峦图;p6-ggplot(dt,aes(x=expression,y=cluster,color=sex,fill=sex))+geom_density_ridges(scale=1.6,alpha=0.4,rel_min_height=0.01,quantile_lines=TRUE,quantiles=0.5,vline_size=0.3,vline_linetype="dashed")p6

#自定义图形主题,图形的个性化调整同上,这里不再赘述;mytheme1-theme(panel.background=element_rect(fill=NA),plot.margin=margin(t=10,r=10,b=5,l=5,unit="mm"),axis.ticks.y=element_blank(),axis.ticks.x=element_line(colour="grey40",size=0.5),axis.line.x=element_line(colour="grey40",size=0.5),axis.text.x=element_text(size=10),axis.title.x=element_text(size=12),panel.grid.major.y=element_line(colour=NA,size=0.5),panel.grid.major.x=element_blank())#自定义颜色和图例;mycolor1-c("#00a99e","#6bc72b")p7-p6+scale_y_discrete(name="")+scale_x_continuous(name="Expressionlevels")+coord_cartesian(expand=FALSE,clip="off")+scale_fill_manual(values=mycolor1)+scale_color_manual(values=mycolor1)+guides(fill=guide_legend(override.aes=list(fill=mycolor1,color=NA)))p7+mytheme1这样,分组山峦图的绘制就完成了。除此之外,ggridges包还有很多更复杂的绘图的功能,比如通过使用jittered_points=TRUE,point_shape="

"参数可以添加密度线,如下图,图形颜色还可以使用渐变色或者按照分位线着色等。本次分享就先到这里啦,更多复杂的绘图功能欢迎查看官方的使用教程。链接:

转载请注明地址:http://www.1xbbk.net/jwbrc/945.html


  • 上一篇文章:
  • 下一篇文章:
  • 网站简介 广告合作 发布优势 服务条款 隐私保护 网站地图 版权声明
    冀ICP备19027023号-7