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

最近,朋友和我提到想将实验采集的数据绘制成一个记录高低电平变化的时序图,刚好最近我学了Matplotlib,第一反应就是可以用这个模块试一试。本人初学Python,利用晚上空闲时间写了几行代码,实现了想要的效果。
首先来看看数据,其中分为高和低两部分,数据内容为时间,结果需要将对应时间长度的高低电平显示在时序图中。因为高低电平是交替变化,所以这里将两组数据交替排列在一起,用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库绘制方波图像的方法。大家有其他好的函数或者方法可以实现这个图像绘制的话可以给我评论哦!

猜你喜欢

转载自blog.csdn.net/qq_43019451/article/details/89918191
今日推荐