[R] Plotting separate populations in scatterplot3d

Yasir Kaheil kaheil at gmail.com
Tue May 6 20:02:13 CEST 2008


#Install library rgl 
#here is the function which you need to run first: 
rgl.plot3d<-function(z, x, y, cols="red",axes=T,new=T) 
{xr<-range(x) 
x01<-(x-xr[1])/(xr[2]-xr[1]) 
yr<-range(y) 
y01<-(y-yr[1])/(yr[2]-yr[1]) 
zr<-range(z) 
z01<-(z-zr[1])/(zr[2]-zr[1]) 

if(new) rgl.clear() 
if(axes) 
        {xlab<-pretty(x) 
        ylab<-pretty(y) 
        zlab<-pretty(z) 
        xat<-(xlab-xr[1])/(xr[2]-xr[1]) 
        yat<-(ylab-yr[1])/(yr[2]-yr[1]) 
        zat<-(zlab-zr[1])/(zr[2]-zr[1]) 
        rgl.lines(c(0,1.1),0,0) 
        rgl.lines(0,c(0,1.1),0) 
        rgl.lines(0,0,c(0,1.1)) 
        rgl.texts(xat,-.05,-.05,xlab) 
        rgl.texts(-.05,yat,-.05,ylab) 
        rgl.texts(-.05,-.05,zat,zlab) 
        rgl.texts(c(0.5,-.15,-.15),c(-.15,.5,-.15),c(-.15,-.15,.5), 
               
c(deparse(substitute(x)),deparse(substitute(y)),deparse(substitute(z)))) 
        } 

rgl.spheres(x01,y01,z01,.01,color=cols) 
} 

#and here is how you call it 
library(rgl) 
data(iris) 

iris.pc<-prcomp(iris[,1:4],scale=T) 
rgl.plot3d(iris.pc$x[,1],iris.pc$x[,2],iris.pc$x[,3]) 
# different colors 
rgl.plot3d(iris.pc$x[,1],iris.pc$x[,2],iris.pc$x[,3],col=unclass(iris[,5])+1) 


Refer to:
http://www.nabble.com/interactive-rotatable-3d-scatterplot-td17030023.html#a17030164

thanks
y


Eleca Dunham wrote:
> 
> Hi,
> 
> I'm having trouble plotting populations as separate colors and points in
> the
> 3d scatterplot package. I have a column with 4 different population names
> and 3 columns with my data. I want to plot each population with a
> different
> color and pch. In addition, I want to use the type="h" in my plotting so
> that I can see the points clearly in my graph( for publication purposes).
> I've also attached an example dataset.
> 
> I simply want to show that each population clusters separately in space.
> 
> I've attached a visual representation of what I want my data to look like.
> The scripts for this graph is as follows:
> 
> data(trees) 
> s3d <- scatterplot3d(trees, type = "h", color = "blue",
> angle = 55, scale.y = 0.7, pch = 16, main = "Adding elements")
> 
> For some reason, R will not read my header, so I had to use the data.frame
> function to get R to read my data. This is a real pain because I have tons
> of data. I've tried the following to get R to recognize each population
> type
> separately:
> 
> PopulationType.LK1<-PopulationType[LK1]
> PopulationType.LK2<-PopulationType[LK2]....
> points((PopulationType.LK1, col="red", pch=19), (PopulationType.LK2,
> col="blue", pch=22), .....)
> 
> When I tweak the example tree code from above, R will plot all of my data
> no
> problem (with the rgl 3d graphs, not scatterplot3d), but only with one
> color
> and plotting character. It seems pretty straightforward, but I've spent 4
> days on this already.
> 
> 
> 
> Any help would be greatly appreciated.
> 
> Regards,
> EJ
> 
> 
> 
> ______________________________________________
> 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.
> 
> 


-----
Yasir H. Kaheil, Ph.D.
Catchment Research Facility
The University of Western Ontario 

-- 
View this message in context: http://www.nabble.com/Plotting-separate-populations-in-scatterplot3d-tp17088785p17088937.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list