python从文本文档里读取某一列数据并绘图

从文本文档里读取某一列数据并绘图
txt文档格式如下:
在这里插入图片描述
取第六列数据:**line.strip().split(',')[0].split()[5:6]**
取后三列数据:

**line.strip().split(',')[0].split()[12:13]
line.strip().split(',')[0].split()[13:14]
line.strip().split(',')[0].split()[14:15]**

代码如下:

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt

# 设置x,y轴的数值(y=sinx)
x = np.array(list(i for i in range(100)))
y1 = [] #yolov3_loss
y2 = [] #LF-YOLO_loss
y3 = [] #LF-YOLO-SE_loss
box1,box2,box3=[],[],[]
obj1,obj2,obj3=[],[],[]
cls1,cls2,cls3=[],[],[]
path1=r'C:\Users\YUXIAOYANG\Desktop\yolov3.txt'
path2=r'C:\Users\YUXIAOYANG\Desktop\LF-YOLO.txt'
path3='./runs/train/exp47/results.txt'
path=[path1,path2,path3]
with open(path1 ,'r') as f:
    for line in f:
      y1.append(line.strip().split(',')[0].split()[5:6])  #a.append(b):是将b原封不动的追加到a的末尾上,会改变a的值
                    #strip()用于移除字符串头尾指定的字符(默认为空格或者换行符)或字符序列
      box1.append(line.strip().split(',')[0].split()[12:13])
      obj1.append(line.strip().split(',')[0].split()[13:14])
      cls1.append(line.strip().split(',')[0].split()[14:15])
    y1 = np.array(y1, dtype=np.float32)
    box1=np.array(box1,dtype=np.float32)
    obj1=np.array(obj1,dtype=np.float32)
    cls1=np.array(cls1,dtype=np.float32)
    val_loss1=box1+obj1+cls1
#--------------------读取多个文本文档-----------------
# with open(r'C:\Users\YUXIAOYANG\Desktop\LF-YOLO.txt' ,'r') as f:
#     for line in f:
#       y2.append(line.strip().split(',')[0].split()[5:6])
# with open('./runs/train/exp46/results.txt' ,'r') as f:
#     for line in f:
#       y3.append(line.strip().split(',')[0].split()[5:6])
#
# y1=np.array(y1,dtype=np.float32)
# y2=np.array(y2,dtype=np.float32)
# y3=np.array(y3,dtype=np.float32)

with open(path2 ,'r') as f:
    for line in f:
      y2.append(line.strip().split(',')[0].split()[5:6])  #a.append(b):是将b原封不动的追加到a的末尾上,会改变a的值
                    #strip()用于移除字符串头尾指定的字符(默认为空格或者换行符)或字符序列
      box2.append(line.strip().split(',')[0].split()[12:13])
      obj2.append(line.strip().split(',')[0].split()[13:14])
      cls2.append(line.strip().split(',')[0].split()[14:15])
    y2 = np.array(y2, dtype=np.float32)
    box2=np.array(box2,dtype=np.float32)
    obj2=np.array(obj2,dtype=np.float32)
    cls2=np.array(cls2,dtype=np.float32)
    val_loss2=box2+obj2+cls2

with open(path3 ,'r') as f:
    for line in f:
      y3.append(line.strip().split(',')[0].split()[5:6])  #a.append(b):是将b原封不动的追加到a的末尾上,会改变a的值
                    #strip()用于移除字符串头尾指定的字符(默认为空格或者换行符)或字符序列
      box3.append(line.strip().split(',')[0].split()[12:13])
      obj3.append(line.strip().split(',')[0].split()[13:14])
      cls3.append(line.strip().split(',')[0].split()[14:15])
    y3 = np.array(y3, dtype=np.float32)
    box3=np.array(box3,dtype=np.float32)
    obj3=np.array(obj3,dtype=np.float32)
    cls3=np.array(cls3,dtype=np.float32)
    val_loss3=box3+obj3+cls3

# 创建绘图对象,figsize参数可以指定绘图对象的宽度和高度,单位为英寸,一英寸=80px
plt.figure(figsize=(8, 4))

# 在当前绘图对象中画图(x轴,y轴,给所绘制的曲线的名字,画线颜色,画线宽度)
# plt.plot(x, y1, label="$YOLOV3$", color="red", linewidth=2)
# plt.plot(x, y2, label="$LF-YOLO$", color="blue", linewidth=2)
# plt.plot(x, y3, label="$LF-YOLO-SE$", color="green", linewidth=2)
plt.plot(x, y3, label="$train$", color="red", linewidth=2)
plt.plot(x, val_loss3, label="$val$", color="blue", linewidth=2)


# X轴的文字
plt.xlabel("epoch")

# Y轴的文字
plt.ylabel("loss")

# 图表的标题
plt.title("LF-YOLO-SE Model Loss")

# Y轴的范围
#plt.ylim(-1.2, 1.2)

# 显示图示
plt.legend()

# 显示图
plt.savefig(r"C:\Users\YUXIAOYANG\Desktop\LF-YOLO-SE Model Loss .jpg")
plt.show()

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44769034/article/details/124773153