【Python】绘图技巧:目标检测领域常见的折线图和散点图
生活随笔
收集整理的這篇文章主要介紹了
【Python】绘图技巧:目标检测领域常见的折线图和散点图
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 直接上圖
- 要點解析
- 折線對比圖
- 散點對比圖
直接上圖
?
要點解析
- 繪圖工具包:matplotlib
- 英文及數(shù)學公式字體格式: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# 數(shù)據(jù)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]# 數(shù)據(jù)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]# 參數(shù)設置 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 # 數(shù)據(jù) 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]# 繪制參數(shù)量標準 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']# 參數(shù)設置 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)# 添加數(shù)學公式標簽 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)# 添加參數(shù)量標準大小 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()總結(jié)
以上是生活随笔為你收集整理的【Python】绘图技巧:目标检测领域常见的折线图和散点图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: WLAN配置二层直连直接转发
- 下一篇: 有哪些令你印象深刻的魔改Transfor