我面临的问题是在情节上重新绘制一个小圆圈的速度很慢。
我目前正在做相当于 Joe Kington 的回答中列出的交互式类 - matplotlib: update position of patch (or: set_xy for circles)
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
import time
class InteractiveCircle(object):
def __init__(self):
self.fig, self.ax = plt.subplots()
self.ax.axis('equal')
self.circ = Circle((0.5, 0.5), 0.1)
self.ax.add_artist(self.circ)
self.ax.set_title('Click to move the circle')
self.fig.canvas.mpl_connect('button_press_event', self.on_click)
def on_click(self, event):
if event.inaxes is None:
return
self.circ.center = event.xdata, event.ydata
start_time = time.time()
self.fig.canvas.draw()
print "%f" %(time.time() - start_time)
def show(self):
plt.show()
InteractiveCircle().show()
这需要 >800 毫秒才能在图中重新绘制一个小圆圈!
我从http://matplotlib.1069221.n5.nabble.com/blit-animation-with-patches-td25634.html尝试了 self.ax.draw_artist(self.circ) 。这需要 <1ms 但不会重绘圆圈:)
我很惊讶更新图表的一小部分是如此缓慢。我正在寻找<1ms 的解决方案。
有什么建议么?
编辑:删除对 tkinter 的引用作为缓慢可以通过仅 matplotlib 的示例重现
编辑:操作系统 - RHEL 5.8
matplotlib --verbose-helpful output
version 1.2.0
platform is linux2
backend TkAgg version 8.6
编辑:我在 SSH 上使用 X-windows