我有一个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)
给了我这个情节:
我不知道如何阅读这个情节。
我希望只看到两种颜色的点,一开始。
答案 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)
这给出了:
在scatterplot3d
中,还有一个angle
参数用于不同的视图。