我有一个关于使用matplotlib动态更新散点图的问题。
我在Python中有以下类:
''' PolygonHandler.py - Python source for polygon handling '''
import numpy as np
import matplotlib.pyplot as plt
class PolygonHandler:
# Constructor
def __init__(self):
self.X = []
self.Y = []
self.numberPoints = 0
# Print the polygon
def draw(self):
plt.scatter(self.X,self.Y)
plt.draw()
def update(self):
for i in range(1,self.numberPoints):
self.X[i] += np.random.normal()*0.01
self.Y[i] += np.random.normal()*0.01
# append a point
def add(self,x,y):
self.numberPoints += 1
self.X.append(x)
self.Y.append(y)
这个类用于在实时循环中接收信息并将点添加到PolygonHandler类中。现在,为了举例说明,我想设计以下循环:
P = PolygonHandler()
P.add(1,1)
P.add(2,2)
P.add(1,2)
plt.ion()
plt.show()
while (True):
P.draw()
P.update()
我应该如何告诉解释器绘制散点图,并在更新后删除旧的点?目前,我的图绘制了所有点及其先前位置。
Vincent
非常感谢您的帮助。
PS:我遇到的另一个问题是,由matplotlib打开的窗口一旦被点击(例如将其移动到屏幕上的另一个位置)就会冻结并停止响应。有没有办法防止这种情况发生?