补丁的快速更新.matplotlib中的圆圈位置

时间:2013-07-26 19:05:48

标签: python matplotlib tkinter

我面临的问题是在剧情中重绘一个小圆圈的速度很慢。

我目前正在做相当于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

0 个答案:

没有答案