1

我有一个 R data.frame:

> str(trainTotal)
'data.frame':   1000 obs. of  41 variables:
 $ V1   : num  0.299 -1.174 1.192 1.573 -0.613 ...
 $ V2   : num  -1.227 0.332 -0.414 -0.58 -0.644 ...
   etc.
 $ V40  : num  0.101 -1.818 2.987 1.883 0.408 ...
 $ Class: int  1 0 0 1 0 1 0 1 1 0 ...

我想根据 V13、V5 和 V24 绘制蓝色“0”类和红色“1”类的 3D 散点图。

当按比例方差排序时,V13、V5、V24 是排名靠前的变量,所以我的直觉告诉我 3D 可视化可能很有趣。不确定这是否有意义。

我怎样才能用 R 绘制这个?


编辑:

我尝试了以下方法:

install.packages("Rcmdr")
library(Rcmdr)

scatter3d(x=trainTotal[[13]], y= trainTotal[[5]], z= trainTotal[[24]], point.col = as.numeric(as.factor(trainTotal[,41])), size = 10)

这给了我这个情节: 在此处输入图像描述

我不知道如何阅读这个情节。

首先,我宁愿只看到两种颜色的点。

4

2 回答 2

1

也许是这样的?使用scatterplot3d.

    library(scatterplot3d)

    #random data
    DF <- data.frame(V13 = sample(1:100, 10, T), V5 = sample(1:100, 10, T), V24 = sample(1:100, 10, T), class = sample(0:1, 10, T))

    #plot
    scatterplot3d(x = DF$V13, y = DF$V5, z = DF$V24, color = c("blue", "red")[as.factor(DF$class)], pch = 19)

这给出了:

绘图3d

scatterplot3d里面也有不同angle观点的争论。

于 2013-10-16T11:49:38.333 回答
1

透视问题意味着静态 3d 绘图大多是可怕的和误导性的。如果你真的想要一个 3d 散点图,最好画一个你可以从不同角度查看它的地方。该rgl软件包允许这样做。

编辑:我已经更新了绘图以使用颜色,在这种情况下使用colorspace包选择,尽管您可以根据需要定义它们。?rgl.material帮助页面上描述了指定点的属性。

library(rgl)
library(colorspace)

n_points <- 50
n_groups <- 5
some_data <- data.frame(
  x     = seq(0, 1, length.out = n_points), 
  y     = runif(n_points), 
  z     = rnorm(n_points),
  group = gl(n_groups, n_points / n_groups)
)

colors <- rainbow_hcl(n_groups)
with(some_data, points3d(x, y, z, color = colors[group], size = 7))
axes3d()
于 2013-10-16T10:29:37.097 回答