我目前正在使用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编程的新手,大多数代码都是从在线指南中复制的。因此,如果您可以向我展示确切地包含更改的位置,那将非常有帮助。 提前非常感谢!
答案 0 :(得分:0)
您正在将颜色设置为组值。有时这是可行的,因为组值通常是因子,并且因子存储为整数值,但这是一种偶然。
最好显式计算颜色。例如,您可以使用
获得10种颜色的矢量cols <- rainbow(10)
然后将其用作
plot3d(..., col=cols[as.numeric(gp)])
如果gp
包含一个具有10个级别的因子。
基本R中有多个功能可以选择颜色(请参阅?rainbow
),而在其他功能包中,还有其他功能可以用于不同的调色板。