I'm trying to plot some streamlines with Matplotlib.
I have this code so far, as an example to plot a 10 x 10 vector field:
def plot_streamlines(file_path, vector_field_x, vector_field_y):
plt.figure()
y, x = numpy.mgrid[-2:2:10j, -2:2:10j]
plt.streamplot(x, y, vector_field_x, vector_field_y, color='y', cmap=plt.cm.autumn)
plt.savefig(file_path + '.png')
plt.close()
This works properly, but if I just change this line:
y, x = numpy.mgrid[-2:2:10j, -2:2:10j]
To that one:
x, y = numpy.mgrid[-2:2:10j, -2:2:10j]
I get some errors:
Traceback (most recent call last):
File "Library/Python/2.7/lib/python/site-packages/matplotlib/pyplot.py", line 3224, in streamplot minlength=minlength, transform=transform)
File "/Library/Python/2.7/lib/python/site-packages/matplotlib/axes.py", line 6861, in streamplot transform=transform)
File "Library/Python/2.7/lib/python/site-packages/matplotlib/streamplot.py", line 67, in streamplot grid = Grid(x, y)
File "Library/Python/2.7/lib/python/site-packages/matplotlib/streamplot.py", line 256, in __init__
assert np.allclose(x_row, x)
AssertionError
I didn't understand how I can use the "standard" order x / y, since my mesh grid is squared. Moreover, I don't know how I get these erros if my x and y dimensions are the same.
Any help would be appreciated.
Thank you.
The pylab examples use Y,X
then plot X,Y for streamplots using numpy.mgrid.
import numpy as np
import matplotlib.pyplot as plt
Y, X = np.mgrid[-3:3:100j, -3:3:100j]
U = -1 - X**2 + Y
V = 1 + X - Y**2
speed = np.sqrt(U*U + V*V)
plt.streamplot(X, Y, U, V, color=U, linewidth=2, cmap=plt.cm.autumn)
plt.colorbar()
f, (ax1, ax2) = plt.subplots(ncols=2)
ax1.streamplot(X, Y, U, V, density=[0.5, 1]
lw = 5*speed/speed.max()
ax2.streamplot(X, Y, U, V, density=0.6, color='k', linewidth=lw)
plt.show()
Taken from here.
y,x = numpy.mgrid[-2:2:4j,-2:2:4j]
x = [[-2. -0.66666667 0.66666667 2. ]
[-2. -0.66666667 0.66666667 2. ]
[-2. -0.66666667 0.66666667 2. ]
[-2. -0.66666667 0.66666667 2. ]]
y = [[-2. -2. -2. -2. ]
[-0.66666667 -0.66666667 -0.66666667 -0.66666667]
[ 0.66666667 0.66666667 0.66666667 0.66666667]
[ 2. 2. 2. 2. ]]
There seems a direct relation with how the data looks in regard to x and y axis, the -2,2 etc.. resembling an x-axis and y values resembling a y-axis.