我想在 matplotlib 中创建一个艺术家,它可以绘制一个compound
包含封装在 FancyBboxPatch 中的文本和图像的形状。我从前面提到的 FancyBboxPatch 派生了一个类并重写了“draw”方法,但它似乎不起作用。
我想要实现的是一个可由 matplotlib 绘制的对象,但比可用的简单补丁更复杂;有点像 GUI 设计中的复合小部件的概念。
这是我尝试过的:
class Cell(FancyBboxPatch):
def __init__(self, xy, width, height, **kwargs):
FancyBboxPatch.__init__(self, xy, width, height, **kwargs)
def draw(self, renderer):
print "Overridden draw method"
FancyBboxPatch.draw(self, renderer)
# Try drawing some simple patches and text:
r = Rectangle((set._x, self._y), self._width, self._height)
r.draw(renderer) # this doesn't draw
t = Annotation("hi", (self._x, self._y))
t.draw(renderer) # this causes an error
但这不起作用。矩形不会被绘制,并且 Annotation 会引发错误:AttributeError: 'NoneType' object has no attribute 'transData'
我觉得我做错了!我可以用draw
这种方式覆盖该方法吗?
TIA