matplotlib绘制折线图和散点图用于展示模型优化效果

46 篇文章 3 订阅
32 篇文章 0 订阅

声明非本人所写,原创链接:【Python】绘图技巧:目标检测领域常见的折线图和散点图_嗜睡的篠龙的博客-CSDN博客

        偶然看到这个博客,感觉这个绘图效果不错,曾经论文中因不知道怎么画出好看的图而苦恼,matplotlib看起来效果还是不错的。

散点图


   
   
  1. import matplotlib.pyplot as plt
  2. # 设置字体格式
  3. from matplotlib import rcParams
  4. import matplotlib.patches as patches
  5. size = 12 # 全局字体大小
  6. # 设置英文字体
  7. config = {
  8. "font.family": 'serif',
  9. "font.size": size,
  10. "mathtext.fontset": 'stix',
  11. "font.serif": [ 'Times New Roman'],
  12. }
  13. rcParams.update(config)
  14. # 设置中文宋体
  15. fontcn = { 'family': 'SimSun', 'size': size}
  16. label_size = size
  17. text_size = size
  18. # 数据
  19. mAP = [ 36.9, 41.6, 38.5, 41.9, 45.9, 43.5, 45.4, 50.6]
  20. param = [ 9.36, 9.62, 27.2, 41.2, 69.0, 36.5, 7.07, 6.09]
  21. param2 = [i * 30 for i in param]
  22. FPS = [ 169.5, 61.0, 43.3, 9.5, 3.7, 15.0, 82.0, 53.8]
  23. # 绘制参数量标准
  24. param_legend = [ 5, 15, 30, 50, 70]
  25. param_legend = [i * 30 for i in param_legend]
  26. param_x = [- 10, 2.3, 20, 43, 71]
  27. param_y = [ 32.5, 32.5, 32.5, 32.5, 32.5]
  28. param_color = [( 0.45, 0.45, 0.45)] * 5
  29. param_text = [ '5M', '15M', '30M', '50M', '70M']
  30. # 参数设置
  31. lw = 2
  32. ms = 15
  33. my_text = [ 'Demo1', 'Demo2', 'Demo3',
  34. 'Demo4', 'Demo5', 'Demo6', '蓝色', '红色']
  35. my_text2 = '-S'
  36. color = [ 'C8', 'C1', 'C0', 'C6', 'C4', 'C9', 'b', 'r']
  37. # 绘制 mAP-Param
  38. plt.figure()
  39. plt.scatter(FPS, mAP, s=param2, color=color, alpha= 0.6)
  40. plt.scatter(param_x, param_y, s=param_legend, color=param_color, alpha= 0.2)
  41. # 绘制矩形框
  42. ax = plt.gca()
  43. rect = patches.Rectangle(xy=(- 16, 30.3), width= 103, height= 5.8,
  44. linewidth= 0.5, linestyle= '-', fill= False, edgecolor= 'gray')
  45. ax.add_patch(rect)
  46. # 添加数学公式标签
  47. plt.ylabel( '$M_\mathrm{mAP}$ (%)', fontsize=label_size)
  48. plt.xlabel( '$N_\mathrm{FPS}$ (Frame/s)', fontsize=label_size)
  49. plt.xlim([- 20, 200])
  50. plt.ylim([ 30, 52.5])
  51. # 添加方法名
  52. plt.text(FPS[ 0] - 9, mAP[ 0] + 0.9, my_text[ 0], color= "k", fontsize=text_size)
  53. plt.text(FPS[ 1] - 10, mAP[ 1] + 0.8, my_text[ 1], color= "k", fontsize=text_size)
  54. plt.text(FPS[ 2] - 11, mAP[ 2] + 1.4, my_text[ 2], color= "k", fontsize=text_size)
  55. plt.text(FPS[ 3] - 11, mAP[ 3] - 2.2, my_text[ 3], color= "k", fontsize=text_size)
  56. plt.text(FPS[ 4] - 11, mAP[ 4] + 2, my_text[ 4], color= "k", fontsize=text_size)
  57. plt.text(FPS[ 5] - 6, mAP[ 5] + 1.5, my_text[ 5], color= "k", fontsize=text_size)
  58. plt.text(FPS[ 6] - 9, mAP[ 6] + 0.8, my_text[ 6], color= "k", fontdict=fontcn)
  59. plt.text(FPS[ 6] + 4.5, mAP[ 6] + 0.8, my_text2, color= "k", fontsize=text_size)
  60. plt.text(FPS[ 7] - 9, mAP[ 7] + 0.8, my_text[ 7], color= "k", fontdict=fontcn)
  61. plt.text(FPS[ 7] + 4.5, mAP[ 7] + 0.8, my_text2, color= "k", fontsize=text_size)
  62. # 添加参数量标准大小
  63. plt.text(param_x[ 0] - 5, 35, param_text[ 0], color= "k", fontsize=text_size)
  64. plt.text(param_x[ 1] - 6, 35, param_text[ 1], color= "k", fontsize=text_size)
  65. plt.text(param_x[ 2] - 7, 35, param_text[ 2], color= "k", fontsize=text_size)
  66. plt.text(param_x[ 3] - 7, 35, param_text[ 3], color= "k", fontsize=text_size)
  67. plt.text(param_x[ 4] - 7, 35, param_text[ 4], color= "k", fontsize=text_size)
  68. plt.grid(linestyle= '--')
  69. plt.show()

 

 

