Show Sidebar Hide Sidebar

# Quiver Plots in Python

How to make a quiver plot in Python. A quiver plot displays velocity vectors a arrows.

#### New to Plotly?¶

You can set up Plotly to work in online or offline mode, or in jupyter notebooks.
We also have a quick-reference cheatsheet (new!) to help you get started!

#### Version Check¶

Plotly's python API is updated frequesntly. Run pip install plotly --upgrade to update your Plotly version.

In [1]:
import plotly
plotly.__version__

Out[1]:
'2.0.2'

#### Basic Quiver Plot¶

In [2]:
import plotly.plotly as py
import plotly.figure_factory as ff

import numpy as np

x,y = np.meshgrid(np.arange(0, 2, .2), np.arange(0, 2, .2))
u = np.cos(x)*y
v = np.sin(x)*y

fig = ff.create_quiver(x, y, u, v)
py.iplot(fig, filename='Quiver Plot Example')

Out[2]:

#### Quiver Plot with Points¶

In [2]:
import plotly.plotly as py
import plotly.figure_factory as ff
import plotly.graph_objs as go

import numpy as np

x,y = np.meshgrid(np.arange(-2, 2, .2),
np.arange(-2, 2, .25))
z = x*np.exp(-x**2 - y**2)
v, u = np.gradient(z, .2, .2)

# Create quiver figure
fig = ff.create_quiver(x, y, u, v,
scale=.25,
arrow_scale=.4,
name='quiver',
line=dict(width=1))

# Create points
points = go.Scatter(x=[-.7, .75], y=[0,0],
mode='markers',
marker=dict(size=12),
name='points')

fig['data'].append(points)

py.iplot(fig, filename='Quiver with Points')

Out[2]:

#### Reference¶

In [3]:
help(ff.create_quiver)

Help on function create_quiver in module plotly.figure_factory._quiver:

create_quiver(x, y, u, v, scale=0.1, arrow_scale=0.3, angle=0.3490658503988659, **kwargs)
Returns data for a quiver plot.

:param (list|ndarray) x: x coordinates of the arrow locations
:param (list|ndarray) y: y coordinates of the arrow locations
:param (list|ndarray) u: x components of the arrow vectors
:param (list|ndarray) v: y components of the arrow vectors
:param (float in [0,1]) scale: scales size of the arrows(ideally to
avoid overlap). Default = .1
:param (float in [0,1]) arrow_scale: value multiplied to length of barb
to get length of arrowhead. Default = .3
:param kwargs: kwargs passed through plotly.graph_objs.Scatter
help(plotly.graph_objs.Scatter)

:rtype (dict): returns a representation of quiver figure.

Example 1: Trivial Quiver

import plotly.plotly as py
from plotly.figure_factory import create_quiver

import math

# 1 Arrow from (0,0) to (1,1)
fig = create_quiver(x=[0], y=[0], u=[1], v=[1], scale=1)

py.plot(fig, filename='quiver')


Example 2: Quiver plot using meshgrid

import plotly.plotly as py
from plotly.figure_factory import create_quiver

import numpy as np
import math

x,y = np.meshgrid(np.arange(0, 2, .2), np.arange(0, 2, .2))
u = np.cos(x)*y
v = np.sin(x)*y

#Create quiver
fig = create_quiver(x, y, u, v)

# Plot
py.plot(fig, filename='quiver')


Example 3: Styling the quiver plot

import plotly.plotly as py
from plotly.figure_factory import create_quiver
import numpy as np
import math

x, y = np.meshgrid(np.arange(-np.pi, math.pi, .5),
np.arange(-math.pi, math.pi, .5))
u = np.cos(x)*y
v = np.sin(x)*y

# Create quiver
fig = create_quiver(x, y, u, v, scale=.2, arrow_scale=.3, angle=math.pi/6,
name='Wind Velocity', line=Line(width=1))