### Navigation

- index
- modules |
- next |
- previous |
- 2D Graphics »

# Plotting fields

class `sage.plot.plot_field.``PlotField`(xpos_array, ypos_array, xvec_array, yvec_array, options)

  Bases: `sage.plot.primitive.GraphicPrimitive`

  Primitive class that initializes the PlotField graphics type

  `get_minmax_data`()

    Returns a dictionary with the bounding box data.

    EXAMPLES:

        sage: x,y = var('x,y')
        sage: d = plot_vector_field((.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.plot_field.``plot_slope_field`(f, xrange, yrange, **kwds)

  `plot_slope_field` takes a function of two variables xvar and yvar (for instance, if the variables are \(x\) and \(y\), take \(f(x,y)\)), and at representative points \((x_i,y_i)\) between xmin, xmax, and ymin, ymax respectively, plots a line with slope \(f(x_i,y_i)\) (see below).

  `plot_slope_field(f, (xvar, xmin, xmax), (yvar, ymin, ymax))`

  EXAMPLES:

  A logistic function modeling population growth:

      sage: x,y = var('x y')
      sage: capacity = 3 # thousand
      sage: growth_rate = 0.7 # population increases by 70% per unit of time
      sage: plot_slope_field(growth_rate*(1-y/capacity)*y, (x,0,5), (y,0,capacity*2))
      Graphics object consisting of 1 graphics primitive

  Plot a slope field involving sin and cos:

      sage: x,y = var('x y')
      sage: plot_slope_field(sin(x+y)+cos(x+y), (x,-3,3), (y,-3,3))
      Graphics object consisting of 1 graphics primitive

  Plot a slope field using a lambda function:

      sage: plot_slope_field(lambda x,y: x+y, (-2,2), (-2,2))
      Graphics object consisting of 1 graphics primitive

  TESTS:

  Verify that we’re not getting warnings due to use of headless quivers (trac #11208):

      sage: x,y = var('x y')
      sage: import numpy # bump warnings up to errors for testing purposes
      sage: old_err = numpy.seterr('raise')
      sage: plot_slope_field(sin(x+y)+cos(x+y), (x,-3,3), (y,-3,3))
      Graphics object consisting of 1 graphics primitive
      sage: dummy_err = numpy.seterr(**old_err)

`sage.plot.plot_field.``plot_vector_field`(f_g, xrange, yrange, frame=True, plot_points=20, **options)

  `plot_vector_field` takes two functions of two variables xvar and yvar (for instance, if the variables are \(x\) and \(y\), take \((f(x,y), g(x,y))\)) and plots vector arrows of the function over the specified ranges, with xrange being of xvar between xmin and xmax, and yrange similarly (see below).

  `plot_vector_field((f, g), (xvar, xmin, xmax), (yvar, ymin, ymax))`

  EXAMPLES:

  Plot some vector fields involving sin and cos:

      sage: x,y = var('x y')
      sage: plot_vector_field((sin(x), cos(y)), (x,-3,3), (y,-3,3))
      Graphics object consisting of 1 graphics primitive

      sage: plot_vector_field(( y, (cos(x)-2)*sin(x)), (x,-pi,pi), (y,-pi,pi))
      Graphics object consisting of 1 graphics primitive

  Plot a gradient field:

      sage: u,v = var('u v')
      sage: f = exp(-(u^2+v^2))
      sage: plot_vector_field(f.gradient(), (u,-2,2), (v,-2,2), color='blue')
      Graphics object consisting of 1 graphics primitive

  Plot two orthogonal vector fields:

      sage: x,y = var('x,y')
      sage: a=plot_vector_field((x,y), (x,-3,3),(y,-3,3),color='blue')
      sage: b=plot_vector_field((y,-x),(x,-3,3),(y,-3,3),color='red')
      sage: show(a+b)

  We ignore function values that are infinite or NaN:

      sage: x,y = var('x,y')
      sage: plot_vector_field( (-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

      sage: x,y = var('x,y')
      sage: plot_vector_field( (-x/sqrt(x+y), -y/sqrt(x+y)), (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: plot_vector_field((x, y), (x, -2, 2), (y, -2, 2), xmax=10)
      Graphics object consisting of 1 graphics primitive
      sage: plot_vector_field((x, y), (x, -2, 2), (y, -2, 2)).show(xmax=10) # These are equivalent

### Navigation

- index
- modules |
- next |
- previous |
- 2D Graphics »