matplotlib完美论文画图

记录一下,在论文画图时常用的一些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 边框

3. 【Matplotlib】(三)折线图_醉糊涂仙的博客-CSDN博客_matplotlib

4. matplotlib颜色表 - 简书

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值