Dear R-helpers, I would like to create a three dimensional plot with the following data set: X1 X2 Y 3 4 22.654 4 3 20.054 2 2 17.601 1 1 35.868 4 2 NA 2 1 18.703 3 2 15.533 4 4 19.018 8 4 23.789 2 3 21.234 3 4 18.407 3 2 24.549 3 3 16.992 2 4 19.495 The two explanatory variables are continuous. The command in R to get a nice plot is simple and there are at least two possibilities. E.g.: require(visreg) P1<-lm(Y~X1*X2) visreg2d(P1, "X1", "X2", plot.type = "persp") require(rsm) persp(P1, X2 ~ X1, zlab = "Y") The problem is, that both commands return extrapolated plots, that show values for y = -20 when X1 = 8 and X2 = 1. But those values actually do not exist. Now I would like to cut the created surface plane to those values that are in the table. That means, something like: z = c(10,35) would be a good start (and it works, but it looks really ugly and I would like to have the line smooth). It would even be better, if I could represent the plot only in those areas for X1 and X2 that are actually in the table. But I have no idea what the correct commands are, so that the plot does look nice afterwards. Thank you very much for your help! A great new years eve to everybody and a wonderful year 2014. Greetings, Anna [[alternative HTML version deleted]]