我面临的问题是在剧情中重绘一个小圆圈的速度很慢。
我目前正在做相当于Joe Kington's anwer中列出的互动课程 - matplotlib: update position of patches (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)。这需要<1毫秒,但不会重绘圆圈:)
我很惊讶更新图表的一小部分是如此之慢。我正在寻找一个<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