def __call__(self, plot):
from matplotlib.patches import Circle
if iterable(self.radius):
self.radius = plot.data.ds.quan(self.radius[0], self.radius[1])
self.radius = np.float64(self.radius.in_units(plot.xlim[0].units))
# This assures the radius has the appropriate size in
# the different coordinate systems, since one cannot simply
# apply a different transform for a length in the same way
# you can for a coordinate.
if self.coord_system == 'data' or self.coord_system == 'plot':
self.radius = self.radius * self.pixel_scale(plot)[0]
else:
self.radius /= (plot.xlim[1]-plot.xlim[0]).v
x,y = self.sanitize_coord_system(plot, self.center,
coord_system=self.coord_system)
cir = Circle((x, y), self.radius, transform=self.transform,
**self.circle_args)
xx0, xx1 = plot._axes.get_xlim()
yy0, yy1 = plot._axes.get_ylim()
plot._axes.add_patch(cir)
if self.text is not None:
label = plot._axes.text(x, y, self.text, transform=self.transform,
**self.text_args)
self._set_font_properties(plot, [label], **self.text_args)
plot._axes.set_xlim(xx0,xx1)
plot._axes.set_ylim(yy0,yy1)
评论列表
文章目录