作者简介Introduction

taoyan:伪码农,R语言爱好者,爱开源。

个人博客: https://ytlogos.github.io/

公众号:生信大讲堂

往期回顾

R语言可视化学习笔记之相关矩阵可视化包ggcorrplot

R语言学习笔记之相关性矩阵分析及其可视化

ggplot2学习笔记系列之利用ggplot2绘制误差棒及显著性标记

ggplot2学习笔记系列之主题(theme)设置

用circlize包绘制circos-plot

利用R语言绘制世界航班路线图


简介

sequence logo图用来可视化一段序列某个位点的保守性,据根提供的序列组展示位点信息。这方面有很多在线小工具可以完成,这里使用R包ggseqlogo进行可视化。

安装

安装方式有两种

#直接从CRAN中安装

install.packages("ggseqlogo")

#从GitHub中安装

devtools::install.github("omarwagih/ggseqlogo")

数据加载

ggseqlogo提供了测试数据ggseqlogo_sample

#加载包

library(ggplot2)

library(ggseqlogo)

#加载数据

data(ggseqlogo_sample)

ggseqlogo_sample数据集是一个列表,里面包含了三个数据集:

  • seqs_dna:12种转录因子的结合位点序列

  • pfms_dna:四种转录因子的位置频率矩阵

  • seqs_aa:一组激动酶底物磷酸化位点序列

#seqs_dna

head(seqs_dna)[1]


## $MA0001.1

##  [1] "CCATATATAG" "CCATATATAG" "CCATAAATAG" "CCATAAATAG" "CCATAAATAG"

##  [6] "CCATAAATAG" "CCATAAATAG" "CCATATATGG" "CCATATATGG" "CCAAATATAG'

#pfms_dna

head(pfms_dna)[1]


## $MA0018.2

##   [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]

## A    0    0   11    0    1    0    2    8

## C    1    1    0    9    0    3    7    0

## G    1   10    0    2   10    0    1    1

## T    9    0    0    0    0    8    1    2


#seqs_aa

head(seqs_aa)[1]

## $AKT1

##   [1] "VVGARRSSWRVVSSI" "GPRSRSRSRDRRRKE" "LLCLRRSSLKAYGNG"

##   [4] "TERPRPNTFIIRCLQ" "LSRERVFSEDRARFY" "PSTSRRFSPPSSSLQ"


可视化

ggplot()+geom_logo(seqs_dna$MA0001.1)+theme_logo()

ggseqlogo提供了一个直接绘图的函数ggseqlogo(),这是一个包装函数。下面命令结果同上面的。

ggseqlogo(seqs_dna$MA0001.1)

输入格式

ggseqlogo支持以下几种类型数据输入:

  • 序列

  • 矩阵

下面是使用数据中的位置频率矩阵生成的seqlogo

ggseqlogo(pfms_dna$MA0018.2)

方法

ggseqlogo通过method选项支持两种序列标志生成方法:bitsprobability

p1 <- ggseqlogo(seqs_dna$MA0001.1, method="bits")

p2 <- ggseqlogo(seqs_dna$MA0001.1, method="prob")

gridExtra::grid.arrange(p1,p2)

序列类型

ggseqlogo支持氨基酸、DNA和RNA序列类型,默认情况下ggseqlogo会自动识别数据提供的序列类型,也可以通过seq_type选项直接指定序列类型。

ggseqlogo(seqs_aa$AKT1, seq_type="aa")

自定义字母

通过namespace选项来定义自己想要的字母类型

#用数字来代替碱基

seqs_numeric <- chartr("ATGC", "1234", seqs_dna$MA0001.1)

ggseqlogo(seqs_numeric, method="prob", namespace=1:4)

配色

ggseqlogo可以使用col_scheme参数来设置配色方案,具体可参考?list_col_schemes

ggseqlogo(seqs_dna$MA0001.1, col_scheme="base_pairing")

自定义配色

ggseqlogo提供函数make_col_scheme来自定义离散或者连续配色方案

离散配色")

csl <- make_col_scheme(chars = c("A","T", "C", "G"), groups = c("gr1","gr1", "gr2","gr2"), cols = c("purple","purple","blue","blue"))

ggseqlogo(seqs_dna$MA0001.1,col_scheme=csl)

连续配色

cs2 <- make_col_scheme(chars = c("A", "T", "C", "G"), values = 1:4)

ggseqlogo(seqs_dna$MA0001.1, col_scheme=cs2)

同时绘制多个序列标志

ggseqlogo(seqs_dna, ncol = 4)

上述命令实际上等同于

ggplot()+geom_logo(seqs_dna)+theme_logo()+

facet_wrap(~seq_group,ncol = 4,scales = "free_x")

自定义高度

