Ellipses#

class sage.plot.ellipse.Ellipse(x, y, r1, r2, angle, options)[source]#

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: 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...
>>> 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()[source]#

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: 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
>>> 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: 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
>>> 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()[source]#

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)[source]#

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: ellipse((0,0),2,1)
Graphics object consisting of 1 graphics primitive
>>> from sage.all import *
>>> ellipse((Integer(0),Integer(0)),Integer(2),Integer(1))
Graphics object consisting of 1 graphics primitive
../../_images/ellipse-1.svg

More complicated examples with tilted axes and drawing options:

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
>>> 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
../../_images/ellipse-2.svg

other way to indicate dashed linestyle:

sage: ellipse((0,0),3,1,pi/6,fill=True,alpha=0.3,linestyle="--")
Graphics object consisting of 1 graphics primitive
>>> 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
../../_images/ellipse-3.svg

with colors

sage: ellipse((0,0),3,1,pi/6,fill=True,edgecolor='black',facecolor='red')
Graphics object consisting of 1 graphics primitive
>>> 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
../../_images/ellipse-4.svg

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

sage: ellipse((0,0),3,1,pi/6,fill=True,edgecolor='black',facecolor='red',rgbcolor='green')
Graphics object consisting of 1 graphics primitive
>>> 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
../../_images/ellipse-5.svg

The default aspect ratio for ellipses is 1.0:

sage: ellipse((0,0),2,1).aspect_ratio()
1.0
>>> 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: ellipse((0,0,0),2,1)
Traceback (most recent call last):
...
NotImplementedError: plotting ellipse in 3D is not implemented
>>> 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: ellipse((0,0),2,1,legend_label="My ellipse", legend_color='green')
Graphics object consisting of 1 graphics primitive
>>> 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
../../_images/ellipse-6.svg