Python绘图 多个文件 多条线段组合绘图

目录

前言:

开始作图:

首先实验得出的数据地址:

利用列表获取多个txt文件:

读取单个文件中的内容:

读取完后画图:

显示结果:

完整代码:

References:


前言:

实验做得好,结果很满意,也得图画的好看。为此研究了一下画图。

好看的图,赏心悦目,都能让别人愿意看你的文章的。这点很重要。

作图几点原则:

1、 图留白,清爽;

2、图应具有自明性;

3、写论文时,必须有对图的描述;如果没有,则可以删掉。

4、引用他人的图时,也需要保持字号比正文小一号。

5、图片保存为矢量格式的,就是放大缩小都能保持分辨率。

 

开始作图:

首先实验得出的数据地址:

# 路径
path = './woker16/'   #当前文件夹下的worker16文件夹

利用列表获取多个txt文件:

# 文件列表 acc
files_AlexNet_acc = []
for file_acc in os.listdir(path):
    if file_acc.endswith("AlexNet_acc.txt"):   #以AlexNet_acc.txt为结尾的文件
        files_AlexNet_acc.append(path + file_acc)   #添加到文件列表中

读取单个文件中的内容:

# 遍历所有文件 acc
def loadData(file):
    x = []    # x轴
    y = []    # y轴
    with open(file, 'r') as f:     #只读方式打开文件
        lines = f.readlines()      #读取所有行
        for line in lines:     
            datai = line.split()   #以空格作为分隔符
            x.append(float(datai[0]))  #获取第一列数据
            y.append(float(datai[1]))  #获取第二列数据
    return x, y      

读取完后画图:


if __name__ == '__main__':
    #
    x, y = loadData(files_AlexNet_loss[0])
    plt.plot(x, y, color='r', alpha=0.6, label='$test \; test$')   #这里label是按照latex格式,"\;"是latex的留空命令
    plt.legend()    #图例说明,让图片具备自明性

    plt.title("test plot")
    plt.xlabel("iteration")
    plt.ylabel("loss")
    plt.xticks([5000, 10000, 15000], ['5000', '10000', '15000'])  #xticks()函数设置x轴刻度间隔
    plt.show()

显示结果:

代码还有很多可以优化的地方。先写在这,日后有时间再继续优化。

 

完整代码:

import matplotlib.pyplot as plt
import os

# 路径
path = './woker16/'

# 文件列表 acc
files_AlexNet_acc = []
for file_acc in os.listdir(path):
    if file_acc.endswith("AlexNet_acc.txt"):
        files_AlexNet_acc.append(path + file_acc)

#文件列表 loss
files_AlexNet_loss = []
for file_loss in os.listdir(path):
    if file_loss.endswith("AlexNet_loss.txt"):
        files_AlexNet_loss.append(path + file_loss)


# 遍历所有文件 acc
def loadData(file):
    x = [] # x轴
    y = [] # y轴
    tup = []
    tups = []
    with open(file, 'r') as f:
        print(file)
        lines = f.readlines()
        for line in lines:
            datai = line.split()
            x.append(float(datai[0]))
            y.append(float(datai[1]))
            #print('x', x)
            #print('y', y)
            #tup.append(list(zip(x, y)))
    return x, y

#画图
def plotData(x,y):
    pass   #这个日后优化

if __name__ == '__main__':
    #此处是画出acc的图,要画出loss的图,只需把files_AlexNet_acc中的acc换成loss即可
    x, y = loadData(files_AlexNet_acc[0])
    plt.plot(x, y, color='r', alpha=0.6, label='$test \; test$')
    plt.legend()

    x, y = loadData(files_AlexNet_acc[1])
    plt.plot(x, y, color='g', alpha=0.6, label='$test \; test \; test$')
    plt.legend()

    x, y = loadData(files_AlexNet_acc[2])
    plt.plot(x, y, color='b', alpha=0.6, label='$test \; test \; test$')
    plt.legend()

    x, y = loadData(files_AlexNet_acc[3])
    plt.plot(x, y, color='y', alpha=0.6, label='$test \; test \; test$')
    plt.legend()

    x, y = loadData(files_AlexNet_acc[4])
    plt.plot(x, y, color='c', alpha=0.6, label='$test \; test \; test$')
    plt.legend()

    x, y = loadData(files_AlexNet_acc[5])
    plt.plot(x, y, color='m', alpha=0.6, label='$test \; test$')
    plt.legend()

    plt.title("test plot")
    plt.xlabel("iteration")
    plt.ylabel("accuracy")
    plt.xticks([5000, 10000, 15000], ['5000', '10000', '15000'])
    plt.show()

 

References:

 [1] Latex中的空格_seaskying的专栏-CSDN博客_latex 空格
 [2]【Python】Python画图(线条颜色、大小、线形)【转载】_岚清子的博客-CSDN博客_python画图线条粗细
 [3] Python matplotlib画图时图例说明(legend)放到图像外侧详解_python_脚本之家 (jb51.net)
 [4] python xticks()函数设置X轴方法--刻度、标签_爱问西瓜爱大树的博客-CSDN博客_xticks

 

 

 

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值