美文网首页
R语言环境配置

R语言环境配置

作者: 灵木er | 来源:发表于2020-05-19 10:50 被阅读0次

    本文是学习R语言绘图中遇到的部分包安装记录以及扩展,解决方法就是使用最新版R或者次新版R,某些包安装出现问题可以去官网看看安装要求。本文涉及到docker简单使用、linux(Ubuntu安装R)、R镜像设置、bioconductor镜像设置、R包自动检测安装、github内容快速下载。

    经过一番尝试,成功配置环境后,决定在docker里重新来一遍,方面做记录,结果非常顺利,没有出现前面遇到的问题。

    docker

    docker安装和配置镜像参考 docker
    docker简单使用

    docker search ubuntu
    docker pull ubuntu # 拉取最新版20.04
    docker image ls
    docker run -it --rm ubuntu # 运行Ubuntu,rm表示退出即刻删除,也即是还原
    

    docker中重头配置环境

    docker run -it --rm ubuntu
    apt update
    apt install r-base -y
    
    image.png
    # R镜像设置可以写入配置文件,就不用每次都配置镜像了
    options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
    if (!requireNamespace("stringr", quietly = TRUE))
        install.packages("stringr")
    
    vs <- version$version.string
    if(stringr::str_split(vs, " ")[[1]][3] < "3.6") 
        cat("您的R版本为:",vs,"\n要求R版本大于等于3.5,建议3.6以上,3.5不保证所需包都能安装\n")
    
    if (!requireNamespace("BiocManager", quietly = TRUE))
        install.packages("BiocManager")
    
    options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor")
    BiocManager::install("ggtree")
    
    packages <- c("ggplot2", "RColorBrewer", "statnet", "circlize")
    
    if (!requireNamespace(packages, quietly = TRUE)) 
        install.packages(packages)
    

    实际运行R代码作图部分没有使用docker,只要包成功安装并且可以加载就不会有问题了。本次docker实验未发现需要手动安装的依赖,一遍成功,说明ubuntu 20.04还是比较好的,其他Ubuntu版本可能配置环境就要复杂一点了,起码R版本低于3.6,还可能得安装依赖,ggtree官网说Ubuntu16.04要安装依赖,Ubuntu 18.04也需要安装依赖,centos7的R为3.6.0,应该也需要安装依赖。

    sudo apt-get install libfftw3-3 libfftw3-dev libtiff5-dev
    sudo yum install libtiff-devel fftw-devel
    

    windows下简单,下载新版的R,配置R环境即可。
    之所以建议R版本3.6以上是因为statnet包要求R版本大于3.5,而我的Windows安装的R为3.5.3不能成功安装statnet包,提示nlme包旧,更新了nlme包也不行,一怒之下遂安装3.6.2,然后是安装需要的包,然后就没问题了,R4.0包都出来了,就不要再留恋低版本的R了,经测R4.0安装以上环境没问题,测试环境为滚动发行版Arch。

    R语言作图

    R语言作图部分来自宏基因组公众号,拿来学习的,代码、数据以及详细内容请阅读GCB:农田土壤丰富真菌比稀有真菌适应更广(一作解读+主图重现),文末给出的有链接。

    下面的代码没有做改动,本文主要是记录R语言环境配置的坑​,不同系统、不同版本可能出现的问题,建议使用最新版。​

    library(ggtree)
    library(ggplot2)
    library(RColorBrewer)
    #-指定九种颜色
    col<-brewer.pal(9, "Set1")
    

    进化树 + 热图

    #--微生物组三个文件读取:注释文件,进化树,和otu丰度文件
    tax<-read.csv("hong_otuname_abd.csv",row.names=1)
    aa<-read.tree("hong_tre_abd.tre")
    #--这里经过了处理,将OTU存在信息通过分组合并 ,并将存在与否使用1或者-1表示
    heat1<-read.csv("hong_heat1_abd.csv",row.names=1)
    
    heat<-ifelse(heat1>0,"Pos","Neg")
    heat[heat1==0]<-"NA"
    
    #--按照样本聚类
    h<-hclust(dist(t(heat1)))
    # 聚类顺序重排矩阵
    heat<-heat[,h$order]
    
    #为进化树匹配物种分类信息
    dd<-data.frame(id=aa$tip.label,tax[aa$tip.label,])
    # 对于属水平未注释的结果我们用OTU名称替代
    dd$aa<-ifelse(dd$genus=="",rownames(dd),as.vector(dd$genus))
    #-设置进化树可视化分组选项,按照门水平填充颜色
    groupInfo1 <- split(aa$tip.label, as.vector(tax[aa$tip.label,2]))
    aa<- groupOTU(aa, groupInfo1)
    
    p<-ggtree(aa,aes(color=group),branch.length='none')
    p
    
    
    image.png
    #--许多人不知道如何配置dd文件,诀窍就是将数据框第一列设置为进化树叶节点名称,并以id命名。
    p<-p%<+%dd+geom_tippoint(size=3)+geom_tiplab(aes(label=aa),size=2,color="black")
    gheatmap(p,heat,offset=6, width=3, font.size=3, colnames_angle=90,colnames = T)+
    scale_fill_manual(values=c("white","#fdbb2d","#1E9600"))+
    scale_color_manual(values=c(col[c(3:5,8)]))
    # %<+% {ggtree}add annotation data to a tree
    
    image.png

    稀有物种按照以上重来一次

    #####Rare#####
    #--按照以上操作将稀有物种树重新来一遍
    tax<-read.csv("hong_otuname_ra.csv",row.names=1)
    aa<-read.tree("hong_tre_ra.tre")
    heat1<-read.csv("hong_heat1_ra.csv",row.names=1)
    heat<-ifelse(heat1>0,"Pos","Neg")
    heat[heat1==0]<-"NA"
    heat<-heat[,h$order]
    dd<-data.frame(id=aa$tip.label,tax[aa$tip.label,])
    dd$aa<-ifelse(dd$genus=="",rownames(dd),as.vector(dd$genus))
    groupInfo1 <- split(aa$tip.label, as.vector(tax[aa$tip.label,2]))
    aa<- groupOTU(aa, groupInfo1)
    
    p<-ggtree(aa,aes(color=group),branch.length='none')
    p<-p%<+%dd+geom_tippoint(size=3)+geom_tiplab(aes(label=aa),size=2)
    gheatmap(p,heat,offset=6, width=3, font.size=3, colnames_angle=90,colnames = T)+
    scale_fill_manual(values=c("white","#fdbb2d","#1E9600"))+
    scale_color_manual(values=c(col[c(3,5,7,8)]))
    
    image.png

    和弦图 绘制

    ############circlize##############
    library(statnet)
    library(circlize)
    #--设定样本和物种颜色
    col1<-brewer.pal(11, "RdYlBu")[c(2,10)]
    col2<-c(brewer.pal(8,"Set1")[c(3,4,8,5,7)],"grey")
    aa<-as.matrix(read.csv("hong_phy.csv",row.names=1))
    
    circos.clear()
    grid.col = NULL
    grid.col[rownames(aa)] = col2[nrow(aa):1]
    grid.col[colnames(aa)] = col1
    
    ##--设置不同区块间隔
    circos.par(gap.degree = c(rep(2, nrow(aa)-1), 10, rep(2, ncol(aa)-1), 10),start.degree = 0)
    ?chordDiagram
    chordDiagram(aa,directional = F,diffHeight = 0.06,grid.col = grid.col, transparency = 0.5)
    legend("right",pch=20,legend=rownames(aa)[nrow(aa):1],col=grid.col[rownames(aa)[nrow(aa):1]],bty="n",cex=1,pt.cex=3,border="black")
    
    image.png
    circos.clear()
    grid.col = NULL
    grid.col[rownames(aa)] = col2[nrow(aa):1]
    grid.col[colnames(aa)] = col1
    
    ##--设置不同区块间隔
    circos.par(gap.degree = c(rep(2, nrow(aa)-1), 10, rep(2, ncol(aa)-1), 10),start.degree = 0)
    
    chordDiagram(aa,directional = F,diffHeight = 0.06,grid.col = grid.col, transparency = 0.5, annotationTrack =c("grid", "axis"),
                 preAllocateTracks = 2
    )
    
    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 = TRUE, adj = c(0, 0.5))
    }, bg.border = NA) # here set bg.border to NA is important
    
    image.png
    最后说一下在别人给出github链接的情况下如何高速下载。
    我们可以将给出的github链接看作四部分,以https://github.com/YuLab-SMU/ggtree/wiki/ggtree-installation为例,其中https://github.com为官网;YuLab-SMU为用户名;ggtree为仓库名;剩下的为仓库里的东西。去掉最后一部分,在仓库名后面加“.git”,例如:https://github.com/YuLab-SMU/ggtree.git。打开https://gitee.com(码云),注册并登录,点击右上角“+”选择从github导入仓库,从URL导入,粘贴https://github.com/YuLab-SMU/ggtree.git,其他不变即可。
    image.png
    image.png
    导入成功之后就可以选择克隆或下载了,非常快。
    image.png
    选择克隆的话需要安装客户端,Windows可以选择git for windows客户端,优点是以后作者更新了,可以快速拉取更新,而不必下载整个仓库。

    最后的最后推荐一下简书网页版编辑器,很简洁,插入图片很方便(不论是网络图片、本地图片,复制到内存的图片,都可以),可以作为图床使用,某云笔记上传图片还得VIP。不过简书APP就算了,强烈不推荐,广告太多。
    参考链接:
    https://vuepress.mirror.docker-practice.com/install/
    https://bioconductor.org/install/
    https://github.com/YuLab-SMU/ggtree/wiki/ggtree-installation
    https://mp.weixin.qq.com/s/x8n5dMpk423u5xtS4qjleA

    相关文章

      网友评论

          本文标题:R语言环境配置

          本文链接:https://www.haomeiwen.com/subject/hfbfohtx.html