【发布时间】:2012-12-12 01:42:17
【问题描述】:
我只想在我的程序上绘制一个图表。我需要多次使用axes.clear()绘制新图表。
from PyQt4 import QtGui
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as FigureCanvas
from matplotlib.figure import Figure
class MplCanvas(FigureCanvas):
def __init__(self):
self.fig = Figure()
self.axes = self.fig.add_subplot(111)
# do something...
FigureCanvas.__init__(self, self.fig)
FigureCanvas.setSizePolicy(self, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding)
FigureCanvas.updateGeometry(self)
# do something...
def refresh(self):
# FIXME: This method is very, very slow!!!
self.axes.clear()
# do something...
但它很慢,它会挂起我的程序大约 0.3 秒。正常吗?
【问题讨论】:
-
当你清除它时,你在轴上绘制了多少东西?
-
我只是绘制了一些简单的折线图。当用户单击表格上的项目时,图表将更新。用户需要一直点击表格。
-
你不需要清除整个轴,但通常更新图表的数据就足够了。
-
我同意@DavidZwicker,您可能应该通过更新现有行来做到这一点,但仍然觉得这是一个奇怪的问题。
-
axes.clear()真的应该是self.axes.clear()吗?如果我进行此更改(并假设一个最小接口),refresh运行时没有可描述的延迟。您能否发布一个显示此显示的最小独立示例?
标签: python charts qt4 matplotlib pyqt