老师,我想使用多线程动态展示几个量的变化趋势(因为实际数据通讯有延时,所以每个图的绘制都单独开了一个线程)。报错信息如截图。代码如下,希望老师给点指导
import matplotlib.pyplot as plt
import matplotlib
import threading
from math import *
import time
x1 = []
y1 = []
x2 = []
y2 = []
def plot1():
for i in range(2000):
# 清空画布上的所有内容
plt.clf()
# 模拟数据获取等待
time.sleep(0.005)
# 模拟数据增量流入,保存历史数据
x1.append(i*0.1)
# 模拟数据增量流入,保存历史数据
y1.append(sin(i*0.1))
if len(x1) > 100:
del x1[0], y1[0]
plt.subplot(211)
plt.plot(x1, y1, '-r')
plt.pause(0.01)
def plot2():
for i in range(2000):
# 清空画布上的所有内容
plt.clf()
# 模拟数据获取等待
time.sleep(0.005)
# 模拟数据增量流入,保存历史数据
x2.append(i*0.1)
# 模拟数据增量流入,保存历史数据
y2.append(cos(i*0.1))
if len(x2) > 100:
del x2[0], y2[0]
plt.subplot(212)
plt.plot(x2, y2, '-b')
plt.pause(0.01)
if __name__ == "__main__":
# 开启interactive mode 成功的关键函数
plt.ion()
plt.figure(2)
# matplotlib.use('agg')
thread1 = threading.Thread(target=plot1)
thread1.start()
thread2 = threading.Thread(target=plot2)
thread2.start()
thread1.join()
thread2.join()