【Python】绘图技巧:目标检测领域常见的折线图和散点图
生活随笔
收集整理的这篇文章主要介绍了
【Python】绘图技巧:目标检测领域常见的折线图和散点图
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
文章目录
- 直接上图
- 要点解析
- 折线对比图
- 散点对比图
直接上图
要点解析
- 绘图工具包:matplotlib
- 英文及数学公式字体格式:Times New Roman
- 中文字体格式:宋体(SimSun)
- 其他的直接看代码吧
折线对比图
import matplotlib.pyplot as plt # 设置字体格式 from matplotlib import rcParams from matplotlib.ticker import MultipleLocatorsize = 14 # 全局字体大小 # 设置英文字体 config = {"font.family": 'serif',"font.size": size,"mathtext.fontset": 'stix',"font.serif": ['Times New Roman'], } rcParams.update(config) # 设置中文宋体 fontcn = {'family': 'SimSun', 'size': size} label_size = size text_size = size# 数据1 baseline_mAP = [36.4, 45.4, 53.9, 57.2, 58.0] baseline_param = [1.79, 7.07, 20.95, 46.2, 86.2]# 数据2 my_mAP = [39.9, 50.6, 56.2, 58.9, 59.8] my_param = [1.55, 6.09, 18.8, 42.7, 81.1]# 参数设置 lw = 2 ms = 8 my_text = ['N', 'S', 'M', 'L', 'X'] # 绘制 mAP-Param plt.figure(figsize=(6.4, 4.8)) plt.plot(my_param, my_mAP, label='红色',c='r',lw=lw,marker='o',markersize=ms,ls='-') plt.plot(baseline_param, baseline_mAP, label='蓝色',c='b',lw=lw,marker='*',markersize=ms,ls='--') plt.legend(loc='lower right', prop=fontcn) plt.ylabel('$M_\mathrm{mAP}$ (%)', fontsize=label_size) plt.xlabel('$N_\mathrm{Param}$ (M)', fontsize=label_size) # 设置坐标轴间隔 x_major_locator = MultipleLocator(10) y_major_locator = MultipleLocator(3.5) ax = plt.gca() ax.xaxis.set_major_locator(x_major_locator) ax.yaxis.set_major_locator(y_major_locator) plt.xlim([-3, 90]) plt.ylim([35, 62]) plt.text(my_param[0] - 3.5, my_mAP[0] + 0.8, my_text[0], color="k", fontsize=text_size) plt.text(my_param[1] - 2, my_mAP[1] + 0.8, my_text[1], color="k", fontsize=text_size) plt.text(my_param[2] - 2, my_mAP[2] + 0.8, my_text[2], color="k", fontsize=text_size) plt.text(my_param[3] - 3, my_mAP[3] + 1.0, my_text[3], color="k", fontsize=text_size) plt.text(my_param[4] - 2, my_mAP[4] + 0.8, my_text[4], color="k", fontsize=text_size) plt.grid(linestyle='--') plt.show()
散点对比图
import matplotlib.pyplot as plt # 设置字体格式 from matplotlib import rcParams import matplotlib.patches as patchessize = 12 # 全局字体大小 # 设置英文字体 config = {"font.family": 'serif',"font.size": size,"mathtext.fontset": 'stix',"font.serif": ['Times New Roman'], } rcParams.update(config) # 设置中文宋体 fontcn = {'family': 'SimSun', 'size': size} label_size = size text_size = size # 数据 mAP = [36.9, 41.6, 38.5, 41.9, 45.9, 43.5, 45.4, 50.6] param = [9.36, 9.62, 27.2, 41.2, 69.0, 36.5, 7.07, 6.09] param2 = [i * 30 for i in param] FPS = [169.5, 61.0, 43.3, 9.5, 3.7, 15.0, 82.0, 53.8]# 绘制参数量标准 param_legend = [5, 15, 30, 50, 70] param_legend = [i * 30 for i in param_legend] param_x = [-10, 2.3, 20, 43, 71] param_y = [32.5, 32.5, 32.5, 32.5, 32.5] param_color = [(0.45, 0.45, 0.45)] * 5 param_text = ['5M', '15M', '30M', '50M', '70M']# 参数设置 lw = 2 ms = 15 my_text = ['Demo1', 'Demo2', 'Demo3','Demo4', 'Demo5', 'Demo6', '蓝色', '红色'] my_text2 = '-S' color = ['C8', 'C1', 'C0', 'C6', 'C4', 'C9', 'b', 'r']# 绘制 mAP-Param plt.figure() plt.scatter(FPS, mAP, s=param2, color=color, alpha=0.6) plt.scatter(param_x, param_y, s=param_legend, color=param_color, alpha=0.2)# 绘制矩形框 ax = plt.gca() rect = patches.Rectangle(xy=(-16, 30.3), width=103, height=5.8,linewidth=0.5, linestyle='-', fill=False, edgecolor='gray') ax.add_patch(rect)# 添加数学公式标签 plt.ylabel('$M_\mathrm{mAP}$ (%)', fontsize=label_size) plt.xlabel('$N_\mathrm{FPS}$ (Frame/s)', fontsize=label_size) plt.xlim([-20, 200]) plt.ylim([30, 52.5])# 添加方法名 plt.text(FPS[0] - 9, mAP[0] + 0.9, my_text[0], color="k", fontsize=text_size) plt.text(FPS[1] - 10, mAP[1] + 0.8, my_text[1], color="k", fontsize=text_size) plt.text(FPS[2] - 11, mAP[2] + 1.4, my_text[2], color="k", fontsize=text_size) plt.text(FPS[3] - 11, mAP[3] - 2.2, my_text[3], color="k", fontsize=text_size) plt.text(FPS[4] - 11, mAP[4] + 2, my_text[4], color="k", fontsize=text_size) plt.text(FPS[5] - 6, mAP[5] + 1.5, my_text[5], color="k", fontsize=text_size)plt.text(FPS[6] - 9, mAP[6] + 0.8, my_text[6], color="k", fontdict=fontcn) plt.text(FPS[6] + 4.5, mAP[6] + 0.8, my_text2, color="k", fontsize=text_size)plt.text(FPS[7] - 9, mAP[7] + 0.8, my_text[7], color="k", fontdict=fontcn) plt.text(FPS[7] + 4.5, mAP[7] + 0.8, my_text2, color="k", fontsize=text_size)# 添加参数量标准大小 plt.text(param_x[0] - 5, 35, param_text[0], color="k", fontsize=text_size) plt.text(param_x[1] - 6, 35, param_text[1], color="k", fontsize=text_size) plt.text(param_x[2] - 7, 35, param_text[2], color="k", fontsize=text_size) plt.text(param_x[3] - 7, 35, param_text[3], color="k", fontsize=text_size) plt.text(param_x[4] - 7, 35, param_text[4], color="k", fontsize=text_size) plt.grid(linestyle='--') plt.show()总结
以上是生活随笔为你收集整理的【Python】绘图技巧:目标检测领域常见的折线图和散点图的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: WLAN配置二层直连直接转发
- 下一篇: 摸鱼神器——python命令行小说阅读器