python matplotlib 绘制训练曲线 综合示例——平滑处理、图题设置、图例设置、字体大小、线条样式、颜色设置
文章目录
- 1 导出曲线数据
- 2 python简单的 绘制曲线
- 3 Savitzky-Golay 滤波器--平滑曲线
- 4 对y轴数值缩放处理
- 5 设置图题、图例、字体、网格、保存曲线图
- 6 补充
- 6.1 python 曲线平滑处理——方法总结-详解
- 6.2 Tensorboard可视化训练曲线导出数据用Python绘制
- 6.3 PyTorch可视化工具-Tensorboard在线查看训练曲线、网络结构图等
- 6.4 PyTorch常用小工具-Tensorboard、Summary、Profiler
- 7 源码下载、曲线数据下载
1 导出曲线数据
训练损失曲线数据,用.csv格式导出,数据如下表所示。用python绘制出 step和Value的关系曲线
2 python简单的 绘制曲线
from matplotlib import pyplot as plt
import csv
import numpy as npfilename = "D:/python/pltt/train_loss.csv" #.csv文件路径,可以添加绝对路径
with open(filename) as f: csvreader = csv.reader(f, delimiter = ",", quotechar='"') for line in range(1): #1代表从文件第2行开始读取next (csvreader) print("lines: ",line) #打印行数x = [] #横纵坐标分别建立了两个list y = [] for row in csvreader:x.append(float(row[1])) #读取第2、3列数据,放入list y.append(float(row[2])) # 可视化图线 plt.plot(x,y,'g', linewidth=1.0) #曲线颜色绿色,线条宽度1plt.show()
可以看到上面的曲线震荡的很厉害,不利于观察整体趋势,需要滤波处理
3 Savitzky-Golay 滤波器–平滑曲线
对曲线进行平滑处理,通过Savitzky-Golay 滤波器,可以在scipy库里直接调用,不需要再定义函数。
from matplotlib import pyplot as plt
import csv
import numpy as np
# 使用Savitzky-Golay 滤波器后得到平滑图线from scipy.signal import savgol_filterfilename = "D:/python/pltt/train_loss.csv" #.csv文件路径,这里可以添加绝对路径
with open(filename) as f: csvreader = csv.reader(f, delimiter = ",", quotechar='"') for line in range(1): #1代表从文件第2行开始读取next (csvreader) print("lines: ",line) #打印行数x = [] #横纵坐标分别建立了两个list y = [] for row in csvreader:x.append(float(row[1])) #读取第2、3列数据,放入list y.append(float(row[2])) #Savitzky-Golay 滤波器实现曲线平滑'''scipy.signal.savgol_filter(y, window_length, polyorder)y--代表曲线点坐标(x,y)中的y值,为要滤波的信号window_length--即窗口长度取值为奇数且不能超过len(x)。它越大,则平滑效果越明显;越小,则更贴近原始曲线。polyorder--为多项式拟合的阶数。它越小,则平滑效果越明显;越大,则更贴近原始曲线。mode--滤波器的填充信号的扩展类型'''y = savgol_filter(y, 99, 1, mode= 'nearest')# 可视化图线 plt.plot(x,y,'g', linewidth=1.0) #曲线颜色绿色,线条宽度1plt.show()
y = savgol_filter(y, 99, 1, mode= 'nearest')
4 对y轴数值缩放处理
对x,y值进行缩放,有两种方法
# 方法① list转array,在再缩放
y=np.array(y)/500 #list转array,再缩放# 方法② 直接在plt.plot(x,y/500)中缩放
plt.plot(x, y,'g')
错误方法
y = savgol_filter(y/500, 99, 1, mode= 'nearest')
TypeError: unsupported operand type(s) for /: 'list' and 'int'y.append(float(row[2]/500)) #读取数据,放入list
TypeError: unsupported operand type(s) for /: 'str' and 'int'y = y /500
TypeError: unsupported operand type(s) for /: 'list' and 'int'
完整代码
from matplotlib import pyplot as plt
import csv
import glob
from os.path import basename
import numpy as np# 使用Savitzky-Golay 滤波器后得到平滑图线
from scipy.signal import savgol_filterfiles = sorted(glob.glob("D:/python/pltt/train_loss.csv")) #读取目录下所有以.csv结尾的文件,这里可以添加绝对路径
for file in files:filename = basename(file).rsplit('.', 1)[0] #用.来分割文件名,取前半部分,例如XX.csv,取XX print('\r'+ filename + " ", flush = True) with open(file) as f: csvreader = csv.reader(f, delimiter = ",", quotechar='"') for line in range(1): #1代表从文件第2行开始读取next (csvreader) print("lines: ",line) #打印行数x = [] y = [] #横纵坐标分别建立了两个listfor row in csvreader:x.append(float(row[1])) #读取第2、3列数据 y.append(float(row[2])) #读取数据,放入list y=np.array(y)/500 #list转array,在缩放#Savitzky-Golay 滤波器实现曲线平滑'''scipy.signal.savgol_filter(y, window_length, polyorder)y--为要滤波的信号window_length--即窗口长度取值为奇数且不能超过len(x)。它越大,则平滑效果越明显;越小,则更贴近原始曲线。polyorder--为多项式拟合的阶数。它越小,则平滑效果越明显;越大,则更贴近原始曲线。'''y= savgol_filter(y, 55, 1, mode= 'nearest')# 可视化图线plt.plot(x, y,'g')plt.show()
5 设置图题、图例、字体、网格、保存曲线图
from matplotlib import pyplot as plt
import csv
import glob
from os.path import basename
import numpy as np# 使用Savitzky-Golay 滤波器后得到平滑图线
from scipy.signal import savgol_filter#dpi参数指定绘图对象的分辨率,即每英寸多少个像素 ;figsize:指定figure的宽和高,单位为英寸
fig=plt.figure(dpi = 80, figsize=(15,8))#设置标题
plt.title("Train_loss",fontsize = 25) #标题
plt.xlabel("Iterations", fontsize = 25) #横坐标
plt.ylabel("Loss", fontsize = 25) #纵坐标files = sorted(glob.glob("D:/python/pltt/train_loss.csv")) #读取目录下所有以.csv结尾的文件,这里可以添加绝对路径
for file in files:filename = basename(file).rsplit('.', 1)[0] #用.来分割文件名,取前半部分,例如XX.csv,取XX print('\r'+ filename + " ", flush = True) with open(file) as f: csvreader = csv.reader(f, delimiter = ",", quotechar='"') for line in range(1): #1代表从文件第2行开始读取next (csvreader) print("lines: ",line) #打印行数x = [] y = [] #横纵坐标分别建立了两个listfor row in csvreader:x.append(float(row[1])) #读取第2、3列数据 y.append(float(row[2])) #读取数据,放入list #设置横纵坐标显示范围# plt.xlim((0,90000))#横轴范围# plt.ylim((0,200)) #纵轴范围plt.tick_params(labelsize=20)#设置坐标刻度值的字体大小y=np.array(y)/500 #list转array,再缩放,否则报错#Savitzky-Golay 滤波器实现曲线平滑'''scipy.signal.savgol_filter(y, window_length, polyorder)y--为要滤波的信号window_length--即窗口长度取值为奇数且不能超过len(x)。它越大,则平滑效果越明显;越小,则更贴近原始曲线。polyorder--为多项式拟合的阶数。它越小,则平滑效果越明显;越大,则更贴近原始曲线。'''y_smooth = savgol_filter(y, 55, 1, mode= 'nearest')# 可视化图线plt.plot(x, y_smooth,'g', label = '%s' % filename, linewidth=3.0)#plt.legend()函数的作用是给图像加图例。plt.legend(frameon=True,loc="upper right",fontsize=25) #分别为图例有边框、图例放在右上角、图例大小#plt.grid()#添加网格plt.savefig('D:/python/pltt/Train_loss' + '.png',dpi = 80) #保存了绘制的图像 print("Done processing " + str(len(files)) + " files.") plt.grid()#添加网格
plt.show()
6 补充
6.1 python 曲线平滑处理——方法总结-详解
python 曲线平滑处理——方法总结(Savitzky-Golay 滤波器、make_interp_spline插值法和convolve滑动平均滤波)
6.2 Tensorboard可视化训练曲线导出数据用Python绘制
Tensorboard可视化训练曲线导出数据用Python绘制
6.3 PyTorch可视化工具-Tensorboard在线查看训练曲线、网络结构图等
Tensorboard在线查看训练曲线、网络结构图等
6.4 PyTorch常用小工具-Tensorboard、Summary、Profiler
PyTorch常用小工具-Tensorboard、Summary、Profiler
7 源码下载、曲线数据下载
曲线数据表、源代码、曲线图 下载
相关文章:

