いくつかのデータ (x,y) をグラフ化する がmatplotlib
hexbin
埋め込まれています。( 経由で) 新しいデータを受信したときに を更新しGTK.Window
たい。しかし、私はいくつかの問題を抱えています。plot
UDP
いくつかの異なる方法で動作させることができますが、どれも「効率的」ではありませんでした (つまり、再描画にplot
時間がかかりすぎます)。私はここを見て、提案された答えの後にヘックスビンをモデル化しようとしましたが、これをまったく機能させることができませんでした。次のエラーが表示され続けます。
TypeError: 'PolyCollection' object is not iterable.
hexbins
standard と同じ方法で更新することはできないと思い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'