概述
我有一个嵌入在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(…)后删除了’,’
抛出的新错误是:AttributeError:’PolyCollection’对象没有属性’set_xdata’
最好的方法是核旧旧的hexbin并用一个新的hexbin替换它.
如果你真的想要能够就地更新要么使用方形2d直方图(所以你可以使用imshow),或者你可以修改hexbin来返回补丁列表(而不是polyCollection)并跟踪你的binning自.
总结
以上是编程之家为你收集整理的python – 如何更新matplotlib hexbin图?全部内容,希望文章能够帮你解决python – 如何更新matplotlib hexbin图?所遇到的程序开发问题。
如果您也喜欢它,动动您的小指点个赞吧