[R] lines on persp plot - proper depth ordering

Duncan Murdoch murdoch.duncan at gmail.com
Sat Apr 21 01:30:21 CEST 2012


On 20/04/2012 2:48 PM, Nate Cermak wrote:
> Hello R-help!
> I am trying to draw series of lines in 3d, and I am not sure how to get the
> depth set up properly - lines that are in front of other lines appear to be
> behind and vice versa. I've been doing this by first generating an empty
> persp plot, then adding lines via the data into trans3d followed by lines
> (this is probably a bad approach, but it was the first one I could get
> working).

The only possibility with persp is for you to draw the ones that need to 
be behind first, the ones in front later. Persp can't do it, you have 
to.  The rgl package can do the sorting, but there are other limitations 
in it that you might not find acceptable, particularly in output formats.

Duncan Murdoch

>
> Here is a semi-contrived minimal example of my problem:
>
> ###########################################################
> #line 1
> x1=0:10;
> y1=rep(0,11);
> z1 = rep(5,11);
>
> #line 2
> x2=y2=z2 = 0:10
>
> # make empty persp plot (awful hack to make a surface out of view)
> pmat = persp(x=c(-10.1,-10), y=c(-10.1,-10), z=matrix(c(0,.1,0,.1),
> nrow=2),
>      xlim=c(0,10), ylim=c(0,10), zlim=c(0,10), xlab='x', ylab='y', zlab='z')
>
> # now draw the lines
> lines( trans3d(x1, y1, z1,pmat), col="grey", lwd=3)
> lines( trans3d(x2, y2, z2,pmat), col="red", lwd=3)
> #############################################################
>
> Ideally, the red line would occur behind the grey line (and in this
> example, I could very simply switch the order and fix the problem), but I'm
> not sure how to make this happen in the general case. I have a dataset of
> more like a hundred lines, many of which sort of corkscrew around one
> another. How can I ensure that the plotting of the lines respects the
> depth? Is there a better function I could be using for this? I tried plot3d
> in rgl and scatter3d in Rcmdr,  but both crash R on my system.
>
> Thanks so much in advance!
>
> -nate cermak
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> 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