Python输出论文级插图

环境:Win10, python3, IPython7.10, qtconsole

英文论文的常用字体为Times New Roman,绘图中的字体也是此类型(中文文章西文字体一般要求为该字体),Python使用matplotlib库绘图,通过一些设置也能绘制出符号论文要求的图片,笔者的使用环境为qtconsole,如果直接执行py脚本文件也是可以的,只需使用plt.save函数保存即可。


20201026更新
有个更加简单的办法:

  1. 安装SciencePlots: pip install -U scienceplots

  2. 设置绘图风格:plt.style.use(['science','ieee'])

  3. 设置字体类型,大小:

plt.rcParams.update({
    "legend.fancybox": False,
    "legend.frameon": False,
    "text.usetex": True,
    "font.family": "serif",
    "font.serif": ["Times"], #注意这里是Times,不是Times New Roman
    "font.size":11})

效果为:
在这里插入图片描述
另外一个基于matplotlib的seaborn绘图库使用起来也非常方便,同样也需要手动设置一下绘图参数,如下:

import seaborn as sns
sns.set_theme(style="ticks")
sns.set_style(rc={'font.family':'serif','font.serif':'Times','font.size':20,'figure.figsize':(11.7,8.27)})

笔者测试的时候发现字体大小和图像大小无法调整,但对结果影响不大,使用seaborn的绘图结果为:
在这里插入图片描述
在这里插入图片描述


1. 修改matplotlib配置文件matplotlibrc

在Windows系统可以使用小巧便捷的文件搜索软件Everything搜索该配置文件,修改第196,197和326行:
在这里插入图片描述
在这里插入图片描述
作用就是字体家族(font family)为衬线字体(serif),设置衬线字体为Times New Roman,以上截图中208行的效果和197行是一样的,注意到笔者添加了宋体(SimSun),但是经过笔者后面验证对中文来说是无效的,所以用matplotlib绘制中文论文的插图不太好(可以后期处理,将文字部分P成Times New Roman字体),因为设置成中文字体后西文字体也会相应改变,字体家族有5种(有兴趣的读者可以根据这个rc配置文件内容进行修改查看不同的效果)

注意到笔者设置了字体大小,但是笔者执行后该设置不起作用,需要后面再手动设置(使用plt.rc('font',size=14))

2.qtconsole设置svg图片格式

使用svg矢量图格式嵌入到word中不会出现像素失真,在qtconsole环境下执行以下命令:

%matplotlib inline

%config InlineBackend.figure_format='svg'

在这里插入图片描述
要先设置%matplotlib inline之后才能设置%config InlineBackend.figure_format='svg',设置之后可以将qtconsole控制台得到的图片保存为svg格式(复制功能不可用,复制后无法粘贴)。

3.设置字体大小

如下图所示:
在这里插入图片描述
其实以上设置和前面的rc配置文件设置有重复,其实想让读者知道,也可以通知这种方式来设置不同字体,例如设置【宋体】:
在这里插入图片描述
如果只是使用绘图做汇报型任务,可以使用其他非衬线字体,那种中文和西文看起来都会比较舒服,如黑体(SimHei)、幼圆(YouYuan)、方正舒体(FZShuTi)等,如下图所示:
在这里插入图片描述
以上使用的方法是直接修改rc参数值,因为笔者没有找到使用plt.rc()函数修改非线性字体的输入参数值,故选择此方法。

总结

  1. 设置svg格式(脚本文件的话需要使用函数plt.save()手动保存)
  2. 两种方式(一是rc()函数,二是直接修改plt.rcParams[]参数值)设置绘图显示的字体类型和大小(需要了解什么是衬线字体、非衬线字体,以及各自都有哪些可用字体)

参考链接:
[1] https://www.jb51.net/article/134546.htm
[2] https://zhuanlan.zhihu.com/p/35983270

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值