背景:
最近有个需求,需要将数据画成折线图便于观察,并且数据是实时生成的(与时间有关),数据数量不确定,在网上看到大多数都是基于固定数据来进行画图,很少有将动态生成的数据画成图形的,因此研究了一下。
实现思路:
- 使用库:画图用matplotlib实现
- 获取跟随时间变化的数据,并将时间作为x轴,数据作为y轴
- 写一个循环,将数据“动态刷新”在画板上
- 由于数据数量不确定,因此x轴显示的数量个数最好固定(不然数据太多挤在一堆不好看),例如显示20个数据,当总数据个数超过20个后,将第一个数据不显示(将列表中的第一个值删除),最后一位新增一个数据,整体呈现的效果就是整个图像在向x轴的负方向移动。
方法实现不难,详情请见下列代码:
import matplotlib.pylab as plt
import time
import numpy as np
import random
from matplotlib.pyplot import MultipleLocator
import csv
x_list = [] # 用于存放x轴数据
y_list = [] # 用于存放y轴数据
temp_list_x = [] # 临时存放x轴数据
temp_list_y = [] # 临时存放y轴数据
show_num = 10 # x轴显示的数据个数,例:show_num = 10表示x轴只显示10个数据
num = 0
plt.ion(