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

Uwe Ligges ligges at statistik.tu-dortmund.de
Tue Jan 4 09:05:27 CET 2011



On 04.01.2011 08:37, David Winsemius wrote:
>
> 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()

scatter3d() is provided by Rcmdr and an interface to the rgl package.


>> 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()?


Actually he is not using it (at least it is in comments).


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


That should be correct code, according to the rgl documentation.


> 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,'

Using R standard devices will not work for rgl graphics.

Best wishes,
Uwe


>
>> #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
>
> ______________________________________________
> 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.



More information about the R-help mailing list