Python读取TXT文件绘制折线图并计算
上一节我们对time_cal.txt文件读取并在一张图上绘制折线图,那么如何分别绘制线形图呢?
PS:这里用到的是matplotlib库,详细的函数介绍可以参考:https://matplotlib.org/api/index.html
其实也很简单,话不多说,代码如下
from matplotlib import pyplot as plt
import numpy as np
fig = plt.figure(figsize=(2000, 100)) # 创建绘图窗口,并设置窗口大小
# 画第一张图
ax1 = fig.add_subplot(511) # 将画面分割为5行1列选第一个
ax1.plot(step, imageresize, 'red', label='imager-esize') # 画imageresize的值,颜色红
ax1.legend(loc='upper right') # 绘制图例,plot()中的label值
ax1.set_xlabel('x') # 设置X轴名称
ax1.set_ylabel('load image-resize') # 设置Y轴名称
画第二张图
ax2 = fig.add_subplot(512) # 将画面分割为5行1列选第二个
ax2.plot(step, data, 'blue', label='data') # 画data的值,颜色蓝
ax2.legend(loc='upper right') # loc为图例位置,设置在右上方,(右下方为lower right)
ax2.set_xlabel('x')
ax2.set_ylabel('set input data')
# 画第三张图
ax3 = fig.add_subplot(513) # 将画面分割为5行1列选第三个
ax3.plot(step, inference, 'green', label='inference') # 画inference的值,颜色蓝
ax3.legend(loc='upper right') # loc为图例位置,设置在右上方,(右下方为lower right)
ax3.set_xlabel('x')
ax3.set_ylabel('inference')
# 画第四张图
ax4 = fig.add_subplot(514)
ax4.plot(step, getOut , 'yellow', label='getOut') # 画getOut的值,颜色黄
ax4.legend(loc='upper right') # loc为图例位置,设置在右上方,(右下方为lower right)
ax4.set_xlabel('x')
ax4.set_ylabel('getout')
# 画第五张图
ax5 = fig.add_subplot(515) # 将画面分割为5行1列选第五个
ax5.plot(step, final , 'darkgray', label='final') # 画final的值,颜色深灰
ax5.legend(loc='upper right') # loc为图例位置,设置在右上方,(右下方为lower right)
ax5.set_xlabel('x')
ax5.set_ylabel('final')
plt.show() # 最后显示绘制的图
画出的图如下,可以看出明显的波动
最后是分别计算最大值,最小值,平均值,方差和标准差
print("名称 最大值 最小值 平均值 方差 标准差")
imageresize = np.array(imageresize)#imageresize是list,转为arr可以直接调用max()求最大值,min()最小值,mean()平均值,var()方差,std()标准差
print("imageresize: ",imageresize.max(),imageresize.min(),imageresize.mean(),imageresize.var(),imageresize.std())
data = np.array(data)
print("data: ", data.max(),data.min(),data.mean(),data.var(),data.std())
inference = np.array(inference)
print("inference: ",inference.max(),inference.min(),inference.mean(),inference.var(),inference.std())
getOut = np.array(getOut)
print("getOut: ", getOut.max(),getOut.min(),getOut.mean(),getOut.var(),getOut.std())
final = np.array(final)
print("final: ",final.max(),final.min(),final.mean(),final.var(),final.std())
我是为了方便讲计算结果直接输出,可以新建一个表格将结果复制进去,打开后按空格分列就可以得到如下直观的列表啦!
最后的最后,整体代码如下
from matplotlib import pyplot as plt
import numpy as np
filename = 'time_cal.txt'
step, imageresize, data, inference, getOut, final = [], [], [], [], [], []
# 相比open(),with open()不用手动调用close()方法
with open(filename, 'r') as f:
# 将txt中的数据逐行存到列表lines里 lines的每一个元素对应于txt中的一行。然后将每个元素中的不同信息提取出来
lines = f.readlines()
# i变量,由于这个txt存储时有空行,所以增只读偶数行,主要看txt文件的格式,一般不需要
# j用于判断读了多少条,step为画图的X轴
i = 0
j = 0
for line in lines:
temp = line.split(' ')
t1 = temp[1].split(':')
t2 = temp[4].split(':')
t3 = temp[5].split(':')
t4 = temp[6].split(':')
t5 = temp[7].split(':')
step.append(j)
j = j + 1
imageresize.append(float(t1[1].strip('ms')))
data.append(float(t2[1].strip('ms')))
inference.append(float(t3[1].strip('ms')))
getOut.append(float(t4[1].strip('ms')))
final.append(float(t5[1].strip('ms\n')))
#绘制在一张表格
plt.figure()
plt.plot(step, imageresize, 'red', label='image-resize')
plt.plot(step, data, 'blue', label='data')
plt.plot(step, inference, 'yellow', label='inference')
plt.plot(step, getOut, 'green', label='getOut')
plt.plot(step, final, 'darkgray', label='final')
plt.legend()
plt.show()
#分开绘制
fig = plt.figure(figsize=(2000, 100)) # 创建绘图窗口,并设置窗口大小
# 画第一张图
ax1 = fig.add_subplot(511)
ax1.plot(step, imageresize, 'red', label='imager-esize') # 画dis-loss的值,颜色红
ax1.legend(loc='upper right') # 绘制图例,plot()中的label值
ax1.set_xlabel('x') # 设置X轴名称
ax1.set_ylabel('load image-resize') # 设置Y轴名称
# 画第二张图
ax2 = fig.add_subplot(512)
ax2.plot(step, data, 'blue', label='data') # 画gan-loss的值,颜色蓝
ax2.legend(loc='upper right') # loc为图例位置,设置在右上方,(右下方为lower right)
ax2.set_xlabel('x')
ax2.set_ylabel('set input data')
# 画第三张图
ax3 = fig.add_subplot(513)
ax3.plot(step, inference, 'green', label='inference') # 画gan-loss的值,颜色蓝
ax3.legend(loc='upper right') # loc为图例位置,设置在右上方,(右下方为lower right)
ax3.set_xlabel('x')
ax3.set_ylabel('inference')
# 画第四张图
ax4 = fig.add_subplot(514)
ax4.plot(step, getOut , 'yellow', label='getOut') # 画gan-loss的值,颜色黄
ax4.legend(loc='upper right') # loc为图例位置,设置在右上方,(右下方为lower right)
ax4.set_xlabel('x')
ax4.set_ylabel('getout')
# 画第五张图
ax5 = fig.add_subplot(515)
ax5.plot(step, final , 'darkgray', label='final') # 画gan-loss的值,颜色深灰
ax5.legend(loc='upper right') # loc为图例位置,设置在右上方,(右下方为lower right)
ax5.set_xlabel('x')
ax5.set_ylabel('final')
plt.show() # 最后显示绘制的图
#计算
print("名称 最大值 最小值 平均值 方差 标准差")
imageresize = np.array(imageresize)
print("imageresize: ",imageresize.max(),imageresize.min(),imageresize.mean(),imageresize.var(),imageresize.std())
data = np.array(data)
print("data: ", data.max(),data.min(),data.mean(),data.var(),data.std())
inference = np.array(inference)
print("inference: ",inference.max(),inference.min(),inference.mean(),inference.var(),inference.std())
getOut = np.array(getOut)
print("getOut: ", getOut.max(),getOut.min(),getOut.mean(),getOut.var(),getOut.std())
final = np.array(final)
print("final: ",final.max(),final.min(),final.mean(),final.var(),final.std())
初次接触的小菜鸟,还在学习当中,希望对你有帮助,哪里有问题希望大佬指正!!!
来源:CSDN
作者:Tobbto
链接:https://blog.csdn.net/qq_40632272/article/details/103994126