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。埃德加·阿库纳
我目前正在为多元数据分析专业的毕业生 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。埃德加·阿库纳