csv文件绘制对比图map0.5、map50-90、precision(B)、recall(B)

使用第一个,其他有问题、忽略。

1.3

import os
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import numpy as np

# 指定的文件夹路径
output_folder = 'runs/train_v8_mtYAWDDceshi/loss/dbt/1'
# 读取文件
file_paths = [
    'runs/train_v8_YD/v8n.csv',
    'runs/train_v8_mtYAWDDceshi/loss/v8n-DIOU.csv',
    'runs/train_v8_mtYAWDDceshi/loss/v8n-EIoU.csv',
    'runs/train_v8_mtYAWDDceshi/loss/v8n-SIoU.csv',
    'runs/train_v8_mtYAWDDceshi/loss/v8n-FocalLoss.csv',
    'runs/train_v8_mtYAWDDceshi/loss/v8n-ShapeIoU.csv'
]

# 加载数据并清理列名
dataframes = [pd.read_csv(file_path) for file_path in file_paths]
for df in dataframes:
    df.columns = df.columns.str.strip()

# 尝试的字体文件路径列表
font_paths = [
    '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf',
    '/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf',
    'C:\\Windows\\Fonts\\msyh.ttc',  # 微软雅黑字体,Windows 系统
    'C:\\Windows\\Fonts\\simsun.ttc'  # 黑体字体,Windows 系统
]

# 找到可用的字体文件路径
for path in font_paths:
    if os.path.exists(path):
        font_path = path
        break
else:
    raise FileNotFoundError("未找到支持中文的字体文件,请指定一个存在的字体文件路径。")

# 指定找到的字体
font = FontProperties(fname=font_path)
# 输出找到的字体
print("找到的字体文件路径:", font_path) 

# 更新绘图函数,加入颜色、大小、粗细的自定义功能,以及保存到指定文件夹的功能
def plot_comparison_final(dataframes, metric, title, folder, filename, colors=None, linewidths=None, linestyles=None):
    # 如果文件夹不存在,则创建文件夹
    if not os.path.exists(folder):
        os.makedirs(folder)

    plt.figure(figsize=(10, 6))
    for i, df in enumerate(dataframes):
        file_name_without_extension = file_paths[i].split('/')[-1].split('.')[0]
        color = colors[i] if colors else None
        linewidth = linewidths[i] if linewidths else None
        linestyle = linestyles[i] if linestyles else None
        plt.plot(df['epoch'], df[metric], label=file_name_without_extension, color=color, linewidth=linewidth,
                 linestyle=linestyle)

    plt.title(title, fontproperties=font)
    # plt.xlabel('Epoch', fontproperties=font)
    plt.xlabel('训练轮次',
        # {'Epoch': '训练轮次'}[metric],
               fontproperties=font)   # 更新X轴标签
    plt.ylabel({
                    'metrics/precision(B)': '精准率P',
                    'metrics/recall(B)': '召回率R',
                    'metrics/mAP50(B)': '平均值P精度map',
                    'metrics/mAP50-95(B)': '精度map95',
                    'val/loss_SUM': '损失函数值loss'
               }[metric], fontproperties=font)  # 更新y轴标签
    plt.legend(prop=font)
    plt.grid(True)
    plt.savefig(os.path.join(folder, filename))
    plt.show()


# 自定义颜色、大小、粗细
colors = ['black', 'r', 'g', 'b', (1, 0.63, 0.51), 'purple']  # 黑色、红色、绿色、蓝色  #(1, 0.87, 0.71) 222/255=0.87
linewidths = [1, 1, 1, 1, 1, 1]  # 线宽
# 一
# linestyles = [':','-', '--', '-.', (1, (3, 1, 1, 1)), (0, (3, 5, 1, 5))]  # :dotted点线、-实线solid、--虚线dashed、-.点划线dashdot、
'''(0, (3, 5, 1, 5)):
第一个元素0通常表示一个连续的线条,但是在这个上下文中,它可能被忽略或者不被正确使用。
第二个元素3是虚线的长度。
第三个元素5是虚线之间的间隙长度。
第四个元素1是下一个虚线的长度。
第五个元素5是下一个间隙的长度。
这意味着线条将由三个点的实线和接下来的五个点的空白组成,然后是一个点的实线和接下来的五个点的空白,以此类推。'''

