matplotlib绘制折线图
2024-01-01 17:38:39
代码
import matplotlib.pyplot as plt
import numpy as np
# 函数介绍
# https://blog.csdn.net/LQ_001/article/details/130127681?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22130127681%22%2C%22source%22%3A%22LQ_001%22%7D
def get_data(txt_path: str = '', epoch: int = 100, target: str = '', target_data_len: int = 5):
num_list = [] # 将提取出来的数据保存到列表,并在最后返回
data = open(txt_path, encoding="utf-8") # 打开文件
str1 = data.read() # 将文件中读取到的内容转化为字符串
data.close() # 关闭文件
for i in range(0, epoch):
index = str1.find(target) # 查找字符串str1中str2字符串的位置
num_list.append(float(str1[index+len(target):index+len(target)+target_data_len])) # 将需要的数据提取到列表中
str1 = str1.replace(target, 'xxxx', 1) # 替换掉已经查阅过的地方,' xxxx '表示替换后的内容,1表示在字符串中的替换次数为1
return num_list
# 设置全局字体大小
plt.rcParams['font.size'] = 18
# 提取ACC1的数据
list_ACC1 = get_data("./everything_to_Matlab/test.txt", 51, target="ACC1:", target_data_len=11)
list_ACC1_x = np.arange(len(list_ACC1))
# 提取test3的数据
list_ACC2 = get_data("./everything_to_Matlab/test.txt", 51, target="test2:", target_data_len=11)
list_ACC2_x = np.arange(len(list_ACC1))
# 提取ACC1的数据
list_loss1 = get_data("./everything_to_Matlab/test.txt", 50, target="loss1:", target_data_len=11)
list_loss1_x = np.arange(len(list_loss1))
# 提取test3的数据
list_loss2 = get_data("./everything_to_Matlab/test.txt", 50, target="loss2:", target_data_len=11)
list_loss2_x = np.arange(len(list_loss2))
fig, ax1 = plt.subplots()
# 绘制第一段折线
ax1.plot(list_ACC1, color = "#E18E6D", label = "lr_mul=1")
ax1.plot(list_ACC2, color = "#62B197", label = "lr_mul=0.5")
ax1.legend(loc='center right')
ax1.set_yticks([0.9995, 0.9943, 1.006]) # 设置Y轴刻度
ax1.set_yticklabels(["99.95%", "99.43%", "Accuracy"])
ax1.set_ylim(0.90, 1.006) # 必须再 legend() 后面
ax1.set_xlim(0, 50) # 必须再 legend() 后面
ax1.set_xlabel("epoch")
ax1.grid(axis='y')
# 绘制第二段折线
ax2 = ax1.twinx()
ax2.plot(list_loss1, color = "#E18E6D")
ax2.plot(list_loss2, color = "#62B197")
ax2.set_yticks([0.0005025579, 0.0001039364, 0.0079685581]) # 设置Y轴刻度
ax2.set_yticklabels(["0.5", "0.1", "loss(e-3)"])
ax2.set_ylim(0.0001039364 , 0.0079685581) # 必须再 legend() 后面
ax2.set_xlim(0, 50) # 必须再 legend() 后面
ax2.set_xlabel("epoch")
ax2.grid(axis='y')
plt.show()
结果
文章来源:https://blog.csdn.net/LQ_001/article/details/135326039
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!