我有一个在
我可以用几种不同的方法来解决它,但都不够“高效”(也就是说-重新绘制
这只是我使用代码的一个非常小的例子。我对
因此,我的最终问题是 - 如何更新
编辑:感谢danodonovan的答案,我修改了代码并删除了
抛出的新错误是:
GTK.Window
中嵌入了matplotlib
hexbin
的图表,用于显示一些数据(x,y)。我希望当收到新数据(通过UDP
)时,plot
更新。但是我遇到了一些问题。我可以用几种不同的方法来解决它,但都不够“高效”(也就是说-重新绘制
plot
需要太长时间)。我查看了这里并尝试根据建议的答案模拟我的hexbin,但无法使其正常工作。我一直收到以下错误:
TypeError: 'PolyCollection' object is not iterable.
我猜测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'
。