通过创建矩阵可以生成每个标志的高度,还可以有负值高度

set.seed(1234)

custom_mat <- matrix(rnorm(20), nrow = 4, dimnames = list(c("A","T","C", "G")))

ggseqlogo(custom_mat,method="custom",seq_type="dna")+

ylab("my custom height")

字体

可以通过font参数来设置字体,具体可参考?list_fonts

fonts <- list_fonts(F)

p_list <- lapply(fonts, function(f){

ggseqlogo(seqs_dna$MA0001.1,font=f)+ggtitle(f)

})

do.call(gridExtra::grid.arrange,c(p_list, ncol=4))

注释

注释的话跟ggplot2是一样的

ggplot()+

annotate("rect", xmin = 0.5, xmax = 3.5, ymin = -0.05, ymax = 1.9, alpha=0.1, col="black", fill="yellow")+

geom_logo(seqs_dna$MA0001.1, stack_width = 0.9)+

annotate("segment", x=4, xend = 8, y=1.2, yend = 1.2, size=2)+

annotate("text", x=6, y=1.3, label="Text annotation")+

theme_logo()

图形组合

ggseqlogo生成的图形与ggplot2生成的图形组合在一起。

p1 <- ggseqlogo(seqs_dna$MA0008.1)+theme(axis.text.x = element_blank())

aln <- data.frame(

letter=strsplit("AGATAAGATGATAAAAAGATAAGA", "")[[1]],

species=rep(c("a","b","c"), each=8),

x=rep(1:8,3)

)

aln$mut <- "no"

aln$mut[c(2,15,20,23)]="yes"

p2 <- ggplot(aln, aes(x, species)) +

geom_text(aes(label=letter, color=mut, size=mut)) +

scale_x_continuous(breaks=1:10, expand = c(0.105, 0)) + xlab('') +

scale_color_manual(values=c('black', 'red')) +

scale_size_manual(values=c(5, 6)) +

theme_logo() +

theme(legend.position = 'none', axis.text.x = element_blank())

bp_data <- data.frame(

x=1:8,

conservation=sample(1:100, 8)

)

p3 <- ggplot(bp_data, aes(x, conservation))+

geom_bar(stat = "identity", fill="grey")+

theme_logo()+

scale_x_continuous(breaks = 1:10, expand = c(0.105, 0))+

xlab("")

suppressMessages(require(cowplot))

plot_grid(p1,p2,p3,ncol = 1, align = "v")

SessionInfo

## R version 3.4.3 (2017-11-30)

## Platform: x86_64-pc-linux-gnu (64-bit)

## Running under: Ubuntu 17.10

##

## Matrix products: default

## BLAS: /usr/lib/x86_64-linux-gnu/atlas/libblas.so.3.10.3

## LAPACK: /usr/lib/x86_64-linux-gnu/atlas/liblapack.so.3.10.3

##

## locale:

##  [1] LC_CTYPE=zh_CN.UTF-8       LC_NUMERIC=C

##  [3] LC_TIME=zh_CN.UTF-8        LC_COLLATE=zh_CN.UTF-8

##  [5] LC_MONETARY=zh_CN.UTF-8    LC_MESSAGES=zh_CN.UTF-8

##  [7] LC_PAPER=zh_CN.UTF-8       LC_NAME=C

##  [9] LC_ADDRESS=C               LC_TELEPHONE=C

## [11] LC_MEASUREMENT=zh_CN.UTF-8 LC_IDENTIFICATION=C

##

## attached base packages:

## [1] stats     graphics  grDevices utils     datasets  methods   base

##

## other attached packages:

## [1] cowplot_0.9.2 ggseqlogo_0.1 ggplot2_2.2.1

##

## loaded via a namespace (and not attached):

##  [1] Rcpp_0.12.15     knitr_1.20       magrittr_1.5     munsell_0.4.3

##  [5] colorspace_1.3-2 rlang_0.2.0      stringr_1.3.0    plyr_1.8.4

##  [9] tools_3.4.3      grid_3.4.3       gtable_0.2.0     htmltools_0.3.6

## [13] yaml_2.1.16      lazyeval_0.2.1   rprojroot_1.3-2  digest_0.6.15

## [17] tibble_1.4.2     gridExtra_2.3    evaluate_0.10.1  rmarkdown_1.8

## [21] labeling_0.3     stringi_1.1.6    compiler_3.4.3   pillar_1.1.0

## [25] scales_0.5.0     backports_1.1.2

 往期精彩内容整理合集 

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)

公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

