R语言交互式可视化包CanvasXpress

作者简介 刘永鑫,博士。2008年和2011年毕业东北农业大学微生物学和作物遗传育种专业。2014年在中科院遗传发育所获生物信息学博士学位,2016年博士后出站留所工作,任宏基因组学实验室工程师,...

作者简介

刘永鑫,博士。2008年和2011年毕业东北农业大学微生物学和作物遗传育种专业。2014年在中科院遗传发育所获生物信息学博士学位,2016年博士后出站留所工作,任宏基因组学实验室工程师,目前主要研究方向为宏基因组学数据分析方法、培养组学方法优化。2017年7月创办“宏基因组”公众号,目前关注人数1.5万,累计阅读超百万。

公众号:宏基因组(meta-genome)

往期回顾

CanvasXpress包简介

感谢“宏基因组”群友李海敏推荐CanvasXpress包。

image

CanvasXpress核心是一个JavaScript语言编写的库,主要用于可重复研究。

在R中可以安装canvasXpress包,使用canvasXpress命令绘制各种各样的交互式图形,非常高效方便,实现如下数百种图形,令你的结果瞬间B格爆满。

imageimageimageimageimage

更多介绍和实例,访问官网:https://canvasxpress.org/html/index.html

源代码、安装及使用示例详见 Github: https://github.com/neuhausi/canvasXpress

canvasXpress安装及加载

安装包位于github上,需要devtools工具安装

# 没有devtools也需要安装
install.packages(devtools)
library(devtools)

# 安装canvasXpress
devtools::install_github('neuhausi/canvasXpress')
library(canvasXpress)

绘图实战

1. 三维散点图

