# Creating 3D Plots in R Programming – persp() Function

3D plot in R Language is used to add title, change viewing direction, and add color and shade to the plot. The ** persp()** function which is used to create 3D surfaces in perspective view. This function will draw perspective plots of a surface over the x–y plane.

`persp()`

is defines as a generic function. Moreover, it can be used to superimpose additional graphical elements on the 3D plot, by `lines()`

or `points()`

, using the function `trans3d()`

.

Syntax:persp(x, y, z)

Parameter:This function accepts different parameters i.e.x, y and zwhere x and y are vectors defining the location along x- and y-axis. z-axis will be the height of the surface in the matrix z.

Return Value:persp() returns the viewing transformation matrix for projecting 3D coordinates (x, y, z) into the 2D plane using homogeneous 4D coordinates (x, y, z, t).

**Example 1: Simple Right Circular Cone**

`# To illustrate simple right circular cone` `cone <` `-` `function(x, y){` `sqrt(x ^ ` `2` `+` `y ^ ` `2` `)` `}` ` ` `# prepare variables.` `x <` `-` `y <` `-` `seq(` `-` `1` `, ` `1` `, length ` `=` `30` `)` `z <` `-` `outer(x, y, cone)` ` ` `# plot the 3D surface` `persp(x, y, z)` |

**Output:**

- Here in above code, function
`seq()`

to generate vector of equally spaced numbers. - the
`outer()`

function to apply the function cone at every combination of x and y.

**Example 2: Adding Titles and Labeling Axes to Plot**

`# Adding Titles and Labeling Axes to Plot` `cone <` `-` `function(x, y){` `sqrt(x ^ ` `2` `+` `y ^ ` `2` `)` `}` ` ` `# prepare variables.` `x <` `-` `y <` `-` `seq(` `-` `1` `, ` `1` `, length ` `=` `30` `)` `z <` `-` `outer(x, y, cone)` ` ` `# plot the 3D surface` `# Adding Titles and Labeling Axes to Plot` `persp(x, y, z,` `main` `=` `"Perspective Plot of a Cone"` `,` `zlab ` `=` `"Height"` `,` `theta ` `=` `30` `, phi ` `=` `15` `,` `col ` `=` `"orange"` `, shade ` `=` `0.4` `)` |

**Output:**

- Here in above code, xlab, ylab and zlab can be used to label the three axes.
- theta and phi are viewing direction.

**Example 3: Visualizing a simple DEM(Digital elevation model)**

`# Visualizing a simple DEM model` ` ` `z <` `-` `2` `*` `volcano ` `# Exaggerate the relief` `x <` `-` `10` `*` `(` `1` `:nrow(z)) ` `# 10 meter spacing (S to N)` `y <` `-` `10` `*` `(` `1` `:ncol(z)) ` `# 10 meter spacing (E to W)` ` ` ` ` `# Don't draw the grid lines : border = NA` `par(bg ` `=` `"gray"` `)` `persp(x, y, z, theta ` `=` `135` `, phi ` `=` `30` `, col ` `=` `"brown"` `, scale ` `=` `FALSE,` ` ` `ltheta ` `=` `-` `120` `, shade ` `=` `0.75` `, border ` `=` `NA, box ` `=` `FALSE)` |

**Output:**