[R] lines in 3d-cloud plot (lattice)

Paul Murrell p.murrell at auckland.ac.nz
Sun Feb 1 22:07:08 CET 2004


Hi

Staying with Trellis graphics, and depending on what sort of lines you 
want to add, you could do something similar to persp() example # 2 using 
cloud() by writing your own panel.3d.cloud() function, which calls 
panel.3dscatter() and then does some further drawing.  This is an 
analogue to "the sequence plot(), followed by points() or
lines() in the base plotting functions", all done within a lattice panel 
function.  From a quick look at help(panel.cloud) it looks like the 
required transformation information is available via something like 
ltransform3dto3d().

Paul


Tom Blackwell wrote:
> Pascal  -
> 
> Getting away from Trellis graphics, you might consider using
> persp() with regular graphics.  Look at example # 2 under
> help("persp").
> 
> -  tom blackwell  -  u michigan medical school  -  ann arbor  -
> 
> On Fri, 30 Jan 2004, Deepayan Sarkar wrote:
> 
> 
>>On Friday 30 January 2004 06:13, Pascal A. Niklaus wrote:
>>
>>>Hi all,
>>>
>>>I'd like to plot a set of data (x,y,z) as 3D-cloud, and add several line
>>>plots to the same 3D graph:
>>>
>>>Two questions:
>>>
>>>1) How do I connect points to get a line?
>>>
>>>
>>>>cloud(z~x*y,data=d,zlim=c(0,1))        # works
>>>>cloud(z~x*predict(l),data=d,zlim=c(0,1),type="l")   # type="l" doesn't
>>>
>>>Warning message:
>>>type = l not implemented, consider using 'panel.3d.cloud =
>>>panel.3dscatter.old' in: panel.3d.cloud(x = x, y = y, z = z, rot.mat =
>>>rot.mat, za = za,
>>
>>Well, have you considered taking the hint and try
>>
>>cloud(z~x*predict(l),data=d,zlim=c(0,1),type="l",
>>      panel.3d.cloud = panel.3dscatter.old)
>>
>>?
>>
>>
>>>help.search("panel.3d.cloud") also didn't report any hits.
>>
>>panel.3d.cloud is the name of an argument to the panel.cloud function.
>>See ?panel.cloud for details. (Unfortunately, the docs are a bit outdated).
>>
>>
>>Briefly, panel.3dscatter.old is a very simple function, that calculates the 2D
>>projections of the given 3D points and then calls panel.xyplot with those.
>>Any 'type' argument which works with panel.xyplot would also work here,
>>including 'p' and 'l'. But no consideration is made of the fact that these
>>are 3D data. For instance, type = 'h' would not give you what you would
>>expect.
>>
>>
>>panel.3dscatter (the newer version) is a bit more sophisticated. For type =
>>'p', it draws the points in order of increasing depth, so that closer points
>>overwrite distant ones. Unfortunately, a collection of line segments is not
>>well ordered, and I haven't decided yet what to do in that case (which is why
>>the older version is still retained).
>>
>>
>>
>>>2) How do I superimpose a second data set onto the same graph?
>>>
>>>(something equivalent to the sequence plot(), followed by points() or
>>>lines() in the base plotting functions)
>>
>>
>>I'm not sure what you mean. Trellis plots are not supposed to be used for two
>>unrelated data sets, they are typically very much dependent on the structure
>>of the data set. Maybe we could help if you give more details of what exactly
>>you want to do, but before that you should read the ?panel.cloud help page
>>carefully, since anything 'special' would almost invariably involve playing
>>with things documented there.
>>
>>Hth,
>>
>>Deepayan
>>
>>______________________________________________
>>R-help at stat.math.ethz.ch mailing list
>>https://www.stat.math.ethz.ch/mailman/listinfo/r-help
>>PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
>>
> 
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


-- 
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
paul at stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/




More information about the R-help mailing list