【问题标题】:RadViz & survey/permutation matrix plots in RR中的RadViz和调查/排列矩阵图
【发布时间】:2015-06-09 20:24:05
【问题描述】:

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

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

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

【问题讨论】:

    标签: r data-visualization


    【解决方案1】:

    听起来我们需要教你搜索。 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-function取得了很多成功:

    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 函数。仅“径向”一词就带来了很多,可能难以管理:

    > 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 
    

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

    我从 CRAN 档案中下载并解压了 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 中可用的调查图,因此它们不需要编译。包里有个编译函数我没调查过。

    【讨论】:

    • 其实这一切都是我自己发现的,这就是为什么我试图在原始问题中对其进行总结。 (我很抱歉我做得不好——已经很晚了,我试图总结很多东西,但问题却没有永远持续下去。)正如你所说,RadViz 是一个将高维数据集投影为二维的方法,它与其他形式的径向图不同。 This 是对技术的一个很好的总结。
    • 在 Google 上筛选“radviz rproject”只产生了您发现的已弃用的“dprep”包,正如我在原始问题中提到的那样。我想知道是否有其他可用选项,我想我并没有完全说清楚,对此我深表歉意。
    • 我能够从 dprep-package 加载 .r 代码并运行它。我不会称之为“弃用”,只是被放弃了。
    • 啊,公平。也许“停产”是更好的术语,因为它不再是档案的一部分。我在安装代码时遇到问题,但可以继续处理它。所以我想答案是除了 dprep 中的内容之外,没有其他特定于 R 的实现?
    • 除了我提供的两种解决方案之外,我对于是否明确提出其他解决方案犹豫不决。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-01-27
      • 1970-01-01
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多