Skip to content

color-coding of biplot points for varimax rotated factors (from PCA)

1 message · Barbara Doll

#
I'm using R for PCA and? factor analysis. I want to create biplots of
varimax rotated factors that color-code points by their
classification. My research is on streams that are urban and rural.
So, I want to color code them by this classification. If you just do a
biplot from prcomp or princomp, you cannot add this color. So, I have
used some code developed by a graduate student in our statistics
department here at NC State University. However, when you compare the
two biplots, the observed points are not in the same location. The
variable vectors match up, but not the points. I'm not sure why. The
code is below. Please help.


label=data[,"Urban.Rural"]
indexU<-which(label=="U")
indexR<-which(label=="R")

collab<-rep(0,length(data[,1]))
collab[indexU]<-"Blue"
collab[indexR]<-"Green"

library(psych)

fit <- principal(mydata, nfactors = num.fac, rotate="varimax", scores = TRUE)

z1 <- sum(fit2$loadings[,1]^2)  ### need to scale scores and loadings
by these factors
z2 <- sum(fit2$loadings[,2]^2)

biplot(fit$scores[,c(1,2)]/c(z1, z2), loadings(fit)[,c(1,2)]*c(z1,
z2), xlabs=rep("", length(collab)),  col = c("black", "orange"))
legend(x="bottomright", legend=c("Urban","Rural"),
text.col=c("Blue","Green"), bg="Grey90")

### scale the plot parameters
rrr<-apply(fit$scores[,1:2],2, range)
(abs(rrr)+.1)*sign(rrr)
par(usr=as.vector(rrr))

### now include the colored points
points(fit$scores[,c(1,2)], col=collab, pch=20)