Colin Rowat
2013-Oct-15 15:38 UTC
[R] plotting a marginal distribution on the plane behind a persp() plot
R'istas: I am trying to plot a marginal distribution on the plane behind a persp() plot. My existing code is: library(MASS) X <- mvrnorm(1000,mu=c(0,0),Sigma=matrix(c(1,0,0,1),2)) X.kde <- kde2d(X[,1],X[,2],n=25) # X.kde is list: $x 1*n, $y 1*n, $z n*n persp(X.kde,phi=30,theta=60,xlab="x_b",ylab="x_a",zlab="f") ->res Any suggestions are very appreciated. Thank you, Colin [[alternative HTML version deleted]]
Duncan Murdoch
2013-Oct-15 16:59 UTC
[R] plotting a marginal distribution on the plane behind a persp() plot
On 15/10/2013 11:38 AM, Colin Rowat wrote:> R'istas: > > I am trying to plot a marginal distribution on the plane behind a persp() plot. My existing code is: > > library(MASS) > > X <- mvrnorm(1000,mu=c(0,0),Sigma=matrix(c(1,0,0,1),2)) > > X.kde <- kde2d(X[,1],X[,2],n=25) # X.kde is list: $x 1*n, $y 1*n, $z n*n > > persp(X.kde,phi=30,theta=60,xlab="x_b",ylab="x_a",zlab="f") ->res > > Any suggestions are very appreciated.I would suggest not using persp() (use rgl::persp3d instead), but you can do it in persp using the same technique as in the 2nd example in the ?persp help page. The difficulty with doing this is that persp() uses the painter's algorithm for hiding things, so if you want something hidden, you need to draw it first. That's not always easy.... rgl::persp3d maintains a depth buffer so the order in which you draw things usually doesn't matter. (The exception is with semi-transparent objects.) Duncan Murdoch