woodcorpse的个人博客分享 http://blog.sciencenet.cn/u/woodcorpse

博文

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

已有 15444 次阅读 2019-3-25 17:04 |个人分类:R|系统分类:科研笔记

[TOC]

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

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

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

弦图简介

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

数据准备

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

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

image

代码部分

下面看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") # 设定图例

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

image

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

保存以上图片

使用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()

image

现在图例和文件不再重叠。有些门的文字重叠。可以在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等其他软件出的例图:

image

作者简介

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

猜你喜欢

写在后面

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

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

image

点击阅读原文,跳转最新文章目录阅读
https://mp.weixin.qq.com/s/5jQspEvH5_4Xmart22gjMA



https://wap.sciencenet.cn/blog-3334560-1169565.html

上一篇:NAR:UNITE真菌鉴定ITS数据库——处理未分类和并行分类(数据库文章阅读模板)
下一篇:2019微生物组—宏基因组分析技术专题研讨会第四期
收藏 IP: 210.75.224.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-24 21:41

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部