# Matplotlib 3D Plotting – Line and Scatter Plot

It is important to note that Matplotlib was initially designed with only two-dimensional plotting in mind. But later on, some three-dimensional plotting utilities were built on top of Matplotlib’s two-dimensional display, which provides a set of tools for three-dimensional data visualization in matplotlib.

Also, a 2D plot is used to show the relationships between a single pair of axes that is x and y whereas the 3D plot, on the other hand, allows us to explore relationships of 3 pairs of axes that is x-y, x-z, and y-z

## Three Dimensional Plotting

The 3D plotting in Matplotlib can be done by enabling the utility toolkit. The utility toolkit can be enabled by importing the `mplot3d` library, which comes with your standard Matplotlib installation via pip.

After importing this sub-module, 3D plots can be created by passing the keyword `projection="3d"` to any of the regular axes creation functions in Matplotlib.

Let us cover some examples for three-dimensional plotting using this submodule in matplotlib.

## 3D Line Plot

Here is the syntax to plot the 3D Line Plot:

``Axes3D.plot(xs, ys, *args, **kwargs)``

With the code snippet given below we will cover the 3D line plot in Matplotlib:

``````from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = plt.axes(projection='3d')
z = np.linspace(0, 1, 100)
x = z * np.sin(30 * z)
y = z * np.cos(30 * z)

ax.plot3D(x, y, z, 'maroon')
ax.set_title('3D line plot')
plt.show()``````

Following is the output for it:

## 3D Scatter Plot

Here is the syntax for 3D Scatter Plot:

``Axes3D.scatter(xs, ys, zs=0, zdir='z', s=20, c=None, depthshade=True, *args, **kwargs)``

### Arguments

With the code snippet given below we will cover the 3D Scatter plot in Matplotlib:

``````fig = plt.figure()
ax = plt.axes(projection="3d")

z_line = np.linspace(0, 15, 500)
x_line = np.cos(z_line)
y_line = np.sin(z_line)
ax.plot3D(x_line, y_line, z_line, 'blue')

z_points = 15 * np.random.random(500)
x_points = np.cos(z_points) + 0.1 * np.random.randn(500)
y_points = np.sin(z_points) + 0.1 * np.random.randn(500)
ax.scatter3D(x_points, y_points, z_points, c=z_points, cmap='hsv');

plt.show()``````

The output is: