[R] Print plot to pdf, jpg or any other format when using scatter3d error

David Winsemius dwinsemius at comcast.net
Tue Jan 4 08:37:39 CET 2011


On Jan 3, 2011, at 8:17 PM, Jurica Seva wrote:

> Hi,
>
> I have been trying to output my graphs to a file (jpeg, pdf, ps, it  
> doesnt matter) but i cant seem to be able to get it to output. I  
> tried a few things but none of them worked and am lost as what to do  
> now. I am using the scatter3d function, and it prints out the graphs  
> on tot he screen without any problems, but when it comes to writing  
> them to a file i cant make it work. Is there any other way of  
> producing 3dimensional graphs (they dont have to be rotatable/ 
> interactive after the print out)?
>
> The code is fairly simple and is listed down :
>
> #libraries
> library(RMySQL)
> library(rgl)
> library(scatterplot3d)
> library(Rcmdr)
>
> ##############################################################################
> #database connection
> mycon <- dbConnect(MySQL(),  
> user='root',dbname='test',host='localhost',password='')
> #distinct sessions
> rsSessionsU01 <- dbSendQuery(mycon, "select distinct sessionID from  
> actiontimes where userID = 'ID01'")
> sessionU01 <-fetch(rsSessionsU01)
> sessionU01[2,]
>
> #user01 data
> mycon <- dbConnect(MySQL(),  
> user='root',dbname='test',host='localhost',password='')
> rsUser01 <- dbSendQuery(mycon, "select  
> a 
> .userID 
> ,a 
> .sessionID 
> ,a 
> .actionTaken 
> ,a.timelineMSEC,a.durationMSEC,b.X,b.Y,b.Rel__dist_,b.Total_dist_  
> from `actiontimes` as a , `ulogdata` as b where a.originalRECNO =  
> b.RECNO and a.userID='ID01'")
> user01 <- fetch(rsUser01, n= -1)
> user01[1,1]
>
> #plot loop
>
> for (i in 1:10){
>
>    userSubset<-subset(user01,sessionID ==  
> sessionU01[i,],select=c(timelineMSEC,X,Y))
>    userSubset
>    x<-as.numeric(userSubset$X)
>    y<-as.numeric(userSubset$Y)
>    scatter3d(
#???  I thought the function was scatterplot3d()

> x,y,userSubset$timeline,xlim = c(0,1280), ylim = c(0,1024),  
> zlim=c(0,1800000),type="h",main=sessionU01[i,],sub=sessionU01[i,])
>    tmp6=rep(".ps")

Why name it ".ps" when you are using pdf.dev()?

>    tmp7=paste(sessionU01[i,],tmp6,sep="")
>    tmp7
>    rgl.postscript(tmp7,"ps",drawText=FALSE)

When you want to get output to the file device, you need to "surround"  
the plotting commands. the pdf call goes at the beginning of the loop  
and the dev.odd at the end. It seems dangerous to specify the number  
to dev.off since there might be no or more than one device already  
open. If you just use dev.off() you will close the last device that  
was opened,'


>    #pdf(file=tmp7)  # Move before the scatterplot3d call

>    #dev.print(file=tmp7, device=pdf, width=600)

# you should also make sure you created a valid file string. We cannot  
check since you have not offered a reproducible example.



>    #dev.off(2)
> }
>


David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list