问题描述
在平时用overleaf写论文的时候,会涉及到将实验结果以折线图的形式呈现,如果用Excel画图的话,较难导出高清的图片。放入overleaf之后,会失真,清晰度不够。
问题解决:
使用python画图,可以直接生成pdf或者jpg格式,放入overleaf之后,均不会失真。
源码如下:
python
import matplotlib.pyplot as plt
import numpy as np
# 数据
columns = ['one', 'two', 'three', 'four', 'five', 'six'] # x轴坐标上的名称
# bert_base_scores = [19.77, 18.92, 20.52, 19.96, 19.70, 19.67] # exact base, y轴上的数字1
# bert_large_scores = [21.78, 21.31, 21.89, 18.03, 17.24, 15.96] # exact large
# y_start, y_end = 15, 23 # 设置y轴开始和结束的位置, y轴上的数字2
# bert_base_scores = [30.58, 30.50, 33.06, 31.65, 32.11, 31.69] # prop base,
# bert_large_scores = [33.20, 32.94, 33.46, 31.78, 30.49, 25.01] # prop large
# y_start, y_end = 24, 36 # 设置y轴开始和结束的位置
bert_base_scores = [33.30, 33.04, 36.25, 34.26, 35.15, 34.31 ] # binary base
bert_large_scores = [35.84, 35.76, 36.22, 34.71, 32.95, 26.77 ] # binary large
y_start, y_end = 25, 37 # 设置y轴开始和结束的位置
# 创建折线图
plt.figure(figsize=(4.6, 5.0)) # w, h ,设置画布的大小
plt.plot(columns, bert_base_scores, marker='o', label='BERT-base', linewidth=2) # linewidth默认是1
plt.plot(columns, bert_large_scores, marker='s', label='BERT-large', linewidth=2)
# 添加标题和标签
# plt.title('BERT-base vs BERT-large Scores')
plt.xlabel('Number of decoder layers', fontsize=14)
plt.ylabel('Binary $\it{F}$1', fontsize=14)
plt.ylim(y_start, y_end)
plt.yticks(np.linspace(y_start, y_end, 5), fontsize=12)
plt.legend(loc='lower left') # 标签左下角对齐
plt.xticks(fontsize=12)
# 显示图形
plt.savefig('bert_binary.pdf', format='pdf') # 如果想生成jpg格式,更改此处即可
plt.show()
上图生成的pdf文件如下: