The 2019 SciPy John Hunter Excellence in Plotting Contest is accepting submissions!
Apply by June 8th
matplotlib.patches.
Arc
(xy, width, height, angle=0.0, theta1=0.0, theta2=360.0, **kwargs)[source]¶Bases: matplotlib.patches.Ellipse
An elliptical arc, i.e. a segment of an ellipse.
Due to internal optimizations, there are certain restrictions on using Arc:
Axes
instanceit can not be
added directly to a Figure
because it is optimized to only render
the segments that are inside the axes bounding box with high resolution.Parameters: 



Other Parameters: 

draw
(self, renderer)[source]¶Draw the arc to the given renderer.
Notes
Ellipses are normally drawn using an approximation that uses eight cubic Bezier splines. The error of this approximation is 1.89818e6, according to this unverified source:
Lancaster, Don. Approximating a Circle or an Ellipse Using Four Bezier Cubic Splines.
There is a use case where very large ellipses must be drawn with very high accuracy, and it is too expensive to render the entire ellipse with enough segments (either splines or line segments). Therefore, in the case where either radius of the ellipse is large enough that the error of the spline approximation will be visible (greater than one pixel offset from the ideal), a different technique is used.
In that case, only the visible parts of the ellipse are drawn, with each visible arc using a fixed number of spline segments (8). The algorithm proceeds as follows:
The points where the ellipse intersects the axes bounding box are located. (This is done be performing an inverse transformation on the axes bbox such that it is relative to the unit circle  this makes the intersection calculation much easier than doing rotated ellipse intersection directly).
This uses the "line intersecting a circle" algorithm from:
Vince, John. Geometry for Computer Graphics: Formulae, Examples & Proofs. London: SpringerVerlag, 2005.
The angles of each of the intersection points are calculated.
Proceeding counterclockwise starting in the positive
xdirection, each of the visible arcsegments between the
pairs of vertices are drawn using the Bezier arc
approximation technique implemented in
matplotlib.path.Path.arc()
.
matplotlib.patches.Arc
¶