赞
踩
声明非本人所写,原创链接:【Python】绘图技巧:目标检测领域常见的折线图和散点图_嗜睡的篠龙的博客-CSDN博客
偶然看到这个博客,感觉这个绘图效果不错,曾经论文中因不知道怎么画出好看的图而苦恼,matplotlib看起来效果还是不错的。
-
import matplotlib.pyplot
as plt
-
# 设置字体格式
-
from matplotlib
import rcParams
-
import matplotlib.patches
as patches
-
-
size =
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()
-
import matplotlib.pyplot
as plt
-
# 设置字体格式
-
from matplotlib
import rcParams
-
from matplotlib.ticker
import MultipleLocator
-
-
size =
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()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。