I am trying to derive a class from matplotlib.patches.RegularPolygon.
The immediate aim is to have a somewhat unified API for matplotlib.patches.Circle and matplotlib.patches.RegularPolygon (they differ in some of their properties), which I can then use in the rest of my application. As all of the code is written for Circle so far, it makes sense to modify the properties of RegularPolygon.
However, for some reason, arguments are not passed through correctly -- at least that is my best explanation so far. I could use some pointers why that is the case. I have stared at the source code (link) for a long time and don't see it (potentially because I am looking in the wrong place).
MWE
import matplotlib
class RegularPolygon(matplotlib.patches.RegularPolygon):
def __init__(self, *args, **kwargs):
super(matplotlib.patches.RegularPolygon, self).__init__(*args, **kwargs)
RegularPolygon((0.,0.), 5, radius=5, orientation=0)
Error message
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-4-1189a0acbaf3> in <module>()
----> 1 RegularPolygon((0.,0.), 5, radius=5, orientation=0)
<ipython-input-3-3cc2c77e24bf> in __init__(self, *args, **kwargs)
6
7 def __init__(self, *args, **kwargs):
----> 8 super(matplotlib.patches.RegularPolygon, self).__init__(*args, **kwargs)
/home/paul/.virtualenvs/base2/local/lib/python2.7/site-packages/matplotlib/patches.pyc in __init__(self, edgecolor, facecolor, color, linewidth, linestyle, antialiased, hatch, fill, capstyle, joinstyle, **kwargs)
93 self.set_color(color)
94 else:
---> 95 self.set_edgecolor(edgecolor)
96 self.set_facecolor(facecolor)
97 # unscaled dashes. Needed to scale dash patterns by lw
/home/paul/.virtualenvs/base2/local/lib/python2.7/site-packages/matplotlib/patches.pyc in set_edgecolor(self, color)
282 """
283 self._original_edgecolor = color
--> 284 self._set_edgecolor(color)
285
286 def set_ec(self, color):
/home/paul/.virtualenvs/base2/local/lib/python2.7/site-packages/matplotlib/patches.pyc in _set_edgecolor(self, color)
270 set_hatch_color = False
271
--> 272 self._edgecolor = colors.to_rgba(color, self._alpha)
273 if set_hatch_color:
274 self._hatch_color = self._edgecolor
/home/paul/.virtualenvs/base2/local/lib/python2.7/site-packages/matplotlib/colors.pyc in to_rgba(c, alpha)
132 rgba = _colors_full_map.cache[c, alpha]
133 except (KeyError, TypeError): # Not in cache, or unhashable.
--> 134 rgba = _to_rgba_no_colorcycle(c, alpha)
135 try:
136 _colors_full_map.cache[c, alpha] = rgba
/home/paul/.virtualenvs/base2/local/lib/python2.7/site-packages/matplotlib/colors.pyc in _to_rgba_no_colorcycle(c, alpha)
187 c = tuple(c.astype(float))
188 if len(c) not in [3, 4]:
--> 189 raise ValueError("RGBA sequence should have length 3 or 4")
190 if len(c) == 3 and alpha is None:
191 alpha = 1
ValueError: RGBA sequence should have length 3 or 4