利用matplotlib绘制多个实时刷新的动态图表

参考博客
Python中matplotlib实时画图
  https://blog.csdn.net/zhanghao3389/article/details/82685072
Python中的plt.rcParams[]使用
  http://www.cnblogs.com/pacino12134/p/9776882.html
  pyplot使用rc配置文件来自定义图形的各种默认属性,称之为rc配置或rc参数。
matplotlib 画动态图以及plt.ion()和plt.ioff()的使用
  https://blog.csdn.net/zbrwhut/article/details/80625702
用matplotlib设置标题、轴标签、刻度标签以及添加图例
  https://blog.csdn.net/weixin_41789633/article/details/79826935
内容
  简言之,通过进入matplotlib的交互模式实时绘图。
  若只利用plt.show()绘图时,程序会停止执行之后的程序,所以通过plt.ion()开启画图窗口进入交互模式,利用程序plt.plot()实时绘图,绘制完成后,再利用plt.ioff()退出交互模式,并使用plt.show()显示最后的图片数据,若最后不加入plt.show()会闪退。
程序参考

import matplotlib.pyplot as plt
import numpy as np

ax=[]   #保存图1数据
ay=[]
bx=[]   #保存图2数据
by=[]
num=0   #计数
plt.ion()    # 开启一个画图的窗口进入交互模式,用于实时更新数据
# plt.rcParams['savefig.dpi'] = 200 #图片像素
# plt.rcParams['figure.dpi'] = 200 #分辨率
plt.rcParams['figure.figsize'] = (10, 10)        # 图像显示大小
plt.rcParams['font.sans-serif']=['SimHei']   #防止中文标签乱码,还有通过导入字体文件的方法
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['lines.linewidth'] = 0.5   #设置曲线线条宽度
while num<100:
    plt.clf()    #清除刷新前的图表,防止数据量过大消耗内存
    plt.suptitle("总标题",fontsize=30)             #添加总标题,并设置文字大小
    g1=np.random.random()  #生成随机数画图
	#图表1
    ax.append(num)      #追加x坐标值
    ay.append(g1)       #追加y坐标值
    agraphic=plt.subplot(2,1,1)
    agraphic.set_title('子图表标题1')      #添加子标题
    agraphic.set_xlabel('x轴',fontsize=10)   #添加轴标签
    agraphic.set_ylabel('y轴', fontsize=20)
    plt.plot(ax,ay,'g-')                #等于agraghic.plot(ax,ay,'g-')
	#图表2
    bx.append(num)
    by.append(g1)
    bgraghic=plt.subplot(2, 1, 2)
    bgraghic.set_title('子图表标题2')
    bgraghic.plot(bx,by,'r^')

    plt.pause(0.4)     #设置暂停时间,太快图表无法正常显示
    if num == 15:
        plt.savefig('picture.png', dpi=300)  # 设置保存图片的分辨率
        #break
    num=num+1

plt.ioff()       # 关闭画图的窗口,即关闭交互模式
plt.show()       # 显示图片,防止闪退

程序结果
程序结果动态图:
利用matplotlib绘制多个实时刷新的动态图表_第1张图片
开始注意排版了。。。很多用法都不会呀,ヾ(◍°∇°◍)ノ゙

你可能感兴趣的:(python)