У меня есть приложение wxPython, которое содержит панель matplotlib (любезно предоставлено wxmpl, хотя я видел то же самое с простым холстом FigureCanvasWxAgg).
Я бы хотел анимировать один из графиков впанель, и в прошлом я делал подобные вещи.Вот как я это делаю:
- скопировать фон
- сюжет
- [...]
- восстановить фон
- обновить данные линии
- художник рисования
- blit
Проблема в том, что графики вместо того, чтобы быть "перезаписаны" восстановлением фона,остаться там, и все это понятно, выглядит беспорядок.
Некоторый (упрощенный) код:
fig = self.myPanel.get_figure()
ax_top = fig.add_subplot(211)
ax_bottom = self.fig.add_subplot(212)
canvas = fig.canvas
canvas.draw()
bg_top = canvas.copy_from_bbox(ax_top.bbox)
bg_bottom = canvas.copy_from_bbox(ax_bottom.bbox)
line, = ax_bottom.plot(x, y, 'k', animated=True)
Затем при обновлении:
canvas.restore_region(bg_bottom)
line.set_ydata(new_y)
ax_bottom.draw_artist(line)
canvas.blit(ax_bottom.bbox)
Новая линия рисуется (и очень быстро! :), но дляпо какой-то причине это происходит по старой линии.Кто-нибудь может догадаться, почему?