我知道这个话题经常出现,但是经过多次尝试、搜索和放弃,我又把它带回来了。
我有一个类,其中包含一个matplotlib图形。在这个图形中,我想要一个文本,当用户按下某个键时,文本会更新为其他内容,而不必绘制轴中的所有繁重的东西。看起来我需要在这里使用blit,但是如何实现呢?这是一个可行的例子,是我目前为止能够做到的最好的。
import matplotlib as mpl
mpl.use('TkAgg')
import matplotlib.pyplot as plt
import numpy as np
class textUpdater:
def __init__(self):
self.fig, self.ax = plt.subplots()
# self.text = plt.figtext(.02, .14, 'Blibli')
self.text = self.ax.text(0, .5, 'Blabla')#, transform = self.ax.transAxes)#, animated=True)
self.fig.canvas.mpl_connect('key_press_event', self.action)
self.fig.canvas.draw()
plt.show()
def action(self, event):
if event.key == 'z':
self.text.set_text('Blooooo')
self.ax.draw_artist(self.text)
self.fig.canvas.blit(self.text.get_window_extent())
textUpdater()
第一个问题:当bliting物体时,以前的文本会出现在后面。我希望它消失!
第二个问题:事实上,我更喜欢将其作为fig文本,而不是任何轴线之外。这听起来可行吗?
你是最棒的,非常感谢。
artist.get_figure()
代替artist.axes.figure
即可。 - Tim FuchsArtistAnimation
应该为您处理所有的重绘和位块传输。 - Tim Fuchs