我有一个嵌入在GTK.Window中的matplotlib hexbin,它可以绘制一些数据(x,y).我希望在接收新数据时(通过UDP)更新绘图.我虽然遇到了一些麻烦.
我可以通过几种不同的方式使它工作,但没有一种是“有效的”(含义 – 重绘绘图需要太长时间).我看了here并试图在建议的答案之后建模我的hexbin但是根本无法使用它.我一直收到以下错误:
TypeError:’PolyCollection’对象不可迭代.
我猜测hexbins不能以与标准图相同的方式更新.
示例代码:
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,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(…)后删除了’,’
最佳答案