当前位置: 首页 > news >正文

绘制折线图遇到问题记录

绘制折线图

主要参考:https://blog.csdn.net/qq_38029916/article/details/121611066

对应代码

import csv
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['axes.unicode_minus'] = Falsepd_data = pd.read_csv("results.csv")
# %%capture output
## 捕获横坐标
epoch_data = pd_data["epoch"].astype(int).values
type(pd_data["epoch"])%%capture output
pd_data["train/box_loss"][np.isinf(pd_data["train/box_loss"])] = np.nan
train_cls_loss_data = pd_data["train/box_loss"].fillna(method="backfill",axis=0,inplace=False).astype(float).valuesdef get_data(data:pd.pandas)->None:if np.inf in data.values or np.nan in data.values:data[np.isinf(data)] = np.nandata = data.fillna(method="backfill",axis=0,inplace = False).astype(float).valuesreturn datadef main():## train_box_loss dataepochs = pd_data["epoch"].astype(int).valuestrain_box_loss = get_data(pd_data["train/box_loss"])train_cls_loss = get_data(pd_data["train/cls_loss"])train_dfl_loss = get_data(pd_data["train/dfl_loss"])val_box_loss = get_data(pd_data["val/box_loss"])val_cls_loss = get_data(pd_data["val/cls_loss"])val_dfl_loss = get_data(pd_data["val/dfl_loss"])colors = np.random.rand(6,3)fig,axes = plt.subplots(2,3 , figsize = (15,10))# Plot the train lossesaxes[0, 0].plot(epochs, train_box_loss, color=colors[0], label='train_box_loss')axes[0, 1].plot(epochs, train_cls_loss, color=colors[1], label='train_cls_loss')axes[0, 2].plot(epochs, train_dfl_loss, color=colors[2], label='train_dfl_loss')# Plot the validation lossesaxes[1, 0].plot(epochs, val_box_loss, color=colors[3], label='val_box_loss')axes[1, 1].plot(epochs, val_cls_loss, color=colors[4], label='val_cls_loss')axes[1, 2].plot(epochs, val_dfl_loss, color=colors[5], label='val_dfl_loss')# Set labels and titles for each plotaxes[0, 0].set_title('Train Box Loss')axes[0, 1].set_title('Train CLS Loss')axes[0, 2].set_title('Train DFL Loss')axes[1, 0].set_title('Validation Box Loss')axes[1, 1].set_title('Validation CLS Loss')axes[1, 2].set_title('Validation DFL Loss')# Set common x and y labelsfor ax in axes.flat:ax.set_xlabel('Epoch')ax.set_ylabel('Loss')ax.legend()# Adjust layout to prevent overlapplt.tight_layout()plt.savefig("./result.jpg")# Show the plotplt.show()

遇到问题👇

问题1-缺失字体

查看对应的绘制图时,少了字体,对应解决方法就是下载字体文件到指定目录中。

  1. 到该链接下载字体
  2. 寻找matplotlib的路径:/root/miniconda3/envs/yolo/lib/python3.10/site-packages/matplotlib/mpl-data/fonts/ttf
  3. 删除缓存路径,打印该路径后进入该路径rm *。
import matplotlib as mpl
print(mpl.get_cachedir())

问题2-inf值识别&处理

遇到的问题,比如inf需要识别。

Q:为什么会出现inf值?👇
A:因为在有数据的时候除0了,数值写入会将值写为inf。ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

Q:判断某一列中是否存在inf值?👇
A:首先将该列值更改为np数组,然后进行判断。

col_data = pd['col_name'].astype(float).values
if np.inf in col_data:print("np.inf存在")

Q:inf值怎么处理?👇
A:首先替换inf为nan值==》df['col_name'][np.isinf(df['col_name'])] = np.nan
将nan值替换为需要的值,我选用的是和前后一致。data = data.fillna(method="backfill",axis=0,inplace = False).astype(float).values


参考文献

  • 字体缺失👇
    • https://blog.csdn.net/weixin_40566713/article/details/137275377
  • inf值处理👇
    • https://blog.csdn.net/sinat_26811377/article/details/103126133
    • https://blog.csdn.net/yangnianxiang/article/details/121769037
    • https://blog.csdn.net/sinat_28442665/article/details/104901143
    • https://blog.csdn.net/qq_35190319/article/details/89280372
http://www.lryc.cn/news/502320.html

相关文章:

  • python 调Qt C++ 写法配置和坑点
  • css设置透明的几种办法
  • 刷题日志【4】
  • 如何制作自己的字体文件.ttf
  • gradle在IDEA 中无法使用的启动守护线程的问题
  • Spring Boot 配置多数据源并手动配置事务
  • YashanDB 23.2 YAC 共享集群部署和使用自带YMP迁移工具进行数据迁移,效果很city
  • 【数学】矩阵的逆与伪逆 EEGLAB
  • 狐猬编程 C++ L3 第7课 字符串入门 元音字母
  • APP UI自动化测试的思路小结
  • 2412d,d的7月会议
  • ANOMALY BERT 解读
  • 定时/延时任务-Netty时间轮源码分析
  • React的一些主要优点是?
  • RabbitMQ 基本使用方法详解
  • [leetcode100] 101. 对称二叉树
  • Vue.createApp的对象参数
  • 短信验证码burp姿势
  • ubuntu WPS安装
  • 中粮凤凰里共有产权看房记
  • 学习笔记068——Hibernate框架介绍以及使用方法
  • Maven 安装配置(详细教程)
  • 虚幻开发中的MYPROJECTFORPLUG_API
  • 顺序栈及其实现过程
  • 内圆弧转子泵绘制工具开发
  • linux网络编程 | c | 多进程并发服务器实现
  • Vins_Fusion_gpu中source setup.bash
  • 怎么理解大模型推理时的Top_P参数?
  • hive+hadoop架构数仓使用问题记录
  • 前端的 Python 入门指南(三):数据类型对比 - 彻底的一切皆对象实现和包装对象异同