查看原文
其他

R包circlize:柱状图用腻了?试试好看的弦状图

生信宝典 2022-03-29

The following article is from 宏基因组 Author 宏基因组

柱状图用腻了?试试好看的弦状图

作者:郑伟 西北农林科技大学

责编:刘永鑫 中科院遗传发育所

弦图简介

总体来讲,弦图是一种可视化微生物物种或基因相对丰度的方法。平时大多数时间我们看到的文章一般都用柱状图表示微生物或者基因的相对丰度,弦图和柱状图最大的区别就在于它不仅可以用来表示微生物物种或者基因的多少,还可以用来表示环境因子和物种或者基因的相关性。之前公众号已经推送过《弦图的基础R包(circlize)的用法》,笔者今天带来的是如何利用弦图表示微生物相对丰度,如果大家用柱状图用腻了,可以用一下弦图,或许会带来耳目一新的感觉。此图主要运用R语言,所采用的R包主要为circlize

数据准备

测试数据和代码,后台回复 circlize 获得下载链接

本文中所采用的数据为微生物的各个门的相对丰度(如选取前10或者丰度较高的门),可以加重复也可以只用各处理的平均值,数据排列如下(本人保存的是csv格式,也可以用txt格式):

代码部分

下面看R语言主要代码部分:

载入R语言包

# 两个包自己用Rstudio直接安装就好
library(statnet)
library(circlize)

数据导入

# setwd(...)# 自己设定工作环境,随自己喜好
# Rmd无需设置工作目录,默认为文件所有目录
data<-read.csv("SC.csv",header=T,row=1)
my.data<-as.matrix(data) # 矩阵化
# 手动设置行列名(可选)
rownames(my.data) <-c("CCK", "CNPK", "GCCK", "GCNPK")
colnames(my.data) <-c("Alphaproteobacteria","Betaproteobacteria","Gammaproteobacteria",
"Deltaproteobacteria","Acidobacteria","Actinobacteria",
"Bacteroidetes","Chloroflexi","Firmicutes",
"Gemmatimonadetes","Planctomycetes","Thaumarchaeota" ,
"Verrucomicrobia","Ascomycota", "Basidiomycota",
"Zygomycota")
# 行和列的命名,这里本人习惯手动命名,如果觉得麻烦的话也可以直接根据输入的文档中的名字自己编辑好

颜色设定

grid.col = NULL

# 定义处理的颜色,这里随便选取了4个颜色,大家可以根据自己的喜好制定好看的配色
grid.col[c("CCK", "CNPK", "GCCK", "GCNPK")] = c("blue", "black", "orange", "chocolate")

# 定义微生物各个门的颜色,
grid.col[colnames(my.data)] = c("lavender", "khaki","mistyrose",
"sienna1", "skyblue", "brown1",
"gold", "maroon", "salmon", "moccasin",
"wheat","black","green","cyan","pink","orange")

画图

# 参数设置
circos.par(gap.degree = c(rep(2, nrow(my.data)-1), 10, rep(2, ncol(my.data)-1), 10),
start.degree = 180)

# 出图,本人这里只用了少部分参数,所有参数见此包的help文档,或者看下文
chordDiagram(my.data,
directional = TRUE,
diffHeight = 0.06,
grid.col = grid.col,
transparency = 0.5)

# 图例制作
legend("right",pch=20,legend=colnames(my.data),
col=grid.col[colnames(my.data)],bty="n",
cex=1,pt.cex=3,border="black") # 设定图例

初期画出来的图如下,此图类似于柱状图,区域面积越大表示相对丰度越高,上面四个为处理,下面的为微生物各个门的相对丰度:

我们目前预览的图看,图例和图区严重重叠。是因为绘图区空间的限制。我们只需在图片输出时调置图片宽大于高即可解决。

保存以上图片

使用pdf函数保存以上图片。

# 设置图片文件名、长宽和字体大小
pdf(file="circlize.pdf", width=8, height=5, pointsize=8)
# 上方绘图和图例代码
chordDiagram(my.data,directional = TRUE,diffHeight = 0.06,grid.col = grid.col, transparency = 0.5)
legend("right",pch=20,legend=colnames(my.data),col=grid.col[colnames(my.data)],bty="n",cex=1,pt.cex=3,border="black")
# 绘图结束后写入文件
dev.off()

