# [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
> 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.
>
>
>   -- Ted
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help