Hi Everyone,
I have just upgraded to matplotlib 1.2.0 so that I can use the streamplot module, which I’m quite happy about!
However, I’ve noticed that when one tries to color the streamlines using a 2-D array which contains NaNs, streamlines of only one color are shown! I have appended example code below which reproduces the problem.
Meanwhile, if the following two lines are inserted inside an “if use_multicolor_lines:” region within streamplot.py, then the problem goes away (for example, after line 84 or line 115):
if np.any(np.isnan(color)):
color = np.ma.array(color, mask=np.isnan(color))
This check already exists on the input arrays U and V, but not for color.
I am also not sure this issue will persist when a normalize object is explicitly specified.
Example code (derived from streamplot_demo.py):
import numpy as np
import matplotlib.pyplot as plt
Y, X = np.mgrid[-3:3:100j, -3:3:100j]
U = -1 - X2 + Y
V = 1 + X - Y2
speed = np.sqrt(UU + VV)
m = np.sqrt(X2 + Y2) < 1.0
speed[m] = np.nan
plt.streamplot(X, Y, U, V, color=speed, linewidth=2, cmap=plt.cm.autumn)
plt.colorbar()
plt.show()
Additional info:
Linux 2.6.38-16-generic #67-Ubuntu SMP Thu Sep 6 17:58:38 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
Matplotlib v1.2.0
Best Regards,
Jon Ramsey
P.S. Long time reader, first time poster.