python matplotlib 绘制训练曲线 综合示例——平滑处理、图题设置、图例设置、字体大小、线条样式、颜色设置
文章目录1 导出曲线数据2 python简单的 绘制曲线3 Savitzky-Golay 滤波器--平滑曲线4 对y轴数值缩放处理5 设置图题、图例、字体、网格、保存曲线图6 补充6.1 python 曲线平滑处理——方法总结-详解6.2 Tensorboard可视化训练曲线导出数据用Python绘制6.3 PyTorch可视化工具-Te…...
vue-element-plus-admin整合后端实战——实现系统登录、缓存用户数据、实现动态路由
目标 整合vue-element-plus-admin前端框架,作为开发平台的前端。 准备工作 前端选用vue-element-plus-admin,地址 https://gitee.com/kailong110120130/vue-element-plus-admin。 首先clone项目,然后整合到开发平台中去。这是一个独立的前…...

Shader Graph2-PBR介绍之表面属性(图解)
PBR的实现由光线和表面属性决定,下面我们介绍一下表面属性。这个5个属性在ShaderGraph的根节点是经常的看到,左侧是Unity中的,右侧是UE中的。 在没有Metallic金属的情况下,基础颜色值就决定了颜色的漫反射值,也就是说基…...

Java多线程编程,Thread类的基本用法讲解
文章目录如何创建一个线程start 与 run线程休眠线程中断线程等待获取线程实例如何创建一个线程 之前我们介绍了什么是进程与线程,那么我们如何使用代码去创建一个线程呢?线程操作是操作系统中的概念,操作系统内核实现了线程这样的机制&#…...