现在图例和文件不再重叠。有些门的文字重叠。可以在AI排版软件中手动调整或删除一些丰度小的类别名称。

Circlize包的所有参数(个性化设置)

大家也可以根据自己的喜好调整,整个图的代码还有好多,大家可以根据自己的喜好调整,circlize包给出的所有参数代码如下:具体使用命令?chordDiagram查看

chordDiagram(x, grid.col = NULL, grid.border = NA, transparency = 0.5,
col = NULL, row.col = NULL, column.col = NULL,
order = NULL, directional = 0, xmax = NULL,
symmetric = FALSE, keep.diagonal = FALSE,
direction.type = "diffHeight", diffHeight = convert_height(2, "mm"),
reduce = 1e-5, self.link = 2,
preAllocateTracks = NULL,
annotationTrack = c("name", "grid", "axis"),
annotationTrackHeight = convert_height(c(3, 2), "mm"),
link.border = NA, link.lwd = par("lwd"), link.lty = par("lty"),
link.sort = FALSE, link.decreasing = TRUE,
link.arr.length = ifelse(link.arr.type == "big.arrow", 0.02, 0.4),
link.arr.width = link.arr.length/2,
link.arr.type = "triangle", link.arr.lty = par("lty"),
link.arr.lwd = par("lwd"), link.arr.col = par("col"),
link.largest.ontop = FALSE, link.visible = TRUE,
link.rank = NULL, ...)

笔者个性化弦图

大家可以自由发挥根据自己的喜好出图,下面是本人通过个性化代码配合AI等其他软件出的例图:

作者简介

郑伟:西北农林科技大学资源环境学院,植物营养学专业。研究方向为土壤微生物生态,具体为不同施肥方式及农业措施介导下土壤微生物群落结构及功能基因在土壤养分周转及作物营养吸收方面的相互作用。曾参与国家自然科学基金,农业部公益性项目等多个项目的研究工作。目前发表科研论文近20余篇,相关研究成果以第一作者在Soil Biology Biochemistry、Biology and Fertility of Soils、European Journal of Soil Biology等土壤学领域著名期刊发表。获本专业相关专利2项。在宏基因组公众号发表《生信小白的福音——免费在线分析扩增子数据SILVAngs》《功能预测之Tax4Fun》《Cytoscape:MCODE增强包的网络模块化分析》等。


R统计和作图

猜你喜欢

10000+:菌群分析 宝宝与猫狗 梅毒狂想曲 提DNA发Nature Cell专刊 肠道指挥大脑

系列教程:微生物组入门 Biostar 微生物组  宏基因组

专业技能:学术图表 高分文章 生信宝典 不可或缺的人

一文读懂:宏基因组 寄生虫益处 进化树

必备技能:提问 搜索  Endnote

文献阅读 热心肠 SemanticScholar Geenmedical

扩增子分析:图表解读 分析流程 统计绘图

16S功能预测   PICRUSt  FAPROTAX  Bugbase Tax4Fun

在线工具:16S预测培养基 生信绘图

科研经验:云笔记  云协作 公众号

编程模板: Shell  R Perl

生物科普:  肠道细菌 人体上的生命 生命大跃进  细胞暗战 人体奥秘  

写在后面

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外5000+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。PI请明示身份,另有海内外微生物相关PI群供大佬合作交流。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。

学习16S扩增子、宏基因组科研思路和分析实战,关注“宏基因组”

点击阅读原文,跳转最新文章目录阅读


易生信系列培训课程,扫码获取免费资料

更多阅读

画图三字经 生信视频 生信系列教程 

心得体会 TCGA数据库 Linux Python 

高通量分析 免费在线画图 测序历史 超级增强子

生信学习视频 PPT EXCEL 文章写作 ggplot2

海哥组学 可视化套路 基因组浏览器

色彩搭配 图形排版 互作网络

自学生信

后台回复“生信宝典福利第一波”或点击阅读原文获取教程合集

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

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