diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py
index 1334c8596209..924ec143aa1f 100644
--- a/lib/matplotlib/__init__.py
+++ b/lib/matplotlib/__init__.py
@@ -1105,6 +1105,7 @@ def tk_window_focus():
'matplotlib.tests.test_scale',
'matplotlib.tests.test_simplification',
'matplotlib.tests.test_spines',
+ 'matplotlib.tests.test_streamplot',
'matplotlib.tests.test_subplots',
'matplotlib.tests.test_text',
'matplotlib.tests.test_ticker',
diff --git a/lib/matplotlib/streamplot.py b/lib/matplotlib/streamplot.py
index d6090feea26a..9b487e43a471 100644
--- a/lib/matplotlib/streamplot.py
+++ b/lib/matplotlib/streamplot.py
@@ -82,6 +82,8 @@ def streamplot(axes, x, y, u, v, density=1, linewidth=None, color=None,
if use_multicolor_lines:
assert color.shape == grid.shape
line_colors = []
+ if np.any(np.isnan(color)):
+ color = np.ma.array(color, mask=np.isnan(color))
else:
line_kw['color'] = color
arrow_kw['color'] = color
diff --git a/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_colormap_test_image.pdf b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_colormap_test_image.pdf
new file mode 100644
index 000000000000..a4221136eebb
Binary files /dev/null and b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_colormap_test_image.pdf differ
diff --git a/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_colormap_test_image.png b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_colormap_test_image.png
new file mode 100644
index 000000000000..c429c752859e
Binary files /dev/null and b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_colormap_test_image.png differ
diff --git a/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_colormap_test_image.svg b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_colormap_test_image.svg
new file mode 100644
index 000000000000..04a427a974e7
--- /dev/null
+++ b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_colormap_test_image.svg
@@ -0,0 +1,7524 @@
+
+
+
+
diff --git a/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_linewidth_test_image.pdf b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_linewidth_test_image.pdf
new file mode 100644
index 000000000000..1ef48dfa4f71
Binary files /dev/null and b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_linewidth_test_image.pdf differ
diff --git a/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_linewidth_test_image.png b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_linewidth_test_image.png
new file mode 100644
index 000000000000..0b1f3b6b1a3a
Binary files /dev/null and b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_linewidth_test_image.png differ
diff --git a/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_linewidth_test_image.svg b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_linewidth_test_image.svg
new file mode 100644
index 000000000000..4463c93a0f66
--- /dev/null
+++ b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_linewidth_test_image.svg
@@ -0,0 +1,4850 @@
+
+
+
+
diff --git a/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_masks_and_nans_test_image.pdf b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_masks_and_nans_test_image.pdf
new file mode 100644
index 000000000000..47f94198c227
Binary files /dev/null and b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_masks_and_nans_test_image.pdf differ
diff --git a/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_masks_and_nans_test_image.png b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_masks_and_nans_test_image.png
new file mode 100644
index 000000000000..b18b29d02ca0
Binary files /dev/null and b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_masks_and_nans_test_image.png differ
diff --git a/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_masks_and_nans_test_image.svg b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_masks_and_nans_test_image.svg
new file mode 100644
index 000000000000..7eeee4b65329
--- /dev/null
+++ b/lib/matplotlib/tests/baseline_images/test_streamplot/streamplot_masks_and_nans_test_image.svg
@@ -0,0 +1,6836 @@
+
+
+
+
diff --git a/lib/matplotlib/tests/test_streamplot.py b/lib/matplotlib/tests/test_streamplot.py
new file mode 100644
index 000000000000..21e7f1b5d6ff
--- /dev/null
+++ b/lib/matplotlib/tests/test_streamplot.py
@@ -0,0 +1,41 @@
+import numpy as np
+import matplotlib.pyplot as plt
+from matplotlib.testing.decorators import image_comparison
+
+
+def velocity_field():
+ Y, X = np.mgrid[-3:3:100j, -3:3:100j]
+ U = -1 - X**2 + Y
+ V = 1 + X - Y**2
+ return X, Y, U, V
+
+
+@image_comparison(baseline_images=['streamplot_colormap_test_image'])
+def test_colormap():
+ X, Y, U, V = velocity_field()
+ plt.streamplot(X, Y, U, V, color=U, density=0.6, linewidth=2,
+ cmap=plt.cm.autumn)
+ plt.colorbar()
+
+
+@image_comparison(baseline_images=['streamplot_linewidth_test_image'])
+def test_linewidth():
+ X, Y, U, V = velocity_field()
+ speed = np.sqrt(U*U + V*V)
+ lw = 5*speed/speed.max()
+ plt.streamplot(X, Y, U, V, density=[0.5, 1], color='k', linewidth=lw)
+
+
+@image_comparison(baseline_images=['streamplot_masks_and_nans_test_image'])
+def test_masks_and_nans():
+ X, Y, U, V = velocity_field()
+ mask = np.zeros(U.shape, dtype=bool)
+ mask[40:60, 40:60] = 1
+ U = np.ma.array(U, mask=mask)
+ U[:20, :20] = np.nan
+ plt.streamplot(X, Y, U, V, color=U, cmap=plt.cm.Blues)
+
+
+if __name__=='__main__':
+ import nose
+ nose.runmodule()