利用ggseqlogo绘制seqlogo图相关推荐

  1. j散度matlab,利用Matlab绘制梯度图、散度图、旋度图。.doc

    利用Matlab绘制梯度图.散度图.旋度图..doc 题 目电磁场理论实验姓 名学 号班 级任课老师实验日期2013年 10月 19日 一.实验目的: 1.利用Matlab绘制梯度图: 2.利用Mat ...

  2. python绘制折线图保存_Python利用matplotlib绘制折线图的新手教程

    前言 matplotlib是Python中的一个第三方库.主要用于开发2D图表,以渐进式.交互式的方式实现数据可视化,可以更直观的呈现数据,使数据更具说服力. 一.安装matplotlib pip i ...

  3. 利用 CoreGraphics 绘制折线图

    效果与元素分析 实现效果图如下: 首先对折线图进行元素分割 包含以下六部分元素 渐变背景 折线 折线上的点 折线范围内渐变 参考线 文本显示的 Label 除了6之外,其他几个元素都在 draw(_: ...

  4. Python中利用Matplotlib绘制多图并合并展示

    有个需求就是利用Matplotlib画几个像模像样的统计图然后合并在一张图中,因为此前很少用这方面的东西,所以折腾了不少时间,今天介绍一下. 1.subplot多合一 其实,利用python 的mat ...

  5. 利用matplotlib绘制圆环图的案例

    一.概念介绍 圆环图(Donut Chart),又称为环形图,甜甜圈图.它从饼图变形而来,单环的作用上与饼图相似,用于展示定性数据中小类占大类的比例关系. Q: 那既然都有饼图了,为什么还要圆环图呢? ...

  6. 利用matplotlib绘制马赛克图的案例

    一.概念介绍 马赛克图(Mosaic plot),基于列联表的数据排布,展现二维定性变量下的取值大小,我们可以将它想象成三维柱状图的俯视,颜色差异或面积大小常被用于区分每个块的赋值大小. · 什么是列 ...

  7. R语言中如何利用ggplot2绘制qq图和boxplot图

    文章目录 绘制qq图 函数介绍 geom_qq() 参数介绍 注意事项 例子 Using to explore the distribution of a variable 绘制boxplot 函数介 ...

  8. python【Matlibplot绘图库】利用matlibplot绘制雷达图

    文章目录 1.基本构造 2.比较功能 1.基本构造 之前在一些数据分析案例中看到用 Go 语言绘制的雷达图,非常的漂亮,就想着用matlibplot.pyplot也照着画一个,遗憾的是matlibpl ...

  9. 利用python绘制雪景图_python绘制雪景图

    本文实例为大家分享了python绘制雪景图的具体代码,供大家参考,具体内容如下 绘制雪景图,应用到turtle和random. from turtle import * from random imp ...

  10. 利用Canvas绘制雷达图

    雷达图(蜘蛛网图)是一种常见的数据分析图表,本文采用canvas来绘制雷达图,并最终封装成一个小组件.首先来看一下最终的效果图: 如何画正多边形 以正五边形雷达图为例(其他任意正多边形也一样),如下图 ...

最新文章

  1. setup vaio winxp
  2. 阿里公共DNS正式发布:223.5.5.5 223.6.6.6
  3. 机器学习 -- 信息论
  4. 高速信号传输约翰逊 pdf_学习笔记之传输线基础
  5. java lpad oracle_Oracal的Lpad函数
  6. mac活动监视器_什么是活动监视器?
  7. c++ operator操作符的两种用法:重载和隐式类型转换,string转其他基本数据类型的简洁实现string_cast...
  8. Ubuntu18.04 下搭建Hyperledger Fabric 1.0.0环境
  9. 微信小程序icon图标引入
  10. jrebel IDEA热部署插件激活
  11. 【转】Mac下 如何配置虚拟机软件Parallel Desktop--超详细
  12. 什么是计算机内存?它的用途是什么?
  13. python excel条件格式_关于python调用Excel“条件格式”——二探openpyxl
  14. 线性代数系列(1)行列式
  15. 安卓4.4pppoe拨号间隔及轮次修改
  16. random_state = 42
  17. flutter 中实现磨砂玻璃效果
  18. scala中break和continu 和 scala高级for循环
  19. 7款可以实现 PDF 转换 Word 格式的免费在线工具
  20. 微信小程序调用百度文字转语音API

热门文章

  1. Linux 超级漂亮的 Shell
  2. 看了这个视频都想辞职了
  3. 推荐腾讯最新重磅开源项目!
  4. 离阿里最近的机会,来了!
  5. 张一鸣辞职,没那么简单
  6. 10 个牛逼的一行代码就能搞定的编程技巧,你会用吗?
  7. 2017的金秋,派卧底去阿里、京东、美团、滴滴带回来的面试题及答案
  8. 构建微服务体系结构的最佳实践
  9. 中国的 GitHub 要来了?
  10. Android Studio 1.0来啦