Context: I have two or more rgl-based views of a given data set, perhaps fitting different models, or showing different things across views. I want to be able to hand-rotate, zoom, scale one view to something I like, and then show the other views with matching viewpoints and scaling. so that one could flip back/forth among graphs and see only the relevant differences.

In 2D, all this usually requires is setting the same xlim, ylim and other constant aspects across
multiple graphs.

In 3D with rgl, I can do one graph, rotate, zoom, etc.  by hand
and capture the viewpoint with par3d("userMatrix"),
but I can't figure out how to save the zoom and scale values to reproduce that viewpoint in another graph, in a way I could feed to view3d or rgl.viewpoint and get an equivalent view of the new data/model.

An example follows, but I don't know how to capture in code what I did manually to get graph 1 in the orientation, zoom and scaling to re-create in another session or another graph.... Which is why I'm asking for R-help.

library(vcdExtra)
HEC <- HairEyeColor[,c(1,3,4,2),]
# graph 1
mosaic3d(HEC)

# hand rotate, scale, then save orientation; make sure rgl window is not hidden
#snapshot3d("HEC3D-1a.png", top=TRUE)
M1a <- par3d("userMatrix")

# try to make this reproducible, across sessions
#> dput(M1a)
#structure(c(0.890118718147278, 0.105095967650414, -0.44344499707222,
#0, -0.454265862703323, 0.282511830329895, -0.84488445520401,
#0, 0.0364845432341099, 0.953489363193512, 0.299210667610168,
#0, 0, 0, 0, 1), .Dim = c(4L, 4L))
#>
M1a <-
structure(c(0.890118718147278, 0.105095967650414, -0.44344499707222,
0, -0.454265862703323, 0.282511830329895, -0.84488445520401,
0, 0.0364845432341099, 0.953489363193512, 0.299210667610168,
0, 0, 0, 0, 1), .Dim = c(4L, 4L))

# graph 2
mosaic3d(HEC, type="expected")
# present this in the same orientation
par3d(userMatrix=M1a)




--
Michael Friendly     Email: friendly AT yorku DOT ca
Professor, Psychology Dept.
York University      Voice: 416 736-5115 x66249 Fax: 416 736-5814
4700 Keele Street    Web:   http://www.datavis.ca
Toronto, ONT  M3J 1P3 CANADA

______________________________________________
R-help@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.

Reply via email to