# #  二
linestyles = [':', '-', '--', '-.', '-', '-']  # 使用实线作为基础线型
markers = ['+', '*', '+', '*', '++++', '*****']  # 使用标记来模拟特殊效果

# 绘制对比图并保存到指定文件夹
plot_comparison_final(dataframes, 'metrics/precision(B)', '', output_folder, 'precision_comparison.png',
                      colors, linewidths, linestyles
                      +markers
                      )
plot_comparison_final(dataframes, 'metrics/recall(B)', '', output_folder, 'recall_comparison.png', colors,
                      linewidths, linestyles
                      +markers
                      )
plot_comparison_final(dataframes, 'metrics/mAP50(B)', '', output_folder, 'map50_comparison.png',
                      colors, linewidths, linestyles
                      +markers
                      )
plot_comparison_final(dataframes, 'metrics/mAP50-95(B)', '', output_folder, 'map50_95_comparison.png',
                      colors, linewidths, linestyles
                      # +markers
                      )

# 计算val/loss_SUM =val/box_loss+val/cls_loss+val/dfl_loss 并绘制对比图
for df in dataframes:
    df['val/loss_SUM'] = df['val/box_loss'] + df['val/cls_loss'] + df['val/dfl_loss']
    # df['lr/pg_sum'] = df['lr/pg0']

plot_comparison_final(dataframes, 'val/loss_SUM', '', output_folder, 'loss_sum_comparison.png', colors,
                      linewidths, linestyles
                      # +markers
                      )

1.2

import os
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import numpy as np

# 读取文件
file_paths = [
    'runs/train_v8_YD/v8n.csv',
    'runs/train_v8_mtYAWDDceshi/loss/v8n-DIOU.csv',
    'runs/train_v8_mtYAWDDceshi/loss/v8n-EIoU.csv',
    'runs/train_v8_mtYAWDDceshi/loss/v8n-SIoU.csv',
    'runs/train_v8_mtYAWDDceshi/loss/v8n-FocalLoss.csv',
    'runs/train_v8_mtYAWDDceshi/loss/v8n-ShapeIoU.csv'
]

# 加载数据并清理列名
dataframes = [pd.read_csv(file_path) for file_path in file_paths]
for df in dataframes:
    df.columns = df.columns.str.strip()

# 尝试的字体文件路径列表
font_paths = [
    '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf',
    '/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf',
    'C:\\Windows\\Fonts\\msyh.ttc',  # 微软雅黑字体,Windows 系统
    'C:\\Windows\\Fonts\\simsun.ttc'  # 黑体字体,Windows 系统
]

# 找到可用的字体文件路径
for path in font_paths:
    if os.path.exists(path):
        font_path = path
        break
else:
    raise FileNotFoundError("未找到支持中文的字体文件,请指定一个存在的字体文件路径。")

# 指定找到的字体
font = FontProperties(fname=font_path)


# 更新绘图函数,加入颜色、大小、粗细的自定义功能,以及保存到指定文件夹的功能
def plot_comparison_final(dataframes, metric, title, folder, filename, colors=None, linewidths=None, linestyles=None):
    # 如果文件夹不存在,则创建文件夹
    if not os.path.exists(folder):
        os.makedirs(folder)

    plt.figure(figsize=(10, 6))
    for i, df in enumerate(dataframes):
        file_name_without_extension = file_paths[i].split('/')[-1].split('.')[0]
        color = colors[i] if colors else None
        linewidth = linewidths[i] if linewidths else None
        linestyle = linestyles[i] if linestyles else None
        plt.plot(df['epoch'], df[metric], label=file_name_without_extension, color=color, linewidth=linewidth,
                 linestyle=linestyle)

    plt.title(title, fontproperties=font)
    plt.xlabel('Epoch', fontproperties=font)
    plt.ylabel({
                    'metrics/precision(B)': '精准率P',
                    'metrics/recall(B)': '召回率R',
                    'metrics/mAP50(B)': '平均值P精度map',
                    'metrics/mAP50-95(B)': '精度map95',
                    'lr/pg_sum': '损失函数值loss'
               }[metric], fontproperties=font)  # 更新y轴标签
    plt.legend(prop=font)
    plt.grid(True)
    plt.savefig(os.path.join(folder, filename))
    plt.show()


