性能对比实验折线图绘制代码(YOLO系列为例)

本文用于绘制性能折线图,适用于对比实验,发现很多博文都是收费,欺负哥们懒得学习,一气之下ai了一下再进行代码修改,免费供给大家学习参考,便于大家撰写论文数据时利于绘制图像,节约时间。

复制代码
import pandas as pd
import matplotlib.pyplot as plt

# 读取CSV文件,替换成自己的绝对路径
datav12_cdm = pd.read_csv('/mnt/user/qianzhu/YOLO/v12/yolov12-main/results/v12n-cdm/results.csv')
datav12n =  pd.read_csv('/mnt/user/qianzhu/YOLO/v12/yolov12-main/results/v12n/results.csv')
datav11n = pd.read_csv('/mnt/user/qianzhu/YOLO/v12/yolov12-main/results/v11n/results.csv')
datav10n = pd.read_csv('/mnt/user/qianzhu/YOLO/v12/yolov12-main/results/v10n/results.csv')
datav8n = pd.read_csv('/mnt/user/qianzhu/YOLO/v12/yolov12-main/results/v8n/results.csv')
datav6n = pd.read_csv('/mnt/user/qianzhu/YOLO/v12/yolov12-main/results/v6n/results.csv')


# 单独获取每个模型的metrics/mAP50-95(B)列的数据
v12_cdm = datav12_cdm['metrics/mAP50-95(B)']
v12 = datav12n['metrics/mAP50-95(B)']
v11 = datav11n['metrics/mAP50-95(B)']
v10 = datav10n['metrics/mAP50-95(B)']
v8 = datav8n['metrics/mAP50-95(B)']
v6 = datav6n['metrics/mAP50-95(B)']


# 获取epochs列的数据,并从第20个数据开始取值每隔20个epochs取一次;训练的mAP50-95(B也是同理
epochs = datav12_cdm['epoch'][19::20]
v12cdmd = v12_cdm[19::20]
v12d = v12[19::20]
v11d = v11[19::20]
v10d = v10[19::20]
v8d = v8[19::20]
v6d = v6[19::20]


# 绘制折线图,如果需要改动自己去查一下这个plt.plot函数中的参数怎么设置
plt.plot(epochs, v12cdmd, label='YOLOv12n-CDM(our)', marker='o',color='c')
plt.plot(epochs, v12d, label='YOLOv12n', color='green',linestyle='--',alpha=0.8)
plt.plot(epochs, v11d, label='YOLOv11n', color='blue',linestyle='--',alpha=0.8)
plt.plot(epochs, v10d, label='YOLOv10n',color='black',linestyle='--',alpha=0.8)
plt.plot(epochs, v8d, label='YOLOv8n',color='yellow',linestyle='--',alpha=0.8)
plt.plot(epochs, v6d, label='YOLOv6n', color='red',linestyle='--',alpha=0.8)


#设置图标题,x坐标名字,y坐标名字
plt.title('Object Detection')
plt.xlabel('epochs')
plt.ylabel('map50-95(B)')



# 添加图例,在右下角,默认在左上角
plt.legend(loc='lower right')

# 设置网格线
plt.grid(True)

# 保存图像到同目录下,换成自己要保存的名字,也可以使用绝对路径进行存储
plt.savefig('20.png')

最终效果: