Ellipses - 2D Graphics

Skip to content
Back to top
View this page
Edit this page

# Ellipses

class sage.plot.ellipse.Ellipse(x, y, r1, r2, angle, options)

  Bases: `GraphicPrimitive`

  Primitive class for the `Ellipse` graphics type. See `ellipse?` for information about actually plotting ellipses.

  INPUT:

  - `x`, `y` – coordinates of the center of the ellipse

  - `r1`, `r2` – radii of the ellipse

  - `angle` – angle

  - `options` – dictionary of options

  EXAMPLES:

  Note that this construction should be done using `ellipse`:

  Sage

      sage: from math import pi
      sage: from sage.plot.ellipse import Ellipse
      sage: Ellipse(0, 0, 2, 1, pi/4, {})
      Ellipse centered at (0.0, 0.0) with radii (2.0, 1.0) and angle 0.78539816339...

  Python

      >>> from sage.all import *
      >>> from math import pi
      >>> from sage.plot.ellipse import Ellipse
      >>> Ellipse(Integer(0), Integer(0), Integer(2), Integer(1), pi/Integer(4), {})
      Ellipse centered at (0.0, 0.0) with radii (2.0, 1.0) and angle 0.78539816339...

  get_minmax_data()

    Return a dictionary with the bounding box data.

    The bounding box is computed to be as minimal as possible.

    EXAMPLES:

    An example without an angle:

    Sage

        sage: p = ellipse((-2, 3), 1, 2)
        sage: d = p.get_minmax_data()
        sage: d['xmin']
        -3.0
        sage: d['xmax']
        -1.0
        sage: d['ymin']
        1.0
        sage: d['ymax']
        5.0

    Python

        >>> from sage.all import *
        >>> p = ellipse((-Integer(2), Integer(3)), Integer(1), Integer(2))
        >>> d = p.get_minmax_data()
        >>> d['xmin']
        -3.0
        >>> d['xmax']
        -1.0
        >>> d['ymin']
        1.0
        >>> d['ymax']
        5.0

    The same example with a rotation of angle \(\pi/2\):

    Sage

        sage: from math import pi
        sage: p = ellipse((-2, 3), 1, 2, pi/2)
        sage: d = p.get_minmax_data()
        sage: d['xmin']
        -4.0
        sage: d['xmax']
        0.0
        sage: d['ymin']
        2.0
        sage: d['ymax']
        4.0

    [Python]

        >>> from sage.all import *
        >>> from math import pi
        >>> p = ellipse((-Integer(2), Integer(3)), Integer(1), Integer(2), pi/Integer(2))
        >>> d = p.get_minmax_data()
        >>> d['xmin']
        -4.0
        >>> d['xmax']
        0.0
        >>> d['ymin']
        2.0
        >>> d['ymax']
        4.0

  plot3d()

    Plotting in 3D is not implemented.

