目录
前言:
实验做得好,结果很满意,也得图画的好看。为此研究了一下画图。
好看的图,赏心悦目,都能让别人愿意看你的文章的。这点很重要。
作图几点原则:
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