[R] draw circle on PCA plot

Wai Kuan Yip waikuan.yip at gmail.com
Fri Nov 27 02:44:33 CET 2009


Phoebe,

Hi, this was how I solved that problem using plot(). I found using symbols
to be hard to adjust... 

#plot the 1st vs 2nd component
plot(x,y,ylab="2nd component", xlab="1st component", xlim=range(x),
ylim=range(y), main="1st vs 2nd component analysis")
#show the arrows, length defined by the 1st and 2nd compoentns
arrows(0,0,ePCAMat$vector[1,]*max(x),ePCAMat$vector[2,]*max(y),length=0.1,
angle=20, col="red")
text(ePCAMat$vector[1,]*max(x)*1.1, ePCAMat$vector[2,]*max(y)*1.1,
names(label), col="red",cex=0.5)

#THIS IS THE PART TO DO THE PLOTTING OF CIRCLES
#You need to calculate the center of each class cluster beforehand 
for(i in 1:noClass){
   par(new=T)
   #specify the center x,y coordinate and then cex = radius  
   plot(center[i,1],center[i,2],ylab="",
xlab="",xlim=range(x),ylim=range(y),pch=1,cex=mean(distances[i,]),col=(i+1))
  
}


--------------
Wai-Kuan YIP

http://www.deakin.edu.au/~waiyip http://www.deakin.edu.au/~waiyip 



phoebe kong wrote:
> 
> Hi,
> 
> I have a hard time in drawing circle on PCA.
> I have 60 samples. The corresponding PC1 scores and PC2 scores were stored
> as "mergedata". Here are the summary of PCs scores.
> 
>> range(mergedata[,"PC1"])
> [1] 0.0085 0.0100
>> range(mergedata[,"PC2"])
> [1] 0.0032 0.0075
>> mean(mergedata[,"PC1"])
> [1] 0.009241667
>> mean(mergedata[,"PC2"])
> [1] 0.005541667
>> dim(mergedata)
> [1]  60 102
> First of all, I need to find the center of the cluster points in PC plot.
> Then, I would lilke to draw out from that center concentric circles with
> radius 1 SD, 1.5 SD, 2 SD, 2.5 SD and 3 SD.
> 
> plot(mergedata[,"PC1"],mergedata[,"PC2"],xlab="PC1",ylab="PC2",xlim=range(mergedata[,"PC1"]),ylim=range(mergedata[,"PC2"]),pch=20,col="blue")
> ####circle with radius 1SD
> symbols(mean(mergedata[,"PC1"]),mean(mergedata[,"PC2"]),circle=sd(c(mergedata[,"PC2"],mergedata[,"PC1"])),inches=FALSE,add=TRUE)
> 
> 
> However, only points were plotted, but the cicle doesn't appear. Could
> anyone tell me what's wrong with my code?
> 
> Thanks,
> Phoebe
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
> 
> 

-- 
View this message in context: http://old.nabble.com/draw-circle-on-PCA-plot-tp26517726p26535850.html
Sent from the R help mailing list archive at Nabble.com.




More information about the R-help mailing list