利用python画一个实时折线图,Matplotlib画实时数据图

该博客介绍了如何利用matplotlib自行创建一个实时折线图,用于显示通过ADB获取的APP内存信息。作者通过不断更新图表数据并设置刷新间隔,实现了类似性能测试工具的功能。博客中提供了详细的代码示例,包括设置中文标签、创建多表以及动态更新图表的方法。
摘要由CSDN通过智能技术生成

起因是app性能测试工具perfdog收费了,所以想自己写一个实时折线图,用来显示adb获取到的app等内存信息,网上查了较多资料,都讲的很复杂,或者就是先得到大量数据,最后只展现一次的形式。

然后就自己看官方文档,想办法试试用循环能不能搞定,结果成了。

效果如下图

# 当前选用matplotlib版本3.3.2
import matplotlib.pyplot as plt
import random


# 创建一个折线图
fig = plt.figure()

# 设置中文语言
plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文标签
plt.rcParams['axes.unicode_minus'] = False

# 创建四个表格,411代表创建4行1列,当前在1的位置
ax = fig.add_subplot(4, 1, 1)
bx = fig.add_subplot(4, 1, 2)
cx = fig.add_subplot(4, 1, 3)
dx = fig.add_subplot(4, 1, 4)

# 给表的Y轴位置加上标签,rotation代表让文字横着展示,labelpad代表文字距表格多远了
ax.set_ylabel('表一', rotation=0, fontsize=16, labelpad=20)
bx.set_ylabel('表二', rotation=0, fontsize=16, labelpad=20)

# 给定一个参数,用来标识是不是第一次创建
line = None

# 给定一个X轴和Y轴的参数列表,用作后面承载数据
obsX = []
obsY = []

# 再给定一个X轴的开始位置,用作后面累加
i = 1

while True:
    # 往列表插入展示的点的坐标
    obsX.append(i)
    # Y轴的话,由于没有实际数据,这里就用随机数代替
    obsY.append(random.randrange(100, 200))

    # 如果图还没有画,则创建一个画图
    if line is None:
        # -代表用横线画,g代表线的颜色是绿色,.代表,画图的关键点,用点代替。也可以用*,代表关键点为五角星
        line = bx.plot(obsX, obsY, '-g', marker='.')[0]

    # 这里插入需要画图的参数,由于图线,是由很多个点组成的,所以这里需要的是一个列表
    line.set_xdata(obsX)
    line.set_ydata(obsY)

    # 我这里设计了一种方法,当X轴跑了100次的时候,则让X坐标的原点动起来
    if len(obsX) < 100:
        bx.set_xlim([min(obsX), max(obsX) + 30])
    else:
        bx.set_xlim([obsX[-80], max(obsX) * 1.2])

    # Y轴的话我就没让他动了,然后加一个10,防止最高的订单顶到天花板
    bx.set_ylim([min(obsY), max(obsY) + 10])

    # 这个就是表的刷新时间了,以秒为单位
    plt.pause(1)

    # 画完一次了,i的数据加1,让X轴可以一直往前走。
    i += 1

# 我这里只给了表二的数据,只是打个样,聪明的你肯定会举一反三的。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值