根据3个变量用R绘制两个类的三维图

时间:2013-10-16 09:53:57

标签: r 3d plot

我有一个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绘制蓝色的Class“0”和红色的Class“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)

给了我这个情节: enter image description here

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

我希望只看到两种颜色的点,一开始。

2 个答案:

答案 0 :(得分:1)

透视问题意味着静态三维图大多是可怕的和误导性的。如果你真的想要一个三维散点图,最好绘制一个可以从不同角度查看它的地方。 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()

答案 1 :(得分: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)

这给出了:

plot3d

scatterplot3d中,还有一个angle参数用于不同的视图。