Draw training curves via Matplotlib.
import matplotlib.pyplot as plt
本文记录了使用Matplotlib
库制作一个用在论文中的pdf格式训练曲线图像的制作流程。
①创建一个figure对象,并指定图像大小:
fig = plt.figure(figsize=[10, 8]) #用来控制图像大小 先width 后height
②绘制曲线:
plt.plot(x, y, label='X', color='red', linewidth=1.1, marker='s', markersize=12, alpha=1)
- label:曲线说明
- color:曲线颜色
- linewidth:曲线宽度
- marker:折线顶点标识:方块s,三角V,原型o
- markersize:标识大小
- alpha:透明度
③平滑曲线:采用tensorboard中的计算方式,指数加权滑动平均:
def smooth(data, weight=0.8):
last = data[0]
res= []
for point in data:
smoothed_val = last * weight + (1 - weight) * point
res.append(smoothed_val)
last = smoothed_val
return res
④设置坐标轴;
- 设置坐标范围:
plt.axis([x_min, x_max, y_min, y_max])
- 设置坐标刻度:
plt.xticks((0), ('1'), fontsize=20, fontproperties = 'Times New Roman') plt.yticks((0), ('1'), fontsize=20, fontproperties = 'Times New Roman') # 第一个元组表示坐标的实际值;第二个元组表示坐标的显示值。
- 设置坐标名称:
font = {'family': 'Times New Roman', 'weight': 'normal', 'size': 20, } plt.xlabel('axis x', font) plt.ylabel('axis y', font)
需要注意的是,如果坐标名称需要显示$10^3$,则需要使用:'$10^3$'
。
⑤设置背景栅格:
plt.grid(linestyle='--', color='red', )
# linestyle也简写为ls;color也简写为c
⑥设置图例:
font1 = {'family': 'Times New Roman',
'weight': 'normal',
'size': 20,
}
plt.legend(loc='lower right', prop=font1)
图例位置也可以用数字代替,见下表:
⑦去白边:
fig.tight_layout()
⑧保存为pdf格式:
fig.savefig("XXX.pdf", format='pdf', transparent=True, dpi=300, pad_inches=0)