[R] Using 'polygon' in a 3d plot

Henrik Bengtsson hb at maths.lth.se
Thu Jan 5 01:07:58 CET 2006


Ted Freeman wrote:
> I'm new to R, after many years of using Matlab. I've found the R 
> function 'polygon' to be nearly equivalent to the Matlab function 
> 'patch'. For example, the R commands:
> 
> plot(c(0, 5), c(0, 4), type = 'n', asp = 1, ann = FALSE)
> x <- c(1, 2, 2, 1.5, 1)
> z <- c(1, 1, 2, 1.7, 2)
> polygon(x, z, col = 'green')
> 
> produce a plot with a small green shape exactly as I expect. A nearly 
> identical plot can be made in Matlab with these commands:
> 
> x = [1, 2, 2, 1.5, 1];
> z = [1, 1, 2, 1.7, 2];
> patch(x, z, 'g')
> axis([0, 5, 0, 4])
> box on
> 
> In Matlab I am able to extend this quite easily to a three-dimensional 
> plot by simply adding one more vector argument to 'patch'. I don't see 
> how to do this in R using 'polygon'. (I've primarily looked at 
> scatterplot3d.) Is there another function I can use?
> 
> Since I expect that many of you do not use Matlab, I've put two 
> graphics showing the example above (Plot 1) and a similar 
> three-dimensional plot (Plot 2) on this page:
> http://staff.washington.edu/freeman/patch.html.

Hi, I've got a plot3d() and polygon3d() function in the R.basic package 
(http://www.braju.com/R/).  Example:

library(R.basic)  # plot3d() and polygon3d()
xb <- c(0, 4, 4, 0, 0)
yb <- c(0, 3, 3, 0, 0)
zb <- c(0, 0, 4, 4, 0)
plot3d(xb,yb,zb, type="l", theta=35, phi=30)
x <- c(0.8, 1.6, 1.6, 1.2, 0.8)
y <- c(0.6, 1.2, 1.2, 0.9, 0.6)
z <- c(1, 1, 2, 1.7, 2)
polygon3d(x,y,z, col="green")

This gives a similar plot to what Matlab creates.

/Henrik

> It's Plot 2 that I'd like to be able to reproduce in R.
> 
> Thanks for any advice!
> 
>   -- Ted
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html
> 
>




More information about the R-help mailing list