我有一个matplotlib
hexbin
嵌入在GTK.Window
图表中的一些数据(x,y)。我希望在plot
收到新数据时更新(通过UDP
)。不过我遇到了一些麻烦。
我可以让它以几种不同的方式工作,但没有一个是“有效的”(意思是重绘plot
需要太长时间)。我在这里查看并尝试在建议的答案之后为我的 hexbin 建模,但根本无法让它工作。我不断收到以下错误:
TypeError: 'PolyCollection' object is not iterable.
我猜这hexbins
不能以与 standard 相同的方式更新plots
。
示例代码:
class graph:
def __init__(self):
self.window = gtk.Window()
self.figure = plt.figure()
self.ax = self.figure.add_subplot(111)
self.canvas = FigureCanvas(self.figure)
self.window.add(self.canvas)
self.graph = None
def plot(self, xData, yData):
if len(xData) > 1 and len(yData) > 1:
self.graph, = self.ax.hexbin(self.xData, self.yData)
###############################################
####This is where the code throws the error####
def update(self, xData, yData):
self.graph.set_xdata(np.append(self.graph.get_xdata(), xData))
self.graph.set_ydata(np.append(self.graph.get_ydata(), yData))
self.figure.canvas.draw()
代码是这样使用的:
graph = graph()
graph.plot(someXData, someYData)
# when new data is received
graph.update(newXData, newYData)
这只是我如何使用代码的一个非常小的例子。我没有太多经验,matplotlib
所以我可能会完全错误地解决这个问题。(这很可能是我正在做的事情)
所以我最终的问题是 -你如何更新matplotlib
hexbin
情节?
编辑:感谢danodonovan的回答,我改变了我的代码并删除了','之后self.graph = self.ax.hexbin(...)
抛出的新错误是:AttributeError: 'PolyCollection' object has no attribute 'set_xdata'