我想要在matplotlib中創建一個藝術家,它可以繪製包含封裝在FancyBboxPatch中的文本和圖像的compound
形狀。我從前面提到的FancyBboxPatch派生了一個類,並重寫了「draw」方法,但它似乎不起作用。覆蓋matplotlib.artist.Artist繪製複雜形狀
我想要實現的是一個可由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
上午我甚至會對此正確的方法是什麼?這就是我在像Android/Gtk/Qt等GUI界面中做類似的事情時會遇到的問題。也許這不是matplotlib的正確方法?我錯了嗎?! – ccbunney 2013-02-27 15:02:50