sage.plot.ellipse.ellipse(center, r1, r2, angle=0, alpha=1, fill=False, thickness=1, edgecolor='blue', facecolor='blue', linestyle='solid', zorder=5, aspect_ratio=1.0, legend_label=None, legend_color=None, **options)

  Return an ellipse centered at a point center = `(x,y)` with radii = `r1,r2` and angle `angle`. Type `ellipse.options` to see all options.

  INPUT:

  - `center` – 2-tuple of real numbers; coordinates of the center

  - `r1`, `r2` – positive real numbers; the radii of the ellipse

  - `angle` – real number (default: 0) – the angle between the first axis and the horizontal

  OPTIONS:

  - `alpha` – (default: 1) transparency

  - `fill` – (default: `False`) whether to fill the ellipse or not

  - `thickness` – (default: 1) thickness of the line

  - `linestyle` – (default: `'solid'`) the style of the line, which is one of `'dashed'`, `'dotted'`, `'solid'`, `'dashdot'`, or `'--'`, `':'`, `'-'`, `'-.'`, respectively

  - `edgecolor` – (default: `'black'`) color of the contour

  - `facecolor` – (default: `'red'`) color of the filling

  - `rgbcolor` – 2D or 3D plotting. This option overrides `edgecolor` and `facecolor` for 2D plotting

  - `legend_label` – the label for this item in the legend

  - `legend_color` – the color for the legend label

  EXAMPLES:

  An ellipse centered at (0,0) with major and minor axes of lengths 2 and 1. Note that the default color is blue:

  Sage

      sage: ellipse((0,0),2,1)
      Graphics object consisting of 1 graphics primitive

  Python

      >>> from sage.all import *
      >>> ellipse((Integer(0),Integer(0)),Integer(2),Integer(1))
      Graphics object consisting of 1 graphics primitive

  More complicated examples with tilted axes and drawing options:

  Sage

      sage: from math import pi
      sage: ellipse((0,0), 3, 1, pi/6, fill=True, alpha=0.3, linestyle='dashed')
      Graphics object consisting of 1 graphics primitive

  [Python]

      >>> from sage.all import *
      >>> from math import pi
      >>> ellipse((Integer(0),Integer(0)), Integer(3), Integer(1), pi/Integer(6), fill=True, alpha=RealNumber('0.3'), linestyle='dashed')
      Graphics object consisting of 1 graphics primitive

  other way to indicate dashed linestyle:

  Sage

      sage: ellipse((0,0),3,1,pi/6,fill=True,alpha=0.3,linestyle='--')
      Graphics object consisting of 1 graphics primitive

  Python

      >>> from sage.all import *
      >>> ellipse((Integer(0),Integer(0)),Integer(3),Integer(1),pi/Integer(6),fill=True,alpha=RealNumber('0.3'),linestyle='--')
      Graphics object consisting of 1 graphics primitive

  with colors

  Sage

      sage: ellipse((0,0),3,1,pi/6,fill=True,edgecolor='black',facecolor='red')
      Graphics object consisting of 1 graphics primitive

  [Python]

      >>> from sage.all import *
      >>> ellipse((Integer(0),Integer(0)),Integer(3),Integer(1),pi/Integer(6),fill=True,edgecolor='black',facecolor='red')
      Graphics object consisting of 1 graphics primitive

  We see that `rgbcolor` overrides these other options, as this plot is green:

  Sage

      sage: ellipse((0,0),3,1,pi/6,fill=True,edgecolor='black',facecolor='red',rgbcolor='green')
      Graphics object consisting of 1 graphics primitive

  Python

      >>> from sage.all import *
      >>> ellipse((Integer(0),Integer(0)),Integer(3),Integer(1),pi/Integer(6),fill=True,edgecolor='black',facecolor='red',rgbcolor='green')
      Graphics object consisting of 1 graphics primitive

  The default aspect ratio for ellipses is 1.0:

  Sage

      sage: ellipse((0,0),2,1).aspect_ratio()
      1.0

  [Python]

      >>> from sage.all import *
      >>> ellipse((Integer(0),Integer(0)),Integer(2),Integer(1)).aspect_ratio()
      1.0

  One cannot yet plot ellipses in 3D:

  Sage

      sage: ellipse((0,0,0),2,1)
      Traceback (most recent call last):
      ...
      NotImplementedError: plotting ellipse in 3D is not implemented

  Python

      >>> from sage.all import *
      >>> ellipse((Integer(0),Integer(0),Integer(0)),Integer(2),Integer(1))
      Traceback (most recent call last):
      ...
      NotImplementedError: plotting ellipse in 3D is not implemented

  We can also give ellipses a legend:

  Sage

      sage: ellipse((0,0),2,1,legend_label="My ellipse", legend_color='green')
      Graphics object consisting of 1 graphics primitive

  [Python]

      >>> from sage.all import *
      >>> ellipse((Integer(0),Integer(0)),Integer(2),Integer(1),legend_label="My ellipse", legend_color='green')
      Graphics object consisting of 1 graphics primitive