# 自定义颜色、大小、粗细
colors = ['black', 'r', 'g', 'b', (255, 218, 185), 'purple']  # 黑色、红色、绿色、蓝色
linewidths = [2, 2, 2, 2, 1, 1]  # 线宽
# 一
linestyles = [':','-', '--', '-.', (0, (3, 1, 1, 1)), (0, (3, 5, 1, 5))]  # :dotted点线、-实线solid、--虚线dashed、-.点划线dashdot、
'''(0, (3, 5, 1, 5)):
第一个元素0通常表示一个连续的线条,但是在这个上下文中,它可能被忽略或者不被正确使用。
第二个元素3是虚线的长度。
第三个元素5是虚线之间的间隙长度。
第四个元素1是下一个虚线的长度。
第五个元素5是下一个间隙的长度。
这意味着线条将由三个点的实线和接下来的五个点的空白组成,然后是一个点的实线和接下来的五个点的空白,以此类推。'''
'''
#  二
linestyles = [':', '-', '--', '-.', '-', '-']  # 使用实线作为基础线型
markers = ['', '+', '*', '', '', '']  # 使用标记来模拟特殊效果
'''


# 指定的文件夹路径
output_folder = 'runs/train_v8_mtYAWDDceshi/loss/dbt/2'

# 绘制对比图并保存到指定文件夹
plot_comparison_final(dataframes, 'metrics/precision(B)', 'Precision(B) 对比图', output_folder, 'precision_comparison.png',
                      colors, linewidths, linestyles)
plot_comparison_final(dataframes, 'metrics/recall(B)', 'Recall(B)对比图', output_folder, 'recall_comparison.png', colors,
                      linewidths, linestyles)
plot_comparison_final(dataframes, 'metrics/mAP50(B)', 'mAP50', output_folder, 'map50_comparison.png',
                      colors, linewidths, linestyles)
plot_comparison_final(dataframes, 'metrics/mAP50-95(B)', '', output_folder, 'map50_95_comparison.png',
                      colors, linewidths, linestyles)

# 计算 pg0+pg1+pg2 并绘制对比图
for df in dataframes:
    df['lr/pg_sum'] = df['lr/pg0'] + df['lr/pg1'] + df['lr/pg2']
    # df['lr/pg_sum'] = df['lr/pg0']

plot_comparison_final(dataframes, 'lr/pg_sum', '', output_folder, 'pg_sum_comparison.png', colors,
                      linewidths, linestyles)

1.1

import os
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
import numpy as np

# 读取文件
file_paths = [
    'runs/train_v8_YD/v8n.csv',
    'runs/train_v8_YD/v8n2.csv',
    'runs/train_v8_YD/v8n-C2f-CloAtt.csv',
    'runs/train_v8_YD/v8n-LSCD.csv'
]

# 加载数据并清理列名
dataframes = [pd.read_csv(file_path) for file_path in file_paths]
for df in dataframes:
    df.columns = df.columns.str.strip()

# 尝试的字体文件路径列表
font_paths = [
    '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf',
    '/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf',
    'C:\\Windows\\Fonts\\msyh.ttc',  # 微软雅黑字体,Windows 系统
    'C:\\Windows\\Fonts\\simsun.ttc'  # 黑体字体,Windows 系统
]

# 找到可用的字体文件路径
for path in font_paths:
    if os.path.exists(path):
        font_path = path
        break
else:
    raise FileNotFoundError("未找到支持中文的字体文件,请指定一个存在的字体文件路径。")

# 指定找到的字体
font = FontProperties(fname=font_path)


# 更新绘图函数,加入颜色、大小、粗细的自定义功能,以及保存到指定文件夹的功能
def plot_comparison_final(dataframes, metric, title, folder, filename, colors=None, linewidths=None, linestyles=None):
    # 如果文件夹不存在,则创建文件夹
    if not os.path.exists(folder):
        os.makedirs(folder)

    plt.figure(figsize=(10, 6))
    for i, df in enumerate(dataframes):
        file_name_without_extension = file_paths[i].split('/')[-1].split('.')[0]
        color = colors[i] if colors else None
        linewidth = linewidths[i] if linewidths else None
        linestyle = linestyles[i] if linestyles else None
        plt.plot(df['epoch'], df[metric], label=file_name_without_extension, color=color, linewidth=linewidth,
                 linestyle=linestyle)

    plt.title(title, fontproperties=font)
    plt.xlabel('Epoch', fontproperties=font)
    plt.ylabel({
                    'metrics/precision(B)': '精准率P',
                    'metrics/recall(B)': '召回率R',
                    'metrics/mAP50(B)': '平均值P精度map',
                    'metrics/mAP50-95(B)': '精度map95',
                    'lr/pg_sum': '损失函数值loss'
               }[metric], fontproperties=font)  # 更新y轴标签
    plt.legend(prop=font)
    plt.grid(True)
    plt.savefig(os.path.join(folder, filename))
    plt.show()


