gpt4 book ai didi

python - 如何更新 matplotlib hexbin 图?

转载 作者:太空狗 更新时间:2023-10-30 01:16:17 25 4
gpt4 key购买 nike

我有一个 matplotlib hexbin 嵌入到 GTK.Window 中,用于绘制一些数据 (x,y)。我希望 plot 在收到新数据时更新(通过 UDP)。不过我遇到了一些麻烦。

我可以用几种不同的方式让它工作,但没有一种是“有效的”(意思是 - 重绘 plot 花费的时间太长)。我看了here并尝试根据建议的答案对我的 hexbin 进行建模,但根本无法使其工作。我不断收到以下错误:

TypeError: 'PolyCollection' 对象不可迭代。

我猜 hexbins 不能像标准 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'

最佳答案

我认为目前无法做到这一点,hexbin 转换 x,y 列表 -> 多边形集合。 polyCollection 只是一个顶点、边和面颜色的列表,我不认为它包含任何关于它是如何生成的语义信息。

最好的方法是核对旧的 hexbin 并用新的替换它。

如果你真的想就地更新要么使用方形二维直方图(这样你就可以使用imshow),或者你可以修改hexbin来返回补丁列表(而不是 polyCollection)并跟踪您自己的分箱。

关于python - 如何更新 matplotlib hexbin 图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14734693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com