R语言|canvasXpress—动态图首选

Posted R语言与SPSS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R语言|canvasXpress—动态图首选相关的知识,希望对你有一定的参考价值。



我就在这里,不离不弃

——A·May

R-84|T-104


 我是canvasXpress

May

2018年2月23日

  前几天在R中文社区看见的关于动态图的制作的canvasXpress包,可以说是一见钟情,这个包的优秀之处不用我多言,不用和shiny一样复杂的编码,就可以制作出相应的动态图。本人也尝试了下shiny包,发现,学起来还是在server的编码处有问题,所以,想转过头来学下这个包,不过遗憾的是并没有发现全中文的教学,比较好一点的还是’宏基因组’中刘永鑫老师在R中文社区的一篇文。总而言之,想要学习这个canvasXpress包,就要自己慢慢挖掘了。

  引用刘永鑫老师的话:“CanvasXpress核心是一个Java语言编写的库,主要用于可重复 研究。在R中可以安装canvasXpress包,使用canvasXpress命令绘制各种各样的交互式图形,非常高效方便,实现如下数百种图形,令你的结果瞬间B格爆满。”

R语言|canvasXpress—动态图首选

1.首次安装canvaxXpress
 
   
   
 
  1. # 没有devtools也需要安装

  2. install.packages(devtools)

  3. library(devtools)

  4. # 安装canvasXpress

  5. devtools::install_github('neuhausi/canvasXpress')

 
   
   
 
  1. library(canvasXpress)

2.canvasXpress的帮助文件
2.1帮助文件
 
   
   
 
  1. ?canvasXpress

  2. #这个帮助文档都是参数,且没有示例

2.2 翻译内容仅供参考
 
   
   
 
  1. #Description

  2. #描述

  3. #Custom html widget creation function based on widget YAML and javascript for use in any html-compatible context

  4. #自定义HTML控件创建函数基于Widget YAML和JavaScript中使用任何HTML兼容的环境

  5. #Usage

  6. #用法

  7. #canvasXpress(data = NULL, smpAnnot = NULL, varAnnot = NULL,graphType = "Scatter2D", events = NULL, afterRender = NULL,pretty = FALSE, digits = 4, width = 600, height = 400,destroy = FALSE, ...)

  8. #Arguments

  9. #参数

  10. #data    data.frame-, matrix-, or list- classed data object

  11. #数据  数据框,矩阵,列表等

  12. #smpAnnot    additional data that applies to samples (columns)

  13. #适用于样本(列)的附加数据

  14. #varAnnot   (variable annotate 变量注释)

  15. #additional data that applies to variables (rows)

  16. #适用于变量(行)的附加数据

  17. #graphType  

  18. #type of graph to be plotted - default = "Scatter2D"

  19. #绘制图形,默认为2D散点图

  20. #events

  21. #user-defined events (e.g. mousemove, mouseout, click and dblclick)

  22. #事件,对图的不同操作,包括鼠标移动,鼠标探寻,单击和双击,这个一般不用设置

  23. #afterRender    

  24. #event triggered after rendering

  25. #pretty

  26. #print tagged code (json/html) nicely - default = FALSE

  27. #打印标记代码(JSON / HTML)-默认= false

  28. #digits

  29. #display digits - default = 4

  30. #小数点默认为4个

  31. #width  

  32. #plot width (valid CSS units) - default = 600px

  33. #height

  34. #plot height (valid CSS units) - default = 400px

  35. #图形的默认宽和长度,可以自己设置

  36. #destroy    

  37. #used to indicate removal of a plot - default = FALSE

  38. #用来表示删除一个情节-默认= false

  39. #additional parameters passed to canvasXpress 还有其他的参数并没有说明...

3.canvasXpress的示例

  canvasXpress包有一个官网,网址为https://canvasxpress.org/html/index.html, 复制网址用浏览器打开,或者百度搜索canvasXpress,手机打开的效果可能不会太好。官网首页的图,建议大家用chrome浏览器打开,里面的翻译成中文功能,还可以将动态图中的英文翻译为中文哦! R语言|canvasXpress—动态图首选

 
   
   
 
  1. #######vignette查看更多示例

  2. # 显示该包中所有示例,目前有开始和额外两类

  3. vignette(package = "canvasXpress")

  4. # 分别展示每个示例# 初级入门教程,也是上面提到的例子

  5. vignette( "getting_started", package = "canvasXpress")

  6. # 额外示例,包括数据分析过程

  7. vignette( "additional_examples", package = "canvasXpress")

4. 比对示例研究参数
4.1 示例3D的散点图

  处于分析的需要,我就不运行下面的示例,大家可以自己在Rstudio中运行。

 
   
   
 
  1. y <- read.table("http://www.canvasxpress.org/data/cX-irist-dat.txt", header=TRUE, sep="\t", 

  2.                 quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)

  3. # 读取分组信息

  4. z <- read.table("http://www.canvasxpress.org/data/cX-irist-var.txt", header=TRUE, sep= "\t", 

  5.                 quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)

  6. # 绘制三维散点图,主要参数为数据、分组、分组列、置信椭圆列、图表类型以及相关标签               

  7. canvasXpress(data      = y,

  8.              varAnnot  = z,

  9.              colorBy   = "Species",

  10.              ellipseBy = "Species",

  11.              graphType = "Scatter3D",

  12.              title     = "Iris Data Set",

  13.              xAxis     = list("Sepal.Length"),

  14.              yAxis     = list("Petal.Width"),

  15.              zAxis     = list("Petal.Length"))



