用python代码读取txt文件,绘制方波时序图

朋友想将实验采集的数据绘制成记录高低电平变化的时序图,作者想到用Matplotlib模块实现。先将交替排列的高低电平数据放入txt文件,程序读取数据,利用Matplotlib绘制水平和竖直线段,给出了相关代码及绘制效果,还欢迎大家分享其他绘图方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近,朋友和我提到想将实验采集的数据绘制成一个记录高低电平变化的时序图,刚好最近我学了Matplotlib,第一反应就是可以用这个模块试一试。
首先来看看数据,其中分为高和低两部分,数据内容为时间,结果需要将对应时间长度的高低电平显示在时序图中。因为高低电平是交替变化,所以这里将两组数据交替排列在一起,用1和0区分。
将交替排列的数据放入txt文件中,程序从这个文件中读取数据。
在这里插入图片描述
程序加载的模块如下:

import numpy as np
import matplotlib.pyplot as plt
import os

文件读取部分代码如下,这里使用open函数打开文件,readline函数获取文件中的每一行数据:

filename = "times.txt"
time1= open(filename)
t1 = time1.readline()
t1 = t1[:-1] 

绘制水平和竖直线段使用到 Matplotlib。这里由于读入的数据是每一段水平线段的长度,所以,定义变量“time=0”和“t1=读入的数据”,则得到x的范围(time,time+t1)。用plot函数绘图将x和y对应关系y=1+x*0,即y在x的范围内值为1;绘制竖直线时使y1在(0,1)值为time。
代码如下:

# 绘制水平线段
 x = np.linspace(time,time+t1)
 y = 1+x*0
 plt.plot(x, y, color='red', linewidth=0.5)
#绘制竖直线段
y1= np.linspace(0,1)
x1=np.linspace(time,time)
plt.plot(x1, y1, color='red', linewidth=0.5)

最终的完整代码如下:

import numpy as np
import matplotlib.pyplot as plt
import os

# 初始化变量
time=0
i=0
# 设置方波高度
high = 0.01
# 打开文件,读取文件中每一行数据
filename = "times.txt"
time1= open(filename)
t1 = time1.readline()
t1 = t1[:-1] # 去除换行符

#循环t1
while t1:
    print(t1)
    # 生成起始时间time到time+t1范围内的x,y根据i值变化取值0或1
    x = np.linspace(time, time + int(t1))
    y = i%2*high+x*0
    plt.plot(x, y, color='red', linewidth=0.5)

    # 绘制竖线
    y1= np.linspace(0,high)
    x1=np.linspace(time,time)
    plt.plot(x1, y1, color='red', linewidth=0.5)

    # 将当前结束时间赋值给time
    time = time + int(t1)
    t1 = time1.readline()
    t1 = t1[:-1]
    i=i+1

time1.close()
plt.ylim(-0.01,high+0.01)
# my_x_ticks = np.arange(0, time, 20000)
# plt.xticks(my_x_ticks)
plt.show()

这里显示17个数据,绘制的图像效果:

在这里插入图片描述
以上内容,是我想出的使用Matplotlib库绘制方波图像的方法。大家有其他好的函数或者方法可以实现这个图像绘制的话可以给我评论哦!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值