Contour plot is another way of displaying the 3D data. The data consists of z values on a (x,y) grid, similar to the 3D surface plot. The points on (X,Y) plane with close values are joint together by contours.

The library plot3D has a function called contour2D() in plot3d library that can produce a contour plot. We will generate the Gaussian Kernal data which has Z values on a (X,Y) grid.

The contour2D() function takes two vectors x and y along with a matrix z whose dimensions are equal to that of the (x,y) grid. See the code and the figure it generates:

library(plot3D) ## Gaussian across X and Y ## 2D Gaussian Kernal x = seq(0,100,0.2) y = seq(0,100,0.2) ## We generate 2 Gaussian kernals and add them to create a double eyed structure. z = matrix(data=NA, nrow=length(x), ncol=length(x)) z1 = matrix(data=NA, nrow=length(x), ncol=length(x)) z2 = matrix(data=NA, nrow=length(x), ncol=length(x)) sigma = 8.0 sigma1 = 8 sigma2 = 8 mux = 50.0 muy = 50.0 mux1 = 35.0 muy1 = 35.0 A = 10000.0 A1 = 1.0 for(i in 1:length(x)) { for(j in 1:length(y)) { z1[i,j] = A * (1/(2*pi*sigma1*sigma2)) * exp( -((x[i]-mux1)^2 + (y[j]-muy1)^2)/(2*sigma1*sigma2) ) z2[i,j] = A * (1/(2*pi*sigma^2)) * exp( -((x[i]-mux)^2 + (y[j]-muy)^2)/(2*sigma^2) ) z[i,j] = z1[i,j] + z2[i,j] } } ## plot contour using contour2D() function of plot3D libraty contour2D(z,x,y, xlab="X-value", ylab="Y-value")

The resulting surface plots are shown below: