我目前正在使用 RStudio 使用从 SPSS 导入的数据为我的 PCA 生成 3D 图。
目前,我有10个治疗组,每个组有5个受试者。我想绘制一个 3D 图,其中每个治疗组都用一种颜色表示,并且同一治疗组中的每个受试者都具有相同的颜色。同样重要的是,这些颜色都不能重复。
我能够生成 3d 图,但是,有 2 个使用相同颜色的治疗组。
谁能帮我纠正这个问题,这样不同的治疗组就不会有重复的颜色?
这是我正在使用的代码。
db = file.choose()
hpca = read.table(db, header=TRUE)
pc <- princomp(hpca[,2:7], cor=TRUE, scores=TRUE)
plot3d(pc$scores[,1:3], col=hpca$group, size = 6)
text3d(pc$scores[,1:3],texts=hpca$ï..tag)
text3d(pc$loadings[,1:3], texts=rownames(pc$loadings), col="red")
coords <- NULL
for (i in 1:nrow(pc$loadings)) {
coords <- rbind(coords, rbind(c(0,0,0),pc$loadings[i,1:3]))
}
lines3d(coords, col="red", lwd=4)
*p/s;我是R编程的新手,这些代码中的大多数都是从在线指南中复制的。因此,如果您能告诉我确切地在哪里包含更改,那将非常有帮助。提前非常感谢!
您正在将颜色设置为组值。 这有时有效,因为组值通常是因子,因子存储为整数值,但它有点命中和未命中。
最好明确计算颜色。 例如,您可以使用以下方法获得 10 种颜色的矢量
cols <- rainbow(10)
然后将其用作
plot3d(..., col=cols[as.numeric(gp)])
如果gp
包含具有 10 个级别的因子。
在基础R中有几个函数可以选择颜色(见?rainbow
(,其他函数则在不同的调色板的贡献包中。