# 自定义颜色、大小、粗细
colors = ['black', 'r', 'g', 'b']  # 黑色、红色、绿色、蓝色
linewidths = [2, 2, 2, 2]  # 线宽
linestyles = [':','-', '--', '-.']  # +-、实线、虚线、点划线

# 指定的文件夹路径
output_folder = 'runs/train_v8_YD/dbt'

# 绘制对比图并保存到指定文件夹
plot_comparison_final(dataframes, 'metrics/precision(B)', 'Precision(B) 对比图', output_folder, 'precision_comparison.png',
                      colors, linewidths, linestyles)
plot_comparison_final(dataframes, 'metrics/recall(B)', 'Recall(B)对比图', output_folder, 'recall_comparison.png', colors,
                      linewidths, linestyles)
plot_comparison_final(dataframes, 'metrics/mAP50(B)', 'mAP50', output_folder, 'map50_comparison.png',
                      colors, linewidths, linestyles)
plot_comparison_final(dataframes, 'metrics/mAP50-95(B)', '', output_folder, 'map50_95_comparison.png',
                      colors, linewidths, linestyles)

# 计算 pg0+pg1+pg2 并绘制对比图
for df in dataframes:
    df['lr/pg_sum'] = df['lr/pg0'] + df['lr/pg1'] + df['lr/pg2']
    # df['lr/pg_sum'] = df['lr/pg0']


plot_comparison_final(dataframes, 'lr/pg_sum', '', output_folder, 'pg_sum_comparison.png', colors,
                      linewidths, linestyles)

四、三无法显示中文

使用了 FontProperties 来指定一个支持中文的字体。这样应该可以解决汉字无法正确显示的问题。您可以根据需要调整其他参数来自定义图表的外观和保存位置

import os
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# 读取文件
file_paths = [
    '/mnt/data/v8n.csv',
    '/mnt/data/v8n2.csv',
    '/mnt/data/v8n-C2f-CloAtt.csv'
]

# 加载数据并清理列名
dataframes = [pd.read_csv(file_path) for file_path in file_paths]
for df in dataframes:
    df.columns = df.columns.str.strip()

# 尝试的字体文件路径列表
font_paths = [
    '/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf',
    '/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf',
    'C:\\Windows\\Fonts\\msyh.ttc',  # 微软雅黑字体,Windows 系统
    'C:\\Windows\\Fonts\\simsun.ttc'  # 黑体字体,Windows 系统
]

# 找到可用的字体文件路径
for path in font_paths:
    if os.path.exists(path):
        font_path = path
        break
else:
    raise FileNotFoundError("未找到支持中文的字体文件,请指定一个存在的字体文件路径。")

# 指定找到的字体
font = FontProperties(fname=font_path)
# 指定支持中文的字体
# font = FontProperties(fname='/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf')

# 更新绘图函数,加入颜色、大小、粗细的自定义功能,以及保存到指定文件夹的功能
def plot_comparison_final(dataframes, metric, title, folder, filename, colors=None, linewidths=None, linestyles=None):
    # 如果文件夹不存在,则创建文件夹
    if not os.path.exists(folder):
        os.makedirs(folder)
    
    plt.figure(figsize=(10, 6))
    for i, df in enumerate(dataframes):
        file_name_without_extension = file_paths[i].split('/')[-1].split('.')[0]
        color = colors[i] if colors else None
        linewidth = linewidths[i] if linewidths else None
        linestyle = linestyles[i] if linestyles else None
        plt.plot(df['epoch'], df[metric], label=file_name_without_extension, color=color, linewidth=linewidth, linestyle=linestyle)
    
    plt.title(title, fontproperties=font)
    plt.xlabel('Epoch', fontproperties=font)
    plt.ylabel({
        'metrics/precision(B)': '精准率P',
        'metrics/recall(B)': '召回率R',
        'metrics/mAP50-95(B)': '精度map',
        'lr/pg_sum': '损失函数值loss'
    }[metric], fontproperties=font)  # 更新y轴标签
    plt.legend(prop=font)
    plt.grid(True)
    plt.savefig(os.path.join(folder, filename))
    plt.show()

