A surface plot is a representation of a 3-D dataset. It shows the functional relationship between two independent variables such as X and Z and a designated dependent variable Y.

- It is said to be a companion plot to the contour plot.
- It is similar to a wireframe plot but in wireframe, each face is filled with a polygon.
- It is helpful in creating the topology of the surface which is begin visualized.

## Creating 3-D surface Plot

To create 3-D surface plot ax.plot_surface() function is used

### Syntax

`ax.plot_surface(X, Y, Z)`

Here, X and Y are 2-D arrays of points while Z is the 2-D array of heights.

Some of the attributes are given below:

**facecolor:**It is used to represent the face colour of the individual surface.**shade:**It is used to shade the face colour.**color:**It is used to represent the colour of the surface.**vmax:**It is used to represent the maximum value of the map.**vmin:**It is used to represent the minimum value of the map.**cmap:**It is used to represent the colormap of the surface.**nrom:**It acts as an instance to normalize the values of color map.**rcount:**It is used to represent the number of rows to be used. By default it is set to 50.**ccount:**It is used to represent the number of columns to be used. By default it is set to 50.**rstride:**It is used to represent the array of row stride(that is step size).**cstride:**It is used to represent the array of column stride(that is step size).

### Example

```
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
a=np.outer(np.linspace(-2,6,10),np.ones(10))
b=a.copy().T
c=(np.cos(a)+np.cos(b))
fig = plt.figure()
ax = plt.axes(projection ='3d')
ax.plot_surface(a,b,c)
plt.show()
```

**Output**