Jor*_*oll 5 python gtk matplotlib
我有一个matplotlib hexbin嵌入在GTK.Window图表中的一些数据(x,y).我希望在plot收到新数据时更新(通过UDP).我虽然遇到了一些麻烦.
我可以通过几种不同的方式使它工作,但没有一种是"有效的"(含义 - 重绘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()
Run Code Online (Sandbox Code Playgroud)
代码使用如下:
graph = graph()
graph.plot(someXData, someYData)
# when new data is received
graph.update(newXData, newYData)
Run Code Online (Sandbox Code Playgroud)
这只是我如何使用代码的一个很小的例子.我没有多少经验,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)并跟踪您自己的分箱。
| 归档时间: |
|
| 查看次数: |
1168 次 |
| 最近记录: |