Streamline Plots¶
- class sage.plot.streamline_plot.StreamlinePlot(xpos_array, ypos_array, xvec_array, yvec_array, options)¶
Bases:
sage.plot.primitive.GraphicPrimitive
Primitive class that initializes the StreamlinePlot graphics type
- get_minmax_data()¶
Returns a dictionary with the bounding box data.
EXAMPLES:
sage: x, y = var('x y') sage: d = streamline_plot((.01*x, x+y), (x,10,20), (y,10,20))[0].get_minmax_data() sage: d['xmin'] 10.0 sage: d['ymin'] 10.0
- sage.plot.streamline_plot.streamline_plot(f_g, xrange, yrange, plot_points=20, density=1.0, frame=True, **options)¶
Return a streamline plot in a vector field.
streamline_plot
can take either one or two functions. Consider two variables x and y.If given two functions (f(x,y),g(x,y)), then this function plots streamlines in the vector field over the specified ranges with
xrange
being of x, denoted byxvar
below, betweenxmin
andxmax
, andyrange
similarly (see below).streamline_plot((f, g), (xvar, xmin, xmax), (yvar, ymin, ymax))
Similarly, if given one function f(x,y), then this function plots streamlines in the slope field dy/dx=f(x,y) over the specified ranges as given above.
PLOT OPTIONS:
plot_points
– (default: 200) the minimal number of plot pointsdensity
– float (default: 1.); controls the closeness of streamlinesstart_points
– (optional) list of coordinates of starting points for the streamlines; coordinate pairs can be tuples or lists
EXAMPLES:
Plot some vector fields involving sin and cos:
sage: x, y = var('x y') sage: streamline_plot((sin(x), cos(y)), (x,-3,3), (y,-3,3)) Graphics object consisting of 1 graphics primitive
sage: streamline_plot((y, (cos(x)-2) * sin(x)), (x,-pi,pi), (y,-pi,pi)) Graphics object consisting of 1 graphics primitive
We increase the density of the plot:
sage: streamline_plot((y, (cos(x)-2) * sin(x)), (x,-pi,pi), (y,-pi,pi), density=2) Graphics object consisting of 1 graphics primitive
We ignore function values that are infinite or NaN:
sage: x, y = var('x y') sage: streamline_plot((-x/sqrt(x^2+y^2), -y/sqrt(x^2+y^2)), (x,-10,10), (y,-10,10)) Graphics object consisting of 1 graphics primitive
Extra options will get passed on to
show()
, as long as they are valid:sage: streamline_plot((x, y), (x,-2,2), (y,-2,2), xmax=10) Graphics object consisting of 1 graphics primitive sage: streamline_plot((x, y), (x,-2,2), (y,-2,2)).show(xmax=10) # These are equivalent
We can also construct streamlines in a slope field:
sage: x, y = var('x y') sage: streamline_plot((x + y) / sqrt(x^2 + y^2), (x,-3,3), (y,-3,3)) Graphics object consisting of 1 graphics primitive
We choose some particular points the streamlines pass through:
sage: pts = [[1, 1], [-2, 2], [1, -3/2]] sage: g = streamline_plot((x + y) / sqrt(x^2 + y^2), (x,-3,3), (y,-3,3), start_points=pts) sage: g += point(pts, color='red') sage: g Graphics object consisting of 2 graphics primitives
Note
Streamlines currently pass close to
start_points
but do not necessarily pass directly through them. That is part of the behavior of matplotlib, not an error on your part.