视觉论文常用图形----雷达图

代码:

复制代码
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

# 中文字体设置
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

# 原始数据
data = [
    {'模型': 'YOLOv3',    'P': 91.4, 'R': 84.3, 'mAP50': 91.6,  'Params': 103.665},
    {'模型': 'YOLOv5',    'P': 89.0, 'R': 83.3, 'mAP50': 91.4,  'Params': 2.503},
    {'模型': 'YOLOv6',    'P': 85.8, 'R': 88.8, 'mAP50': 91.7,  'Params': 4.233},
    {'模型': 'YOLOv8',    'P': 87.3, 'R': 85.5, 'mAP50': 92.4,  'Params': 3.006},
    {'模型': 'YOLOv9s',   'P': 89.9, 'R': 83.5, 'mAP50': 91.4,  'Params': 7.167},
    {'模型': 'YOLOv10n',  'P': 89.7, 'R': 81.3, 'mAP50': 90.1,  'Params': 2.695},
    {'模型': 'RT-DETR-I', 'P': 87.0, 'R': 84.8, 'mAP50': 90.8,  'Params': 31.987},
    {'模型': 'YOLO12', 'P': 90.9, 'R': 81.1, 'mAP50': 92.2,  'Params': 2.557},
    {'模型': 'YOLO11-DL', 'P': 91.6, 'R': 87.7, 'mAP50': 94.4,  'Params': 3.140},

]

# 数据处理
params = [d['Params'] for d in data]
min_p, max_p = min(params), max(params)
scaled_params = [100 * (max_p - p) / (max_p - min_p) for p in params]  # 参数效率计算

categories = ['P', 'R', 'mAP50', 'Params']
labels = ['精确率(%)', '召回率(%)', 'mAP50(%)', '参数量(M)']

# 构造雷达图数据
angles = np.linspace(0, 2*np.pi, len(categories), endpoint=False).tolist()
values = []
for d in data:
    val = [d['P'], d['R'], d['mAP50'], scaled_params[data.index(d)]] 
    values.append(val + val[:1])  # 闭合多边形
angles += angles[:1]

# 专业配色方案 (9种优化颜色)
colors = [
    '#2E86C1',  # 深蓝
    '#E67E22',  # 橙
    '#27AE60',  # 绿
    '#CB4335',  # 红
    '#8E44AD',  # 紫
    '#16A085',  # 青
    '#F39C12',  # 金
    '#7F8C8D',   # 灰
    '#3498DB'   # 蓝
]

# 创建画布
plt.figure(figsize=(12, 12), dpi=300)
ax = plt.subplot(111, polar=True)

# 绘制每个模型(线宽增加到3)
for i, (model, color) in enumerate(zip(data, colors)):
    ax.plot(angles, values[i], linewidth=3.5, linestyle='-',  # 加粗线条
            label=model['模型'], color=color, alpha=0.9)
    ax.fill(angles, values[i], alpha=0.08, color=color)  # 降低填充透明度

# 坐标轴美化
ax.set_theta_offset(np.pi/2)
ax.set_theta_direction(-1)
ax.set_rlabel_position(0)
plt.xticks(angles[:-1], labels, size=16, color='#2c3e50')
plt.yticks([70, 80, 90, 100], ['70','80','90','100'], size=14, color='#2c3e50')
plt.ylim(70, 105)

# 专业图例设置
legend = plt.legend(
    loc='upper right',
    bbox_to_anchor=(1.28, 1.12),  # 调整图例位置
    prop={'size': 14, 'family': 'SimHei'},
    ncol=1,
    frameon=True,
    framealpha=0.9,
    edgecolor='#bdc3c7',
    facecolor='#ffffff',
    borderpad=1,
    labelspacing=1.5
)

# 设置图例颜色块大小
for handle in legend.legend_handles:
    handle.set_linewidth(4.0)  # 加粗图例线条
    handle.set_alpha(0.9)

# 网格优化
ax.xaxis.grid(True, color='#95a5a6', linestyle='--', linewidth=0.8)
ax.yaxis.grid(True, color='#95a5a6', linestyle='--', linewidth=0.8)

# 标题设置
plt.title('模型性能对比雷达图', 
         size=20, y=1.18, color='#2c3e50', fontweight='bold')

# 保存图像
plt.savefig('YOLO_radar_chart_optimized.png', 
           bbox_inches='tight', 
           dpi=300, 
           facecolor='white')
plt.close()

效果图:

相关推荐
hahaha60162 小时前
黑体轨迹和色温--光源白点
人工智能·嵌入式硬件·算法·计算机视觉
昨日之日20065 小时前
Visual Enhancer:一键让模糊照片视频变清晰,升分辨率、插帧、转HDR,一键搞定素材修复
计算机视觉·音视频
超大青花鱼5 小时前
Ubuntu20.04安装CUDA11.8教程
人工智能·深度学习·计算机视觉
一木 之林6 小时前
《OpenAI库基础学习总结:Client 初始化、流式输出 delta 拼接与多轮历史 messages 全流程拆解》
人工智能·学习·计算机视觉·stable diffusion·aigc
Mark White6 小时前
ICCV 2019【从颜色科学到相机】03_RGB 不等于 sRGB,Gamma、Lab 和“亮度”
计算机视觉
李航198318 小时前
AI定制柜建模,需要详细的建模规范和标准流程
人工智能·python·计算机视觉·ai·ai编程
hahaha601618 小时前
色彩恒常性概述
人工智能·嵌入式硬件·数码相机·计算机视觉
hahaha601620 小时前
Shades-of-Gray (SoG) 算法--白平衡算法
人工智能·嵌入式硬件·算法·计算机视觉
Latchh20 小时前
前端导出的JPEG红字发糊,质量要拉到100才清楚
前端·图像处理·人工智能·计算机视觉
YOLO数据集集合1 天前
红外缺陷检测数据集 | 红外检测 缺陷识别 裂缝检测 渗漏检测 目标检测9145期
人工智能·目标检测·机器学习·计算机视觉·目标跟踪·智慧城市