TIA博途Wincc_多路复用变量的使用方法示例(实现多台相同设备参数的画面精简)
TIA博途Wincc_多路复用变量的使用方法示例(实现多台相同设备参数的画面精简) 使用多路复用变量的好处: 当项目中存在多个相同的设备(例如:变频器、电机等),对这些设备在HMI上进行监控或修改参数时,不再需要逐个建立画面或IO域等,只需通过单个画面或IO域组合即可实现对…...

关于console你不知道的那些事
看到标题,大家会不会想,我都在前端岗位叱咤风云这么多年了, console 这个玩意用你讲 但是, 今天我将带你看到不一样的 console, 可以带来更多的帮助 了解 console 什么是 console ? console 其实是 JavaScript 内的一个原生对象。内部存储的方法大部…...

Java设计模式-责任链模式
1 概述 在现实生活中,常常会出现这样的事例:一个请求有多个对象可以处理,但每个对象的处理条件或权限不同。例如,公司员工请假,可批假的领导有部门负责人、副总经理、总经理等,但每个领导能批准的天数不同…...

顺序表设计循环队列
使用顺序表来设计队列的最大优势是顺序表有可以定位元素的下标。 并且可以以Mod来使数组下标循环 #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<stdbool.h> typedef int CQDataType; typedef struct { int* array; in…...
UEFI 基础教程 (十四) - 设置默认启动项为UEFI Shell
一 编写源代码 OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c UINTN BootOptionPriority ( CONST EFI_BOOT_MANAGER_LOAD_OPTION *BootOption ) { DEBUG ((EFI_D_ERROR," [CSDN] BootOptionPriority %S .\n", BootOption->Description)); if (StrCmp (…...

python编程:判断一个数是否是超级素数
请定义一个函数,实现判断一个数是否是超级素数,并输出判断的结果。 一、编程题目 我们都知道,素数是除了1之外只能被自身整数的数,1除外。如果一个素数,去除一位、两位或多位后依然是素数,则我们称该素数为超级素数。…...

雷迪RD8200管线探测仪参数/管线仪使用方法/管线仪说明书
预防损坏和工作效率是我们客户面临的最大挑战 全新的 RD8200可以解决这些问题。这是我们功能优秀的精密管线仪系列,设计时充分考虑了操作员的需要。 预防损坏的专业选择 速度、准确性和可靠的性能 易于设置和使用 阳光下可读的显示屏、高性能的音频系统和用于嘈杂…...
会话共享保存到redis
1. 安装redis服务 [rootdb01 ~]# yum -y install redis 2. 配置redis服务 修改配置文件可以让其他服务器远程连接 127.0.0.1:6379 # 默认只能本地连接 [rootdb01 ~]# vim /etc/redis.conf [rootdb01 ~]# grep 172.16.1.51 /etc/redis.conf bind 127.…...

python 曲线平滑处理——方法总结(Savitzky-Golay 滤波器、make_interp_spline插值法和convolve滑动平均滤波)
文章目录1 插值法对曲线平滑处理1.1 插值法的常见实现方法1.2 拟合和插值的区别1.3 代码实例2 Savitzky-Golay 滤波器实现曲线平滑2.1 问题描述2.2 Savitzky-Golay 滤波器--调用讲解2.3 Savitzky-Golay 曲线平滑处理 示例2.4 Savitzky-Golay原理剖析3 基于Numpy.convolve实现滑…...
小驰私房菜_10_camx Otp Dump
#小驰私房菜# #camx# #Otp Dump# 本篇文章分下面几点展开: 1、otp dump的目的? 2、如何打开otp dump开关? 3、otp guide手册如何查看? 4、如何初步确认dump 出来的数据是否正确? 一、otp dump的目的 关于otp的一些概念,这里就不做过多的介绍了,不了解的同学,可以先去…...

priority_queue(堆)干货归纳+用法示例
10.priority_queue一.priority_queue(堆Heap)简介1.堆的特点:2.使用场景:二.成员函数1.构造函数:priority_queue构造函数方式:2.push()函数:向priority_queue中插入一个元素:3.pop()…...

miniprogram-to-uniapp使用指南(各种小程序项目转换为uni-app项目)
小程序分类:uni-app qq小程序 支付宝小程序 百度小程序 钉钉小程序 微信小程序 小程序转成uni_app 小程序转为uni_app 小程序转uni_app 小程序转换 工具现在支持npm全局库、HBuilderX插件两种方式使用,任君选择,HBuilderX插件地址:…...

BZOJ2720: [Violet 5]列队春游 【概率与期望】
题意自行理解,先讲一下概率和期望怎么算 概率 概率准确的定义自行百度,这里就不赘述了 概率的计算其实很简单,就是将符合条件的情况除以总共的情况 下面以掷骰子为例: 问题:将一个骰子掷出,666朝上的概率是多少 …...

脉诊之脉象——平脉,常见病脉,七绝脉
平脉与病脉诊脉纲领平人脉象常见病脉浮脉沉脉迟脉数脉虚脉实脉涩脉洪脉细脉滑脉弦脉紧脉长脉短脉弱脉芤脉结脉代脉七绝脉釜沸脉鱼翔脉虾游脉屋漏脉雀啄脉解索脉弹石脉预后诊脉纲领 脉跳动的力度:有力者,气足也。无力者,气不足也。 脉…...

第05章_存储引擎
第05章_存储引擎 🏠个人主页:shark-Gao 🧑个人简介:大家好,我是shark-Gao,一个想要与大家共同进步的男人😉😉 🎉目前状况:23届毕业生,目前在某…...

【新2023Q2押题JAVA】华为OD机试 - 挑选字符串
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:挑选字符串 题目 给定a-z,…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...

如何应对敏捷转型中的团队阻力
应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中,明确沟通敏捷转型目的尤为关键,团队成员只有清晰理解转型背后的原因和利益,才能降低对变化的…...