I do not really know how much this can help you, but maybe you can use this code for rough sketches of the dynamics of planar vector fields. I know that it does not have the functionality that you may really wish for, but it may come in handy to guide the analysis in the right direction.
import numpy as np
import matplotlib.pyplot as plt
def plot_dynamics(vector_field, x_left, x_right, x_res, y_down, y_up, y_res):
x, y = np.meshgrid(np.linspace(x_left, x_right, x_res), np.linspace(y_down, y_up, y_res))
Vx, Vy = vector_field(x, y)
if type(Vx) != object:
Vx = Vx * np.ones(x.shape, dtype=float)
if type(Vy) != object:
Vy = Vy * np.ones(x.shape, dtype=float)
fig, ax = plt.subplots()
plt.grid()
#ax.set_aspect( 1 )
ax.streamplot(x, y, Vx, Vy)
ax.set_aspect('equal')
plt.show()
return None
# type the formulas for the x and y components of the vector fields
# (use np.cos and np.sin etc if not polynomial vector fields):
def V(x, y):
return ( 2*x - y + 3*(x**2-y**2) + 2*x*y, x - 3*y - 3*(x**2-y**2) + 3*x*y )
def f(x, y):
return ( 1, y**2 - x )
plot_dynamics(V, -2, 4, 100, -4, 2, 100)
plot_dynamics(f, -2, 10, 100, -4, 4, 100)

