R语言交互式可视化包CanvasXpress

2018 年 2 月 15 日 R语言中文社区 刘永鑫

作者简介

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

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

往期回顾

CanvasXpress包简介

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

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

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





更多介绍和实例,访问官网: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"))

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


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)

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


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"))))

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


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")

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



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)

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

交互图表导出和交互

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

导出网页格式图片

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

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

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

更多实例和资源

vignette查看更多示例

# 显示该包中所有示例,目前有开始和额外两类
vignette(package = "canvasXpress")
# 分别展示每个示例# 初级入门教程,也是上面提到的例子
vignette("getting_started", package = "canvasXpress")
# 额外示例,包括数据分析过程
vignette("additional_examples", package = "canvasXpress")

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

Shiny小程序

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

# 展示所有Shiny示例
cxShinyExample()
# 运行其中一个
cxShinyExample(example = "example1")

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

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


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

点阅读原文,跳转最新文章目录阅读 

登录查看更多
1

相关内容

【实用书】Python机器学习Scikit-Learn应用指南,247页pdf
专知会员服务
264+阅读 · 2020年6月10日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
111+阅读 · 2020年5月9日
Python 热图进阶
专知
15+阅读 · 2019年5月4日
R语言自然语言处理:文本分类
R语言中文社区
7+阅读 · 2019年4月27日
R语言自然语言处理:词性标注与命名实体识别
R语言中文社区
7+阅读 · 2019年3月5日
R语言数据挖掘利器:Rattle包
R语言中文社区
21+阅读 · 2018年11月17日
Python中机器学习的特征选择工具
云栖社区
8+阅读 · 2018年7月16日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
shiny动态仪表盘应用 | 中国世界自然文化遗产可视化案例
R语言中文社区
10+阅读 · 2017年11月29日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
Learning by Abstraction: The Neural State Machine
Arxiv
6+阅读 · 2019年7月11日
Adaptive Neural Trees
Arxiv
4+阅读 · 2018年12月10日
VIP会员
相关资讯
Python 热图进阶
专知
15+阅读 · 2019年5月4日
R语言自然语言处理:文本分类
R语言中文社区
7+阅读 · 2019年4月27日
R语言自然语言处理:词性标注与命名实体识别
R语言中文社区
7+阅读 · 2019年3月5日
R语言数据挖掘利器:Rattle包
R语言中文社区
21+阅读 · 2018年11月17日
Python中机器学习的特征选择工具
云栖社区
8+阅读 · 2018年7月16日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
Python 爬虫实践:《战狼2》豆瓣影评分析
数据库开发
5+阅读 · 2018年3月19日
shiny动态仪表盘应用 | 中国世界自然文化遗产可视化案例
R语言中文社区
10+阅读 · 2017年11月29日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
Top
微信扫码咨询专知VIP会员