天天看点

【Matpyplot】绘制论文用图表

在撰写论文的时候发现论文需要上传清晰的pdf格式的图,和我们平时跑实验用的图不是一个概念。需要根据排版的格式进行调整,改大小,清晰度,去白边等操作,故在此整理记录。

图片大小

plt.figure(figsize=[7, 5]) #用来控制图像大小 先width 后height
           

画折线图

plt.plot(x_axis,data, label="XXX", color="red", linewidth=1.1, marker='s', markersize=12)

           

x_axis 是用来设置x轴坐标显示的标签

label 给线加上图例说明

color 线颜色

linewidth 线宽度

marker 折线顶点标识 s:标识方块,也有三角V,原点o等其他

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
           

这时候就可以画出下面这种图

【Matpyplot】绘制论文用图表

字符格式设置

为x轴y轴添加说明,同时可以改变字体大小

plt.ylabel('Reward',fontsize=25)
    plt.xlabel('Training epochs',fontsize=25)
           

控制图例大小和位置,有的时候因为数据太多产生的图例可能会导致,图例挡住图像,这时候就可使用如下代码修改图例的大小和位置

font1 = {'family': 'Times New Roman',
         'weight': 'normal',
         'size': 18,
         }
plt.legend(loc='upper right', prop=font1)

           

loc可以控制图例具体位置,prop控制字体大小格式

去白边

fig = plt.gcf()
    plt.margins(0, 0)
    fig.tight_layout()
           

plt.gcf可以取到fig图,然后根据fig图,清除到多余的白框

导出PDF

为了导出论文能使用的图片因此就需要使用pdf格式,同时设置一个大的dpi

fig.savefig("./XXX.pdf", format='pdf', transparent=True, dpi=300, pad_inches=0)