记录一下,在论文画图时常用的一些api。
目标:画一个清晰漂亮的折线图,如下所示。
拆解画图优美的几个小tips
去掉上方和右方的边框
fig, ax=plt.subplots()
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
设置图例中的字体和大小
这里我们使用的是新罗马,大家也可以替换为其他的。
font = {'family': 'serif',
'serif': 'Times New Roman',
'weight': 'normal',
'size': 15}
plt.rc('font', **font)
设置折线的颜色
这里找了两种比较淡的颜色,具体颜色表可以参考下面第四个链接。
同时,可以设置折线图中线和点的格式。
plt.plot(x,k1,'s-',color = 'salmon',label="p1")#s-:方形
plt.plot(x,k2,'o-',color = 'skyblue',label="p2")#o-:圆形
设置X,Y轴的刻度
本来,XY轴的刻度会被自动生成,但如果自动生成的不符合大家的要求,这里就可以手动规定生成的刻度。
plt.yticks([45,50,55,60,65,70,75,80],fontsize=12)
plt.xticks([-0.01,0.00,0.01,0.03,0.05,0.07,0.09,0.10],fontsize=12)
给每个点标上注释
对于注释的位置,大家可以自己调节。xy=后面的两个值即为标注数值的位置。
for i in range(6):
plt.annotate('{}'.format(k1[i]),xy=(x[i]-0.003,k1[i]+0.7))
plt.annotate('{}'.format(k2[i]),xy=(x[i]-0.003,k2[i]+0.7))
完整代码如下:
import matplotlib.pyplot as plt
#折线图
x = [0,0.01,0.03,0.05,0.07,0.09]#点的横坐标
k1 = [51,53,54,55,53,52]#线1的纵坐标
k2 = [67,68,69,69,69,68]#线2的纵坐标
fig, ax=plt.subplots()
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
font = {'family': 'serif',
'serif': 'Times New Roman',
'weight': 'normal',
'size': 15}
plt.rc('font', **font)
plt.plot(x,k1,'s-',color = 'salmon',label="p1")#s-:方形
plt.plot(x,k2,'o-',color = 'skyblue',label="p2")#o-:圆形
plt.xlabel("X",fontsize=15)#横坐标名字
plt.yticks([45,50,55,60,65,70,75,80],fontsize=12)
plt.xticks([-0.01,0.00,0.01,0.03,0.05,0.07,0.09,0.10],fontsize=12)
for i in range(6):
plt.annotate('{}'.format(k1[i]),xy=(x[i]-0.003,k1[i]+0.7))
plt.annotate('{}'.format(k2[i]),xy=(x[i]-0.003,k2[i]+0.7))
plt.ylabel("Y",fontsize=15)#纵坐标名字
plt.legend(loc = "best")#图例
plt.savefig("demo.pdf",dpi=300)
参考资料如下:
1. Python中Matplotlib Savefig()不同参数的使用_wilbeok的博客-CSDN博客_matplotlib savefig
2. matplotlib去掉顶右部边框和坐标轴调整_Ta-ttoo的博客-CSDN博客_matplotlib 边框