I wanted to make a function to take another function that takes a 2d-vector

and returns a 2d-vector, x and y boundaries, and a resolution, and plot the

slope field. However all I get is a blank plot over a small range and some

vertical and horizontal lines. This is my code, if you know differential

equations with the function I'm using you should see a saddle at the origin

and a center at 1,1.

import matplotlib.pyplot as plt

def plot_system(function, xmin, xmax, ymin, ymax, resolution):

xnow = xmin

i = 0

while xnow < xmax:

ynow = ymin

while ynow < ymax:

direction = function([xnow, ynow])

if direction[0]**2 + direction[1]**2 != 0:

scale = resolution / (direction[0]**2 + direction[1]**2)**.5

print repr(direction[0] * scale) + ", " + repr(direction[1] * scale)

plt.arrow(xnow, ynow, direction[0] * scale, direction[1] * scale)

ynow = ynow + resolution

xnow = xnow + resolution

print "plotting"

plt.show()

if __name__ == "__main__":

def function(y):

return [y[0] - y[0]*y[1], y[0]*y[1] - y[1]]

plot_system(function, -10, 10, -10, 10, 1)

## ···

--

View this message in context: http://www.nabble.com/Arrows-acting-funny-tp20713470p20713470.html

Sent from the matplotlib - users mailing list archive at Nabble.com.