LSSTApplications  16.0-11-g09ed895+2,16.0-11-g12e47bd,16.0-11-g9bb73b2+6,16.0-12-g5c924a4+6,16.0-14-g9a974b3+1,16.0-15-g1417920+1,16.0-15-gdd5ca33+1,16.0-16-gf0259e2,16.0-17-g31abd91+7,16.0-17-g7d7456e+7,16.0-17-ga3d2e9f+13,16.0-18-ga4d4bcb+1,16.0-18-gd06566c+1,16.0-2-g0febb12+21,16.0-2-g9d5294e+69,16.0-2-ga8830df+6,16.0-20-g21842373+7,16.0-24-g3eae5ec,16.0-28-gfc9ea6c+4,16.0-29-ge8801f9,16.0-3-ge00e371+34,16.0-4-g18f3627+13,16.0-4-g5f3a788+20,16.0-4-ga3eb747+10,16.0-4-gabf74b7+29,16.0-4-gb13d127+6,16.0-49-g42e581f7+6,16.0-5-g27fb78a+7,16.0-5-g6a53317+34,16.0-5-gb3f8a4b+87,16.0-6-g9321be7+4,16.0-6-gcbc7b31+42,16.0-6-gf49912c+29,16.0-7-gd2eeba5+51,16.0-71-ge89f8615e,16.0-8-g21fd5fe+29,16.0-8-g3a9f023+20,16.0-8-g4734f7a+1,16.0-8-g5858431+3,16.0-9-gf5c1f43+8,master-gd73dc1d098+1,w.2019.01
LSSTDataManagementBasePackage
polygonContinued.py
Go to the documentation of this file.
1 __all__ = [] # import this module only for its side effects
2 
3 from lsst.utils import continueClass
4 from .polygon import Polygon
5 
6 
7 @continueClass # noqa F811
8 class Polygon:
9  def __repr__(self):
10  return "%s(%s)" % (self.__class__.__name__, [p for p in self.getVertices()])
11 
12  def __reduce__(self):
13  return self.__class__, (self.getVertices(),)
14 
15  def __iter__(self):
16  """Iterator over vertices"""
17  vertices = self.getVertices()
18  return iter(vertices)
19 
20  def __getitem__(self, i):
21  return [pt for pt in self][i]
22 
23  def __len__(self):
24  return self.getNumEdges()
25 
26  def __contains__(self, point):
27  """point in polygon?"""
28  return self.contains(point)
29 
30  def display(self, xy0=None, frame=1, ctype=None):
31  """Display polygon on existing frame in ds9"""
32  import lsst.geom
33  import lsst.afw.display.ds9 as ds9
34  xy0 = lsst.geom.Extent2D(0, 0) if xy0 is None else lsst.geom.Extent2D(xy0)
35  with ds9.Buffering():
36  for p1, p2 in self.getEdges():
37  ds9.line((p1 - xy0, p2 - xy0), frame=frame, ctype=ctype)
38 
39  def plot(self, axes=None, **kwargs):
40  """Plot polygon with matplotlib
41 
42  Parameters
43  ----------
44  axes : `matplotlib.axes.Axes`
45  Matplotlib axes to use, or None
46  kwargs : any
47  Additional arguments to `matplotlib.axes.Axes.plot`
48  or `matplotlib.axes.Axes.scatter`.
49 
50  Returns
51  -------
52  axes : `matplotlib.axes.Axes`
53  The axes used to make the plot (same as ``axes``, if provided).
54  """
55  import numpy
56  if axes is None:
57  import matplotlib.pyplot as plt
58  plt.figure()
59  axes = plt.axes()
60  for p1, p2 in self.getEdges():
61  x = (p1.getX(), p2.getX())
62  y = (p1.getY(), p2.getY())
63  axes.plot(x, y, **kwargs)
64  vertices = self.getVertices()
65  x = numpy.array([p[0] for p in vertices])
66  y = numpy.array([p[1] for p in vertices])
67  axes.scatter(x, y, **kwargs)
68  return axes
def plot(mag, width, centers, clusterId, marker="o", markersize=2, markeredgewidth=0, ltype='-', magType="model", clear=True)
Cartesian polygons.
Definition: Polygon.h:58