Save the orientation of a RGL plot3d() plot
Asked Answered
C

1

26

I have a 3D plot using RGL. I would like to make identical plots using color to highlight the distribution of some variable. To do this I would like to have identical plots, how do I find and set the orientation of a plot?

Once I make a preliminary plot, I move it around to find a nice display angle and I would like to save that angle and incorporate it into future plotting scripts. Anyone have a suggestion on how to do this?

library(rgl)
plot3d(iris) 
#play with the plot to find a good angle
#save the angle for future plots
Crinose answered 3/5, 2013 at 15:22 Comment(4)
try pp <- par3d(no.readonly=TRUE); ...; par3d(pp)Patriciapatrician
also - is there a good way to hardcode it - i,e, save pp as a variable that I can incorporate into a future script without recalculating?Crinose
Also check out ?rgl.viewpointGreenleaf
Thanks James. I could imagine taking the output of the par3D() call and hardcoding the view into my script using rgl.viewpoint - great tip.Crinose
L
22

Ben's comment basically answers your question; this just applies expand.dots to what he wrote ;)

## In an inital session:

library(rgl)
plot3d(iris) 

## Now move the image around to an orientation you like

## Save RGL parameters to a list object
pp <- par3d(no.readonly=TRUE)

## Save the list to a text file
dput(pp, file="irisView.R", control = "all")

.......

## Then, in a later session, to recreate the plot just as you had it:

library(rgl)
pp <- dget("irisView.R")
plot3d(iris)
par3d(pp)
Lamina answered 3/5, 2013 at 16:0 Comment(3)
It's safer to use control="all" in the dput() line, as that saves all of the deparsing information and ensures that the result of dget works.Shaylynn
Without control="all" I got an error incorrect number of dimensions, because dget() incorrectly flattened the userMatrix to a list.Shaylynn
@AssadEbrahim -- Thanks for noting that! I just edited the answer incorporate your suggested improvement.Bissell

© 2022 - 2024 — McMap. All rights reserved.