R语言|canvasXpress—动态图首选
Posted R语言与SPSS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言|canvasXpress—动态图首选相关的知识,希望对你有一定的参考价值。
我就在这里,不离不弃
——A·May
我是canvasXpress
May
2018年2月23日
前几天在R中文社区看见的关于动态图的制作的canvasXpress包,可以说是一见钟情,这个包的优秀之处不用我多言,不用和shiny一样复杂的编码,就可以制作出相应的动态图。本人也尝试了下shiny包,发现,学起来还是在server的编码处有问题,所以,想转过头来学下这个包,不过遗憾的是并没有发现全中文的教学,比较好一点的还是’宏基因组’中刘永鑫老师在R中文社区的一篇文。总而言之,想要学习这个canvasXpress包,就要自己慢慢挖掘了。
引用刘永鑫老师的话:“CanvasXpress核心是一个Java语言编写的库,主要用于可重复 研究。在R中可以安装canvasXpress包,使用canvasXpress命令绘制各种各样的交互式图形,非常高效方便,实现如下数百种图形,令你的结果瞬间B格爆满。”
# 没有devtools也需要安装
install.packages(devtools)
library(devtools)
# 安装canvasXpress
devtools::install_github('neuhausi/canvasXpress')
library(canvasXpress)
?canvasXpress
#这个帮助文档都是参数,且没有示例
#Description
#描述
#Custom html widget creation function based on widget YAML and javascript for use in any html-compatible context
#自定义HTML控件创建函数基于Widget YAML和JavaScript中使用任何HTML兼容的环境
#Usage
#用法
#canvasXpress(data = NULL, smpAnnot = NULL, varAnnot = NULL,graphType = "Scatter2D", events = NULL, afterRender = NULL,pretty = FALSE, digits = 4, width = 600, height = 400,destroy = FALSE, ...)
#Arguments
#参数
#data data.frame-, matrix-, or list- classed data object
#数据 数据框,矩阵,列表等
#smpAnnot additional data that applies to samples (columns)
#适用于样本(列)的附加数据
#varAnnot (variable annotate 变量注释)
#additional data that applies to variables (rows)
#适用于变量(行)的附加数据
#graphType
#type of graph to be plotted - default = "Scatter2D"
#绘制图形,默认为2D散点图
#events
#user-defined events (e.g. mousemove, mouseout, click and dblclick)
#事件,对图的不同操作,包括鼠标移动,鼠标探寻,单击和双击,这个一般不用设置
#afterRender
#event triggered after rendering
#pretty
#print tagged code (json/html) nicely - default = FALSE
#打印标记代码(JSON / HTML)-默认= false
#digits
#display digits - default = 4
#小数点默认为4个
#width
#plot width (valid CSS units) - default = 600px
#height
#plot height (valid CSS units) - default = 400px
#图形的默认宽和长度,可以自己设置
#destroy
#used to indicate removal of a plot - default = FALSE
#用来表示删除一个情节-默认= false
#additional parameters passed to canvasXpress 还有其他的参数并没有说明...
canvasXpress包有一个官网,网址为https://canvasxpress.org/html/index.html, 复制网址用浏览器打开,或者百度搜索canvasXpress,手机打开的效果可能不会太好。官网首页的图,建议大家用chrome浏览器打开,里面的翻译成中文功能,还可以将动态图中的英文翻译为中文哦!
#######vignette查看更多示例
# 显示该包中所有示例,目前有开始和额外两类
vignette(package = "canvasXpress")
# 分别展示每个示例# 初级入门教程,也是上面提到的例子
vignette( "getting_started", package = "canvasXpress")
# 额外示例,包括数据分析过程
vignette( "additional_examples", package = "canvasXpress")
处于分析的需要,我就不运行下面的示例,大家可以自己在Rstudio中运行。
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"))
#首先是数据data集y
library(data.table)
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)
y <- as.data.table(y)
#可以观察到y是鸢尾花数据中的数据,只是没有Sepecies的变量
y
#其次是varAnnot = z,变量注释是z,这是分组数据
# 读取分组信息
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)
z <- as.data.table(z)
z
#######实际上这里有个问题,不知道大家注意到没有,分组数据和面板panel上的数据是分开读取的,我们可以一会试一下,直接用鸢尾花中的数据能否成功
#颜色标度
#colorby 用字段Species
#colorBy = "Species"
#椭圆形ellipse 置信区间 这个就是图形中的圈圈,也是用Species
#ellipseBy = "Species"
#其他信息就简单了
#graphType = "Scatter3D",
#title = "Iris Data Set",
#xAxis = list("Sepal.Length"),
#yAxis = list("Petal.Width"),
#zAxis = list("Petal.Length")
data(iris)
m_data <- t(iris[,1:3]) #矩阵转置
m_varAnnot <- as.matrix(iris[,5]) #将分组变量varannot也转为矩阵
colnames(m_varAnnot) <- "Species" #给矩阵重新命名为Species
canvasXpress(data = t(m_data), #然后再转置回来,只为了保持数据一致
varAnnot = m_varAnnot,
colorBy="Species", #颜色标度后的变量名一定是分组变量中的变量名Species
graphType = "Scatter3D",
title = "my_Iris Data Set",
xAxis = list("my_Sepal.Length"),
yAxis = list("my_Petal.Width"),
zAxis = list("my_Petal.Length")
)
data和var的数据格式问题。这个问题非常要命,如果你按照下面的编码写,m_data和m_varAnnot的格式虽然是数据框,但是实际上,data和m_varAnnot根本就匹配不到一起,这也是在官网案例中分开读取的必要性,所以这里必须保持数据的一致性。所以上面处理的时候用的是将两个数据都转为矩阵。
三维散点图的x/y/z轴只能展示三个变量,如果有4个变量,那么就取前三个变量
颜色标度一定要注意:colorBy=“Species”可以分出三组点,每组点不同颜色;colorBy=iris$Species和colorBy=m_varAnnot不能够分成三组,只是每个点一个颜色;不写颜色标度时,不能区分出颜色;
data(iris)
m_data <- iris[,1:4]
m_varAnnot <- iris[,5]
#canvasXpress(data = t(m_data),
#varAnnot = m_varAnnot,
#colorBy="Species",
#graphType = "Scatter3D",
#title = "my_Iris Data Set",
#xAxis = list("my_Sepal.Length"),
#yAxis = list("my_Petal.Width"),
#zAxis = list("my_Petal.Length"))
# Error in seq.default(length = nrow(x)) : argument 'length.out' must be of length 1
在这个图中,我并没有加入分组变量varannot,所以我也不用将数据转为矩阵的格式,直接作出散点图。
canvasXpress(data = iris[,1:4],
colorBy=iris[,5],
graphType = "Scatter2D",
title = "my_Iris Data Set",
xAxis = list("my_Sepal.Length"),
yAxis = list("my_Petal.Width"),
zAxis = list("my_Petal.Length")
)
还有很多参数需要学习,明天见!
参考阅读
学习数据挖掘交流平台
长按二维码识别
点击阅读原文,进入Rpubs看看动图
以上是关于R语言|canvasXpress—动态图首选的主要内容,如果未能解决你的问题,请参考以下文章
r语言绘制动态统计图:绘制世界各国的人均GDP,出生时的预期寿命和人口气泡图动画动态gif图|附代码数据
R语言实战应用精讲50篇(十九)-R语言gganimate函数应用案例:静态图变成动态,让你的图表更酷炫
R语言ggplot2和gganimate包可视化动态动画气泡图(Animated Bubble chart):使用gganimate包创建可视化gif动图