# Matplotlib - 3D Quiver Plot

A three-dimensional axes can be created by passing projection='3d' keyword to the axes creation routine. After creating 3D axes, matplotlib.Axes3D.quiver() function is used to make quiver plot, where X, Y, Z define the arrow locations, U, V, W define the arrow directions.

### Syntax

```matplotlib.Axes3D.quiver(X, Y, Z, U, V, W,
length=1,
normalize=False)
```

### Parameters

 `X, Y, Z` `Required. `Specify x, y and z coordinates of the arrow locations. array-like. `U, V, W` `Required. `Specify x, y and z direction components of the arrow vectors. array-like. `length` `Optional. `Specify the length of each quiver. Default is 1. `normalize` `Optional. `Specify whether all arrows are normalized to have the same length, or keep the lengths defined by U, V, and W. Default is False.

### Example: 3D quiver plot

In the example below, the quiver() function is used to create a 3D quiver plot of a given dataset.

```import matplotlib.pyplot as plt
import numpy as np

X, Y, Z = np.meshgrid(np.arange(-0.8, 1, 0.2),
np.arange(-0.8, 1, 0.2),
np.arange(-0.8, 1, 0.8))

U = np.sin(np.pi * X) * np.cos(np.pi * Y) * np.cos(np.pi * Z)
V = -np.cos(np.pi * X) * np.sin(np.pi * Y) * np.cos(np.pi * Z)
W = (np.sqrt(2.0 / 3.0) * np.cos(np.pi * X) * np.cos(np.pi * Y) *
np.sin(np.pi * Z))

fig = plt.figure()