我有这样的课
class WaveData(object):
def __init__(self, data):
self.data = data
并创建一个数据对象,绘制一个图形
wave = WaveData([[1, 2, 3],
[7, 5, 6]])
import matplotlib.pyplot as plt
fig=plt.figure()
plot1, = fig.canvas.figure.subplots().plot(wave.data[0])
plot2, = fig.canvas.figure.subplots().plot(wave.data[1])
我希望当我改变波值时,情节会同步改变
wave.data[1]=[5,6,7] # hope figure change together
我尝试changedata为WaveData类添加方法,但是:
- 它需要使用全局变量
fig,可能不是reasonale(我可以将fig作为self属性,但实际上fig还链接了其他没有写在这里的类对象) - 我不能通过
fig直接更改数据来更改:wave.data[1] =[5,6,7]
class WaveData(object):
def __init__(self, data):
self.data = data
def changedata(self,value,index):
self.data[index]=value
#-- change the plot index th plot data--#
global plot1,plot2,fig
plot1.set_ydata(self.data[1])
plot2.set_ydata(self.data[2])
fig.canvas.draw_idle()
#-- change the plot index th plot data--#
我想创建一个观察者来监控wave.datavalue 。当检测到值变化时,执行一些动作
怎么做?