查看原文
其他

基于R语言的微生物群落组成多样性分析——物种丰度可视化之弦图(Chord Diagram)

王志山 科研后花园 2023-09-08


引言



      上一期内容我们介绍了基于R语言使用热图(Heatmap)对微生物丰度进行展示,今天这期内容主要介绍如何使用弦图(Chord Diagram)来展示物种丰度的计算结果!



正文——代码
1

工作目录设置及R包的加载





rm(list=ls())setwd("D:\\桌面\\SCI论文写作与绘图物种丰度计算及可视化")#安装、加载包install.packages("circlize")install.packages("statnet")library(circlize)library(statnet)


2

加载数据并对其进行处理





#准备数据(此前计算丰度生成的数据)data <- read.table("Genus_x.txt",sep="\t",header = T,row.names = 1,check.names = F)data <- as.matrix(m)#转换数据格式#生成作图数据df <- data.frame(from = rep(rownames(data), ncol(data)), to = rep(colnames(data), each = nrow(data)), value = as.vector(data))



3

绘图





1)颜色设定
color=NULLcolor[c("A","B","C","D","E")]=c("blue","red","yellow","green","pink")color[rownames(data)]=c("#40A4D8","#33BEB7","#B2C224","#FECC2F","#FBA127", "#F66320","#DB3937","#A463D7","#0C5BCE","grey","black")

2)绘图

chordDiagram(df, grid.col =color,#颜色             annotationTrack = "grid", transparency = 0.2,#透明度 link.lwd = 0.00001,#线条宽度 link.lty = 1, # 线路类型 link.border = 0,#边框颜色 directional = -1,#表示线条的方向,0代表没有方向,1代表正向,-1代表反向,2代表双向 diffHeight = mm_h(3),#外圈和中间连线的间隔 direction.type = c("diffHeight","arrows"), #线条是否带有箭头 link.arr.type = "big.arrow",#箭头类型 annotationTrackHeight = c(0.04, 0.1))#网格高度

3)添加标签并设置标签方向

circos.track(track.index = 1, panel.fun = function(x, y) { circos.text(CELL_META$xcenter, CELL_META$ylim[1], CELL_META$sector.index, facing = "clockwise", niceFacing = T, adj = c(-0.5, 0.5), cex = 0.8) circos.axis(h = "top", labels.cex = 0.4,labels.niceFacing = F, labels.pos.adjust =F)}, bg.border = NA)

4)生成图例

legend("right",pch=20,legend=rownames(data), col=color[rownames(data)],bty="n", cex=1,pt.cex=3,border="black")

     由于绘图板大小限制,所以此时我们看到生成的图例与标签排版混乱,互相重叠,此时需要我们将其保存成PDF以将图例和图形主体部分分开。




4

保存





pdf(file="1.pdf", width=9, height=5, pointsize=8)chordDiagram(df, grid.col =color, annotationTrack = "grid",#diy添加label和axis transparency = 0.2,#透明度 link.lwd = 0.00001,#线条宽度 link.lty = 1, # 线路类型 link.border = 0,#边框颜色 directional = -1,#表示线条的方向,0代表没有方向,1代表正向,-1代表反向,2代表双向 diffHeight = mm_h(3),#外圈和中间连线的间隔 direction.type = c("diffHeight","arrows"), #线条是否带有箭头 link.arr.type = "big.arrow",#箭头类型 annotationTrackHeight = c(0.04, 0.1))#网格高度circos.track(track.index = 1, panel.fun = function(x, y) { circos.text(CELL_META$xcenter, CELL_META$ylim[1], CELL_META$sector.index, facing = "clockwise", niceFacing = T, adj = c(-0.5, 0.5), cex = 0.8) circos.axis(h = "top", labels.cex = 0.4,labels.niceFacing = F, labels.pos.adjust =F)}, bg.border = NA)legend("right",pch=20,legend=rownames(data), col=color[rownames(data)],bty="n", cex=1,pt.cex=3,border="black") # 设定图例dev.off()

此时图例已经和图形主体部分分开,但是图中标签还是比较混乱,需要我们使用AI进行美化。




5

AI美化







源码及数据在后台回复“Chord”获取!!!



欢迎大家点赞、转发并点亮在看,让更多朋友看到!!!


更多推荐

基于R语言的微生物群落组成多样性分析——物种丰度计算及可视化

EndNote文献管理软件如何实现中英文献混合排版?

基于R语言的微生物群落组成多样性分析—β多样性之组间差异性检验

Endnote文献管理软件中怎么实现中文文献的管理及插入?

基于R语言的微生物群落组成多样性分析—β多样性之PCoA分析

如何快速查找期刊名称缩写

基于R语言的微生物群落组成多样性分析——α多样性及其可视化

R可视化—数据的多重比较及字母标记

进化树美化——evolview基本命令速查与教程    

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存