# 自定义颜色、大小、粗细
colors = ['r', 'g', 'b']  # 红色、绿色、蓝色
linewidths = [2, 2, 2]    # 线宽
linestyles = ['-', '--', '-.']  # 实线、虚线、点划线

# 指定的文件夹路径
output_folder = '/mnt/data/comparison_charts'

# 绘制对比图并保存到指定文件夹
plot_comparison_final(dataframes, 'metrics/precision(B)', 'Precision(B) 对比图', output_folder, 'precision_comparison.png', colors, linewidths, linestyles)
plot_comparison_final(dataframes, 'metrics/recall(B)', 'Recall(B) 对比图', output_folder, 'recall_comparison.png', colors, linewidths, linestyles)
plot_comparison_final(dataframes, 'metrics/mAP50-95(B)', 'mAP50-95(B) 对比图', output_folder, 'map50_95_comparison.png', colors, linewidths, linestyles)

# 计算 pg0+pg1+pg2 并绘制对比图
for df in dataframes:
    df['lr/pg_sum'] = df['lr/pg0'] + df['lr/pg1'] + df['lr/pg2']

plot_comparison_final(dataframes, 'lr/pg_sum', 'pg0+pg1+pg2 对比图', output_folder, 'pg_sum_comparison.png', colors, linewidths, linestyles)

二、这个代码包括了自定义线条颜色、大小、粗细的功能,以及将图表保存到指定文件夹的功能

import pandas as pd
import matplotlib.pyplot as plt
import os
# 读取文件
file_paths = [
    'runs/train_v8_YD/v8n.csv',
    'runs/train_v8_YD/v8n2.csv',
    'runs/train_v8_YD/v8n-C2f-CloAtt.csv'
]

# 加载数据并清理列名
dataframes = [pd.read_csv(file_path) for file_path in file_paths]
for df in dataframes:
    df.columns = df.columns.str.strip()
# 更新绘图函数,加入保存到指定文件夹的功能
def plot_comparison_save_to_folder(dataframes, metric, title, folder, filename, colors=None, linewidths=None, linestyles=None):
    # 如果文件夹不存在,则创建文件夹
    if not os.path.exists(folder):
        os.makedirs(folder)
# 更新绘图函数,加入颜色、大小、粗细的自定义功能
def plot_comparison_customized(dataframes, metric, title, filename, colors=None, linewidths=None, linestyles=None):
    plt.figure(figsize=(10, 6))
    for i, df in enumerate(dataframes):
        file_name_without_extension = file_paths[i].split('/')[-1].split('.')[0]
        color = colors[i] if colors else None
        linewidth = linewidths[i] if linewidths else None
        linestyle = linestyles[i] if linestyles else None
        plt.plot(df['epoch'], df[metric], label=file_name_without_extension, color=color, linewidth=linewidth, linestyle=linestyle)
    
    plt.title(title)
    plt.xlabel('Epoch')
    plt.ylabel(metric)
    plt.legend()
    plt.grid(True)
    plt.savefig(filename)
    plt.show()

# 自定义颜色、大小、粗细
colors = ['r', 'g', 'b']  # 红色、绿色、蓝色
linewidths = [2, 2, 2]    # 线宽
linestyles = ['-', '--', '-.']  # 实线、虚线、点划线

# 绘制对比图metrics/mAP50(B)
plot_comparison_customized(dataframes, 'metrics/precision(B)', 'Precision', 'runs/train_v8_YD/dbt/precision_comparison_customized.png', colors, linewidths, linestyles)
plot_comparison_customized(dataframes, 'metrics/recall(B)', 'Recall', 'runs/train_v8_YD/dbt/recall_comparison_customized.png', colors, linewidths, linestyles)
plot_comparison_customized(dataframes, 'metrics/mAP50(B)', 'mAP50', 'runs/train_v8_YD/dbt/map50_comparison_customized.png', colors, linewidths, linestyles)
plot_comparison_customized(dataframes, 'metrics/mAP50-95(B)', 'mAP50-95', 'runs/train_v8_YD/dbt/map50-95_comparison_customized.png', colors, linewidths, linestyles)