R语言|canvasXpress—动态图首选

R语言|canvasXpress—动态图首选


4.2 示例3D的散点图的分析


 
   
   
 

  1. #首先是数据data集y

  2. library(data.table)

  3. 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)

  4. y <- as.data.table(y)

  5. #可以观察到y是鸢尾花数据中的数据,只是没有Sepecies的变量

  6. y


  7. #其次是varAnnot  = z,变量注释是z,这是分组数据

  8. # 读取分组信息

  9. z <- read.table("http://www.canvasxpress.org/data/cX-irist-var.txt", header=TRUE, sep= "\t", 

  10.                 quote="", row.names=1, fill=TRUE, check.names=FALSE, stringsAsFactors=FALSE)

  11. z <- as.data.table(z)

  12. z


  13. #######实际上这里有个问题,不知道大家注意到没有,分组数据和面板panel上的数据是分开读取的,我们可以一会试一下,直接用鸢尾花中的数据能否成功


  14. #颜色标度

  15. #colorby 用字段Species 

  16. #colorBy   = "Species"


  17. #椭圆形ellipse 置信区间 这个就是图形中的圈圈,也是用Species  

  18. #ellipseBy = "Species"


  19. #其他信息就简单了

  20. #graphType = "Scatter3D",

  21. #title     = "Iris Data Set",

  22. #xAxis     = list("Sepal.Length"),

  23. #yAxis     = list("Petal.Width"),

  24. #zAxis     = list("Petal.Length")

4.3 用鸢尾花数据做图
4.3.1 普通三维散点图
 
   
   
 
  1. data(iris)

  2. m_data <- t(iris[,1:3])           #矩阵转置

  3. m_varAnnot <- as.matrix(iris[,5])        #将分组变量varannot也转为矩阵

  4. colnames(m_varAnnot) <- "Species"        #给矩阵重新命名为Species

  5. canvasXpress(data = t(m_data),           #然后再转置回来,只为了保持数据一致

  6.             varAnnot = m_varAnnot,

  7.             colorBy="Species",          #颜色标度后的变量名一定是分组变量中的变量名Species

  8.             graphType = "Scatter3D",

  9.             title     = "my_Iris Data Set",

  10.             xAxis     = list("my_Sepal.Length"),

  11.             yAxis     = list("my_Petal.Width"),

  12.             zAxis     = list("my_Petal.Length")

  13.             )


R语言|canvasXpress—动态图首选

R语言|canvasXpress—动态图首选


经过反复的实验,这里应注意这三个问题


  1. data和var的数据格式问题。这个问题非常要命,如果你按照下面的编码写,m_data和m_varAnnot的格式虽然是数据框,但是实际上,data和m_varAnnot根本就匹配不到一起,这也是在官网案例中分开读取的必要性,所以这里必须保持数据的一致性。所以上面处理的时候用的是将两个数据都转为矩阵。

  2. 三维散点图的x/y/z轴只能展示三个变量,如果有4个变量,那么就取前三个变量

  3. 颜色标度一定要注意:colorBy=“Species”可以分出三组点,每组点不同颜色;colorBy=iris$Species和colorBy=m_varAnnot不能够分成三组,只是每个点一个颜色;不写颜色标度时,不能区分出颜色;

 
   
   
 
  1. data(iris)

  2. m_data <- iris[,1:4]

  3. m_varAnnot <- iris[,5]

  4. #canvasXpress(data = t(m_data),

  5.             #varAnnot = m_varAnnot,

  6.             #colorBy="Species",

  7.             #graphType = "Scatter3D",

  8.             #title     = "my_Iris Data Set",

  9.             #xAxis     = list("my_Sepal.Length"),

  10.             #yAxis     = list("my_Petal.Width"),

  11.             #zAxis     = list("my_Petal.Length"))

  12. # Error in seq.default(length = nrow(x)) : argument 'length.out' must be of length 1

4.3.1 普通二维散点图

  在这个图中,我并没有加入分组变量varannot,所以我也不用将数据转为矩阵的格式,直接作出散点图。

 
   
   
 
  1. canvasXpress(data = iris[,1:4],

  2.             colorBy=iris[,5],

  3.             graphType = "Scatter2D",

  4.             title     = "my_Iris Data Set",

  5.             xAxis     = list("my_Sepal.Length"),

  6.             yAxis     = list("my_Petal.Width"),

  7.             zAxis     = list("my_Petal.Length")

  8.             )


R语言|canvasXpress—动态图首选

还有很多参数需要学习,明天见!

参考阅读



学习数据挖掘交流平台 

长按二维码识别


点击阅读原文,进入Rpubs看看动图

以上是关于R语言|canvasXpress—动态图首选的主要内容,如果未能解决你的问题,请参考以下文章

r语言绘制动态统计图:绘制世界各国的人均GDP,出生时的预期寿命和人口气泡图动画动态gif图|附代码数据

R语言绘制动态图

R语言实战应用精讲50篇(十九)-R语言gganimate函数应用案例:静态图变成动态,让你的图表更酷炫

R语言模拟人类生活预期寿命动态可视化动画图gif

R语言模拟人类生活预期寿命动态可视化动画图gif

R语言ggplot2和gganimate包可视化动态动画气泡图(Animated Bubble chart):使用gganimate包创建可视化gif动图