专栏首页小明的数据分析笔记本使用R语言包circlize可视化展示blast双序列比对结果

使用R语言包circlize可视化展示blast双序列比对结果

circlize这个包挺强大的,R语言里用来画圈图非常方便。

今天这篇文章记录用circlize这个包画圈图展示blast双序列比对结果的代码

植物线粒体基因组类的文章通常会分析细胞器基因组间基因转移情况,基本的分析方法就是blast比对。可视化展示可以选择用这个圈图来做

首先是使用blast建库比对

makeblastdb -in mt.fasta -dbtype nucl -out mt
blastn -query cp.fasta -db mt -outfmt 6 > output.txt

然后是准备数据用来画最外圈用来展示两条序列的部分

df<-data.frame(chr=c(rep("chloroplast",2),rep("mitochondrial",2)),
               x=c(1,131478,1,444567),
               y=c(0,1,0,1))

> df
            chr      x y
1   chloroplast      1 0
2   chloroplast 131478 1
3 mitochondrial      1 0
4 mitochondrial 444567 1

然后是读入blast的输出结果

df1<-read.csv("output6.txt",stringsAsFactors = F,header=F,sep="\t")

作图用到的代码

library(circlize)
library(RColorBrewer)
library(ComplexHeatmap)
col<-RColorBrewer::brewer.pal(6,"Paired")
circos.par("start.degree" = 130)
circos.initialize(factors = df$chr,x=df$x)
circos.trackPlotRegion(factors = df$chr,y=df$y,
                       panel.fun = function(x,y){
                         circos.axis()
                       },track.height = 0.1)
highlight.sector(sector.index = "chloroplast",col=col[1])
highlight.sector(sector.index = "mitochondrial",col=col[2])
circos.text(x=70000,y=0.5,
            labels = "chloroplast",
            sector.index = "chloroplast")
circos.text(x=220000,y=0.5,
            labels = "mitochondrial",
            sector.index = "mitochondrial",
            facing = "outside")
col_fun = colorRamp2(c(70,90,100),
                     c("green", "yellow", "red"))
for (i in 1:13){
  x<-sort(c(df1[i,8],df1[i,7]))
  y<-sort(c(df1[i,10],df1[i,9]))
  z<-df1[i,3]
  circos.link("chloroplast",x,"mitochondrial",y,
              col=add_transparency(col_fun(z)))
}
circos.clear()
lgd_links = Legend(at = c(70, 80, 90, 100), 
                   col_fun = col_fun, 
                   title_position = "topleft",
                   title = "identity(%)")
lgd_list_vertical = packLegend(lgd_links)

draw(lgd_list_vertical, x = unit(10, "mm"), 
     y = unit(10, "mm"), just = c("left", "bottom"))

image.png

新学到的两个知识点

调整整体的角度

circos.par("start.degree" = 130)

调整用来表示染色体的外圈粗细

circos.trackPlotRegion(factors = df$chr,y=df$y,
                       panel.fun = function(x,y){
                         circos.axis()
                       },track.height = 0.1)

画图的时候可以加一个track.height参数

遇到的问题是

调整外圈的刻度,现在展示的有点多,我想增大间隔,减少展示的数字,暂时不知道如何实现。

添加图例参考了文章

https://jokergoo.github.io/circlize_book/book/legends.html

本文分享自微信公众号 - 小明的数据分析笔记本(gh_0c8895f349d3),作者:Punicagranatum

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R语言circlize包实例3

    在 https://www.promptcloud.com/blog/data-visualization-text-mining-taylor-swift-s...

    用户7010445
  • R语言circlize包实例1

    https://stats.biopapyrus.jp/r/graph/circos-plot.html

    用户7010445
  • R语言circlize包实例2:环形的柱形图

    https://jokergoo.github.io/circlize_book/book/high-level-plots.html

    用户7010445
  • 拍照手抖有救了!DeblurGAN消除运动模糊效果惊人 | 附论文+代码

    安妮 编译自 ArXiv 量子位 出品 | 公众号 QbitAI 十图九糊。 置身异国街道,感受着陌生环境里熙熙攘攘的街道,你掏出手机想留住这一刻。 好嘞,一、...

    量子位
  • 一键下载电影

    学编程是为啥?偷懒呗~有时候去豆瓣看到比较感兴趣的或者想看朋友文字推荐的电影,就得打开电影网站获取电影的下载链接,然后用迅雷下载观看,我觉得挺麻烦的。当然要是在...

    佛系编程人
  • 索引图像的那些事啊

      索引图像在目前看来,需要应用的场合比真彩图像少的多,但是,在某些特殊的领域(比如游戏)和应用(比如屏幕传输)索引图像依旧发挥这重要的作用。本文将简单的描述下...

    用户1138785
  • 谷歌关闭Titan无人机项目,Facebook还能坚持多久?

    为解决全球三分之二的人的上网问题,谷歌和Facebook都想通过无人机为全球偏远地区人们提供互联网服务。理想很丰满,但现实有些残酷,这两家企业的联网无人机项目相...

    机器人网
  • 用了这么多年MySql,这些好习惯你用过哪些

    说明:MySQL在Windows下不区分大小写,但在Linux下默认是区分大小写,为了避免出现不必要的麻烦,统一使用小写

    Peyshine
  • Python 学习笔记之类与实例

    类 (class) 封装一组相关数据,使之成为一个整体,并使用一种方法持续展示和维护。

    Python技术与生活认知的分享
  • DevOps 漫谈:基于OpenCensus构建分布式跟踪系统

    随着互联网技术的高速发展,以往单应用的服务架构已经很难处理如山洪般增长的信息数据,随着云计算技术的大规模应用,以微服务、RESTful 为代表的各种软件架构广泛...

    RiboseYim

扫码关注云+社区

领取腾讯云代金券