加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何更新matplotlib hexbin图?

发布时间:2020-12-16 21:52:28 所属栏目:Python 来源:网络整理
导读:我有一个嵌入在GTK.Window中的matplotlib hexbin,它可以绘制一些数据(x,y).我希望在接收新数据时(通过UDP)更新绘图.我虽然遇到了一些麻烦. 我可以通过几种不同的方式使它工作,但没有一种是“有效的”(含义 重绘绘图需要太长时间).我看了here并试图在建议的答

我有一个嵌入在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转换x,y – >列表多边形的集合. polyCollection只是一个顶点,边和面颜色的列表,我不认为它带有关于它是如何生成的任何语义信息.

最好的方法是核旧旧的hexbin并用一个新的hexbin替换它.

如果你真的想要能够就地更新要么使用方形2d直方图(所以你可以使用imshow),或者你可以修改hexbin来返回补丁列表(而不是polyCollection)并跟踪你的binning自.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读