Dear R-Users, I am trying to plot an ellipsoid like function that represents some physical threshold in its eigenvalue space. I am facing a few problems generating a figure I need for my thesis. A small example looks as follwos where the two contour3d plots do NOT overlay as desired so you may try plotting the surfaces one by one to see what I mean.
==================================================================== # begin example require(rgl) require(misc3d) require(MASS); f <- function(x, y, z){ chi0=-0.6603368 eps0=0.006590395 xi0=0.01117194 (x^2 + y^2 + z^2 - chi0*(x*y + x*z + y*z))/eps0^2 + (x + y + z)/xi0 } ff <- function(x, y, z)x + y + z open3d() clear3d("all") bg3d(color="#887777") light3d() x <- seq(-.02,.02,len=20) # plot ellipsoid contour3d(f,1,x,x,x,color="#FF2222",alpha=0.5) # plot plane contour3d(ff,1,x,x,x,color="#FFCCCC",alpha=0.5) # plot data points spheres3d(c(-0.009379952, 0.007899338), c(-0.00879318, 0.00700924), c(-0.009009740, 0.007656409),radius=0.0005,color="#CCCCFF") # plot hydrostatic pressure line lines3d(c(-0.012, 0.012), c(-0.012, 0.012), c(-0.012, 0.012), col="#A8A8A8", lwd=4) # end example ==================================================================== I have three questions regarding this problem and I hope you could help me. 1. How can I overlay the plan plotted using contours3d(ff, ...) and the ellipsoid plotted with contours3d(f, ...) 2. Instead of using spheres3d(...) I would love to use plot3d to obtain proper x, y and z coordinate axes. Is there a possibility to overly the contour3d() and line3d() commands with pot3d? Otherwise is there a possibility to plot proper coordinate axes with tics and such as usual R plots? 3. How can I save the scene to an image? pdf(...) ... dev.off() seems not to work on my machine. I am using Ubuntu on a 32 Bit Laptop. Thanks a million for your help! Uwe Am Montag, den 13.12.2010, 10:20 -0500 schrieb Duncan Murdoch: > On 13/12/2010 10:13 AM, Uwe Wolfram wrote: > > > > > > I am currently trying to fit a tensorial function in its principal > > coorinate system. The function is given by: > > > > 1~(x1^2 + x2^2 + x3^2 - chi0*(x1*x2 + x1*x3 + x2*x3))/eps0^2 + (x1 + x2 > > + x3)/xi0 > > > > Where eps0 = 0.0066, chi0 = -0.66 and xi0 = 0.011 are obtained from > > experimental data using nls().I am able to plot the experimental points > > that delivered the parameters of the function. For my thesis, however, I > > need to overlay the fitted surface. So far I am using the following code > > which wonderfully plots the experimental points in 3D: > > > > =================================================================== > > # from demo(bivar) > > require(rgl) > > require(misc3d) > > require(MASS); > > > > # New window > > open3d() > > # clear scene: > > clear3d("all") > > # setup env. That is, background, light and so on: > > bg3d(color="#887777") > > light3d() > > # spheres at points in principal strain space > > #spheres3d(e1,e2,e3,radius=0.00025,color="#CCCCFF") > > # draws points alternatively > > plot3d(e1,e2,e3, col="#CCCCFF") > > =================================================================== > > > > According to the examples on http://rgl.neoscientists.org/gallery.shtml > > I tried to overlay the point plot using surface3d. However, these were > > only functions of type y ~f(x1, x2). I think that the surface could be > > plotted if I could provide the gridpoints correctly. Using > > xyz.coords(1~(x1^2 + x2^2 + x3^2 - chi0*(x1*x2 + x1*x3 + x2*x3))/eps0^2 > > + (x1 + x2 + x3)/xi0, y = NULL, z = NULL) did unfortunately not solve > > the problem. > > > > Is there any function that can generate the surface for the given > > function such as ContourPlot3D in Mathematica. > > See ?misc3d::contour3d > ______________________________________________ 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.