Matplotlib Tutorial
Python Java C++ C C# PHP R SQL DS Algo InterviewQ

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.


matplotlib.Axes3D.quiver(X, Y, Z, U, V, W, 


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.


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()
ax = fig.add_subplot(111, projection='3d')
ax.set_title("3D Quiver plot")

#drawing quiver plot
ax.quiver(X, Y, Z, U, V, W, length=0.1, normalize=True)

The output of the above code will be:

3D Quiver Plot