# 计算 pg0+pg1+pg2 并绘制对比图
for df in dataframes:
    df['lr/pg_sum'] = df['lr/pg0'] + df['lr/pg1'] + df['lr/pg2']

plot_comparison_customized(dataframes, 'lr/pg_sum', 'Loss', 'runs/train_v8_YD/dbt/pg_sum_comparison_customized.png', colors, linewidths, linestyles)

三:Y轴错误

此外,我还更新了y轴标签为 A、B、C 和 D

y坐标轴标签更新错误,坐标轴标签中使用A表示metrics/precision(B),使用B表示metrics/recall(B)、使用C表示metrics/mAP50-95(B)、使用D表示lr/pg_sum

简约:

更新y轴标签。对于每个指标,我们将使用以下标签:

  • metrics/precision(B) 对应 精准率P
  • metrics/recall(B) 对应 召回率R
  • metrics/mAP50-95(B) 对应 C
  • lr/pg_sum 对应 D
import os
import pandas as pd
import matplotlib.pyplot as plt

# 读取文件
file_paths = [
    '/mnt/data/v8n.csv',
    '/mnt/data/v8n2.csv',
    '/mnt/data/v8n-C2f-CloAtt.csv'
]

# 加载数据并清理列名
dataframes = [pd.read_csv(file_path) for file_path in file_paths]
for df in dataframes:
    df.columns = df.columns.str.strip()

# 更新绘图函数,加入颜色、大小、粗细的自定义功能,以及保存到指定文件夹的功能
def plot_comparison_final(dataframes, metric, title, folder, filename, colors=None, linewidths=None, linestyles=None):
    # 如果文件夹不存在,则创建文件夹
    if not os.path.exists(folder):
        os.makedirs(folder)
    
    plt.figure(figsize=(10, 6))
    for i, df in enumerate(dataframes):
        file_name_without_extension = file_paths[i].split('/')[-1].split('.')[0]
        color = colors[i] if colors else None
        linewidth = linewidths[i] if linewidths else None
        linestyle = linestyles[i] if linestyles else None
        plt.plot(df['epoch'], df[metric], label=file_name_without_extension, color=color, linewidth=linewidth, linestyle=linestyle)
    
    plt.title(title)
    plt.xlabel('Epoch')
    plt.ylabel({
        'metrics/precision(B)': '精准率P',
        'metrics/recall(B)': '召回率R',
        'metrics/mAP50-95(B)': '精度map',
        'lr/pg_sum': '损失函数值loss'
    }[metric])  # 更新y轴标签
    plt.legend()
    plt.grid(True)
    plt.savefig(os.path.join(folder, filename))
    plt.show()

# 自定义颜色、大小、粗细
colors = ['r', 'g', 'b']  # 红色、绿色、蓝色
linewidths = [2, 2, 2]    # 线宽
linestyles = ['-', '--', '-.']  # 实线、虚线、点划线

# 指定的文件夹路径
output_folder = '/mnt/data/comparison_charts'

# 绘制对比图并保存到指定文件夹
plot_comparison_final(dataframes, 'metrics/precision(B)', 'Precision(B) 对比图', output_folder, 'precision_comparison.png', colors, linewidths, linestyles)
plot_comparison_final(dataframes, 'metrics/recall(B)', 'Recall(B) 对比图', output_folder, 'recall_comparison.png', colors, linewidths, linestyles)
plot_comparison_final(dataframes, 'metrics/mAP50-95(B)', 'mAP50-95(B) 对比图', output_folder, 'map50_95_comparison.png', colors, linewidths, linestyles)

# 计算 pg0+pg1+pg2 并绘制对比图
for df in dataframes:
    df['lr/pg_sum'] = df['lr/pg0'] + df['lr/pg1'] + df['lr/pg2']

plot_comparison_final(dataframes, 'lr/pg_sum', 'pg0+pg1+pg2 对比图', output_folder, 'pg_sum_comparison.png', colors, linewidths, linestyles)

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值