Hi, I'm unable to find a way to smooth data for a persp() graph. Example, suppose that I have data x,y,z like this: x <- 1:10 y <- 1:10 k <- 20 z <- outer(x, y, "*") + matrix( k*runif(100, -1, 1), 10, 10) persp(x, y, z, theta = 35, phi = 25) The graph is not very nice. Is there a way to smooth the z data so that at the end the graph would look more like something like that: k <- 2 z <- outer(x, y, "*") + matrix( k*runif(100, -1, 1), 10, 10) persp(x, y, z, theta = 35, phi = 25) There seems to be many smoothing functions in R (e.g. loess) but I have not been able to find one for a 3D graph. Thanks! Guillaume
Take a look at the kde2d function in the MASS package, maybe it helps. Best kd 2012.06.19. 14:26 keltezéssel, Guillaume Chapron írta:> Hi, > > I'm unable to find a way to smooth data for a persp() graph. > > Example, suppose that I have data x,y,z like this: > > x<- 1:10 > y<- 1:10 > > k<- 20 > z<- outer(x, y, "*") + matrix( k*runif(100, -1, 1), 10, 10) > persp(x, y, z, theta = 35, phi = 25) > > The graph is not very nice. Is there a way to smooth the z data so that at the end the graph would look more like something like that: > > k<- 2 > z<- outer(x, y, "*") + matrix( k*runif(100, -1, 1), 10, 10) > persp(x, y, z, theta = 35, phi = 25) > > There seems to be many smoothing functions in R (e.g. loess) but I have not been able to find one for a 3D graph. > > Thanks! > > Guillaume > > ______________________________________________ > 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. > > >[[alternative HTML version deleted]]
On Jun 19, 2012, at 10:02 AM, David L Carlson wrote: kde2d is for two dimensional data. The persp graph is 3d. Huh? The question asked about plotting data that was 2d. The third dimension was to be the density. kde2d in package MASS or the similarly named function in package KernSmooth would seem to be on point here. No, I don't think that I can use kde2d because the I already have my z data and it is this z data that I need to smooth. My question is analog to smoothing level curves on a map, the altitude is given by data, and one wants to have nice level curves that ignore small variations of the terrain. Guillaume [[alternative HTML version deleted]]