# 读数据文件
y <- read.table("http://www.canvasxpress.org/data/cX-irist-dat.txt", header=TRUE, sep="\t", 
                quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
# 读取分组信息
z <- read.table("http://www.canvasxpress.org/data/cX-irist-var.txt", header=TRUE, sep= "\t", 
                quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
# 绘制三维散点图,主要参数为数据、分组、分组列、置信椭圆列、图表类型以及相关标签               
canvasXpress(data      = y,
             varAnnot  = z,
             colorBy   = "Species",
             ellipseBy = "Species",
             graphType = "Scatter3D",
             title     = "Iris Data Set",
             xAxis     = list("Sepal.Length"),
             yAxis     = list("Petal.Width"),
             zAxis     = list("Petal.Length"))

image

看到按分组绘制了三维散点图,而且添加了分组颜色和椭球形置信区间,我们可以鼠标托动变换角度,也可点选查看点的坐标

2. 矩阵散点图

# 读取数据表
y <- read.table("http://www.canvasxpress.org/data/cX-irist-dat.txt", header=TRUE, sep="\t", 
                quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
# 分组信息
z <- read.table("http://www.canvasxpress.org/data/cX-irist-var.txt", header=TRUE, sep= "\t", 
                quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
# 绘制矩阵散点图
canvasXpress(data              = y,
             varAnnot          = z,
             graphType         = "Scatter2D",
             scatterPlotMatrix = TRUE,
             colorBy           = "Species",
             showTransition    = TRUE)

image

二维矩阵散点图展示多条件或因子数据的相关性,点选显示坐标数据

3. 箱线图

# 数据文件
y <- read.table("http://www.canvasxpress.org/data/cX-iris-dat.txt", header=TRUE, sep="\t", 
                quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)

# 分组信息
x <- read.table("http://www.canvasxpress.org/data/cX-iris-smp.txt", header=TRUE, sep= "\t", 
                quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)

# 绘制箱线图,按物种分大类,再按变量类型分小类
canvasXpress(data              = y,
             smpAnnot          = x,
             graphType         = "Boxplot",
             graphOrientation  = "vertical",
             title             = "Iris flower data set",
             smpTitle          = "Species",
             smpLabelFontStyle = "italic",
             smpLabelRotate    = 90,
             xAxis2Show        = FALSE,
             afterRender       = list(list("groupSamples", list("Species"))))

image

箱线图比较组间整体数据分布,组内不同因子间比较

4. 多维热图

# 热图数据文件
y  <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-dat.txt", header=TRUE, sep="\t", 
                 quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
# 另一个数据矩阵文件
y2 <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-dat2.txt", header=TRUE, sep="\t", 
                 quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
# 第三个数据属性矩阵,非连续型
y3 <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-dat3.txt", header=TRUE, sep="\t", 
                 quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
# 第四个数据属性矩阵,非连续型
y4 <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-dat4.txt", header=TRUE, sep="\t", 
                 quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
# 样品列表
x  <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-smp.txt", header=TRUE, sep= "\t", 
                 quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
# 变量列表
z  <- read.table("http://www.canvasxpress.org/data/cX-multidimensionalheatmap-var.txt", header=TRUE, sep= "\t", 
                 quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)
# 四维热图绘制:y为热图主体,y2为边框颜色,y3为形状,y4为大小
canvasXpress(data          = list(y = y, data2 = y2, data3 = y3, data4 = y4),
             smpAnnot      = x,
             varAnnot      = z,
             graphType     = "Heatmap",
             guides        = TRUE,
             outlineBy     = "Outline",
             outlineByData = "data2",
             shapeBy       = "Shape",
             shapeByData   = "data3",
             sizeBy        = "Size",
             sizeByData    = "data4")

image

四个矩阵绘制的热图,分别代表图中颜色、边框颜色、形状和大小,鼠标悬停显示属性值

5. 韦恩图

canvasXpress(vennData   = data.frame(AC=456, A=340, ABC=552, ABCD=148, BC=915, ACD=298, BCD=613, 
                                     B=562, CD=143, ABD=578, C=620, D=592, AB=639, BD=354, AD=257),
             graphType  = "Venn",
             vennLegend = list(A="List 1", D="List 4", C="List 3", B="List 2"),
             vennGroups = 4)

image

四组比较韦恩图,需要已知15种情况下的信息。鼠标划过显示信息,双击还可显示固定信息窗口,窗口也可以托动

交互图表导出和交互

以第一个三维散图点图为例:

导出网页格式图片

image

导入网页:选择Export中的Save as web page,弹窗中输入或选择文件名,如果询问是否覆盖,点yes即可;结束后会显示是否网页显示,选择Try again即网页中打开显示(windows中可能没有)。

我们发现右上角存在一组工具箱,它存在非常多的交互功能。

image

右上角工具箱有4个按扭,分别为保存图片、移动、探索数据和全屏。其中探索数据中在复杂的操作面板,可以按组、样品选择、查找等操作,功能强大,用户可以自行尝试挖掘更多功能。

更多实例和资源

vignette查看更多示例

# 显示该包中所有示例,目前有开始和额外两类
vignette(package = "canvasXpress")

# 分别展示每个示例
# 初级入门教程,也是上面提到的例子
vignette("getting_started", package = "canvasXpress")
# 额外示例,包括数据分析过程
vignette("additional_examples", package = "canvasXpress")

image

本文中就是讲的此软件官方教程,主要贡献是翻译和讲解。

Shiny小程序

更强大的交互实例,使用cxShinyExample查看

# 展示所有Shiny示例
cxShinyExample()

# 运行其中一个
cxShinyExample(example = "example1")

image

把数据编写成shiny小程序,可以网页中进入坐标轴选择组合展示数据,图中可用滚轮缩放图片区域。

更多学习资源和最新的软件教程,详见其官网:http://www.canvasxpress.org

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

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

  • 发表于 2018-02-15 11:18
  • 阅读 ( 6880 )
  • 分类:其他组学

0 条评论

请先 登录 后评论
不写代码的码农
刘永鑫

工程师

64 篇文章

作家榜 »

  1. 祝让飞 118 文章
  2. 柚子 91 文章
  3. 刘永鑫 64 文章
  4. admin 57 文章
  5. 生信分析流 55 文章
  6. SXR 44 文章
  7. 张海伦 31 文章
  8. 爽儿 25 文章