R 中的 RadViz 和 survey/permutation 矩阵图

RadViz & survey/permutation matrix plots in R

我目前正在为多元数据分析专业的毕业生 class 做一个简短的演示。它是关于显示多元数据的方法(为了人类理解),在我们应该介绍的六种方法中,我已经采用了 radial visualization plots(具体称为 "RadViz" 的类型)和调查图(这是各种排列矩阵可视化,或者我从我的研究中被引导理解)。虽然我已经能够找到足够的资源来了解这些可视化方法的使用及其 benefits/drawbacks,但我在寻找代码以在 R 中实现它们时遇到了问题。

我找到了两个用户编写的函数,它们将在 R 中执行 survey plots and radial visualization。这些函数似乎是包 "dprep" 的一部分,此后已从 CRAN 中停止使用——并像我一样尝试可能,当我从存档中下载旧版本时,我似乎无法将它作为一个包安装。此外,所有这些代码现在已经有六年了,并且有几个版本没有数据,如果它在某些时候可能变得完全无法使用,我会犹豫是否将它推荐给 class 朋友。

我想我想问的是是否有更简单或更简洁的方法——可能作为现有包的一部分——在 R 中实现这些可视化,或者如果我唯一的选择是使用上面的(非常旧)代码来做到这一点。我知道其他编程语言(Python)以及其他软件(Orange、VisuLab)的解决方案,但由于 class 主要基于使用 R,我想如果可以的话,我可以在其中展示。

看来我们需要教你搜索。 google 路径始终可用,但对于 R 功能,如果主题名称通常用于其他概念,则它有时不够具体。我经常将搜索词与 'rproject'

配对
https://www.google.com/search?q=radviz&ie=utf-8&oe=utf-8#q=radviz+rproject

调出:

http://www.cs.uml.edu/~phoffman/Radviz/readme.txt # R interface to C-implementation

...以及许多其他人,但需要一些努力才能找到特定于 R 的实现。

我使用 sos 包中的 findFn-函数取得了很多成功:

install.packages("sos")
library(sos)

原本我以为这只是普通的雷达图,但似乎有些不同。

> findFn("Radial Coordinate Visualization")
found 12 matches;  retrieving 1 page

Downloaded 4 links in 3 packages. 

在 Radviz 上搜索只找到一个项目,radviz2d,其帮助页面链接到同一包 'dprep' 中的 surveyplot 函数。仅 'radial' 一词就产生了大量可能难以管理的数字:

> findFn("radial plots")
found 456 matches;  retrieving 20 pages, 400 matches.
2 3 4 5 6 7 8 9 10 
11 12 13 14 15 16 17 18 19 20 

这些条款提供了一个更易于管理的数字。雷达图或蜘蛛图通常用于离散变量,但径向坐标可视化似乎是一种在二维域上投影多元关联的方法。 'circular' 包还处理连续变量的显示和统计。

我从 CRAN Archive 下载并解压了 radviz 2.1 版:dprep_2.1.tar.gz:

source('~/Downloads/dprep/R/radviz2d.R', chdir = TRUE)
  mmnorm <-
 function (data,minval=0,maxval=1) 
 {
 d=dim(data)
 c=class(data)
 cnames=colnames(data)
 classes=data[,d[2]]
 data=data[,-d[2]]
 minvect=apply(data,2,min)
 maxvect=apply(data,2,max)
 rangevect=maxvect-minvect
 zdata=scale(data,center=minvect,scale=rangevect)
 newminvect=rep(minval,d[2]-1)
 newmaxvect=rep(maxval,d[2]-1)
 newrangevect=newmaxvect-newminvect
 zdata2=scale(zdata,center=FALSE,scale=(1/newrangevect))
 zdata3=zdata2+newminvect
 zdata3=cbind(zdata3,classes)
 if (c=="data.frame") zdata3=as.data.frame(zdata3)
 colnames(zdata3)=cnames
 return(zdata3)
 }
load("/Users/davidwinsemius/Downloads/dprep/data/my.iris.rda")
radviz2d(my.iris,"Iris")

该包还有其他几个函数,包括 R 中可用的调查图,因此它们不需要编译。包里有个编译好的函数我没研究过

我发布了新版本的 dprep。埃德加·阿库纳