我有一个嵌入在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(…)后删除了’,’
最佳答案
我不认为这可以在目前完成,hexbin转换x,y – >列表多边形的集合. polyCollection只是一个顶点,边和面颜色的列表,我不认为它带有关于它是如何生成的任何语义信息.
最好的方法是核旧旧的hexbin并用一个新的hexbin替换它.
如果你真的想要能够就地更新要么使用方形2d直方图(所以你可以使用imshow),或者你可以修改hexbin来返回补丁列表(而不是polyCollection)并跟踪你的binning自.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。