折线图


   
   
  1. import matplotlib.pyplot as plt
  2. # 设置字体格式
  3. from matplotlib import rcParams
  4. from matplotlib.ticker import MultipleLocator
  5. size = 14 # 全局字体大小
  6. # 设置英文字体
  7. config = {
  8. "font.family": 'serif',
  9. "font.size": size,
  10. "mathtext.fontset": 'stix',
  11. "font.serif": [ 'Times New Roman'],
  12. }
  13. rcParams.update(config)
  14. # 设置中文宋体
  15. fontcn = { 'family': 'SimSun', 'size': size}
  16. label_size = size
  17. text_size = size
  18. # 数据1
  19. baseline_mAP = [ 36.4, 45.4, 53.9, 57.2, 58.0]
  20. baseline_param = [ 1.79, 7.07, 20.95, 46.2, 86.2]
  21. # 数据2
  22. my_mAP = [ 39.9, 50.6, 56.2, 58.9, 59.8]
  23. my_param = [ 1.55, 6.09, 18.8, 42.7, 81.1]
  24. # 参数设置
  25. lw = 2
  26. ms = 8
  27. my_text = [ 'N', 'S', 'M', 'L', 'X']
  28. # 绘制 mAP-Param
  29. plt.figure(figsize=( 6.4, 4.8))
  30. plt.plot(my_param, my_mAP, label= '红色',
  31. c= 'r',
  32. lw=lw,
  33. marker= 'o',
  34. markersize=ms,
  35. ls= '-')
  36. plt.plot(baseline_param, baseline_mAP, label= '蓝色',
  37. c= 'b',
  38. lw=lw,
  39. marker= '*',
  40. markersize=ms,
  41. ls= '--')
  42. plt.legend(loc= 'lower right', prop=fontcn)
  43. plt.ylabel( '$M_\mathrm{mAP}$ (%)', fontsize=label_size)
  44. plt.xlabel( '$N_\mathrm{Param}$ (M)', fontsize=label_size)
  45. # 设置坐标轴间隔
  46. x_major_locator = MultipleLocator( 10)
  47. y_major_locator = MultipleLocator( 3.5)
  48. ax = plt.gca()
  49. ax.xaxis.set_major_locator(x_major_locator)
  50. ax.yaxis.set_major_locator(y_major_locator)
  51. plt.xlim([ -3, 90])
  52. plt.ylim([ 35, 62])
  53. plt.text(my_param[ 0] - 3.5, my_mAP[ 0] + 0.8, my_text[ 0], color= "k", fontsize=text_size)
  54. plt.text(my_param[ 1] - 2, my_mAP[ 1] + 0.8, my_text[ 1], color= "k", fontsize=text_size)
  55. plt.text(my_param[ 2] - 2, my_mAP[ 2] + 0.8, my_text[ 2], color= "k", fontsize=text_size)
  56. plt.text(my_param[ 3] - 3, my_mAP[ 3] + 1.0, my_text[ 3], color= "k", fontsize=text_size)
  57. plt.text(my_param[ 4] - 2, my_mAP[ 4] + 0.8, my_text[ 4], color= "k", fontsize=text_size)
  58. plt.grid(linestyle= '--')
  59. plt.show()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值