请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

多线程与matplot

https://img1.sycdn.imooc.com//szimg/5e902ed3092ebde010410221.jpg

老师,我想使用多线程动态展示几个量的变化趋势(因为实际数据通讯有延时,所以每个图的绘制都单独开了一个线程)。报错信息如截图。代码如下,希望老师给点指导

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()

正在回答 回答被采纳积分+3

1回答

bobby 2020-04-11 15:59:59

matplot我没怎么用过 这个问题不太清楚 不过从这个报错来看应该很容易被百度到答案

0 回复 有任何疑惑可以回复我~
  • 提问者 慕标1049315 #1
    百度过很多答案,都是让先调用matplotlib.use('agg'),试过没有用。我贴的代码已经把这句注释掉了。老师空了再看看,感谢!!!
    回复 有任何疑惑可以回复我~ 2020-04-11 16:06:28
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信