Я хочу создать исполнителя в matplotlib, который может нарисовать форму compound
, которая включает текст и изображения, инкапсулированные в FancyBboxPatch. Я получил класс из вышеупомянутого FancyBboxPatch и переопределил метод «draw», но он, похоже, не работает.Переопределение matplotlib.artist.Artist для рисования сложной формы
То, что я пытаюсь достичь, - это объект, который можно вытащить с помощью matplotlib, но более сложный, чем простые доступные патчи; немного похоже на концепцию сложного виджета в графическом дизайне.
Вот что я пробовал:
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
, но это не работает. Прямоугольник не нарисован, и в аннотации возникает ошибка: AttributeError: 'NoneType' object has no attribute 'transData'
У меня такое чувство, что я ошибаюсь! Могу ли я переопределить метод draw
таким образом?
ТИА
ли я даже буду об этом правильном пути? Вот как я мог бы подойти к проблеме при выполнении чего-то подобного в среде GUI, такой как Android/Gtk/Qt и т. Д. Может быть, это неправильный подход к matplotlib? Неужели я ошибаюсь? – ccbunney