matplotlib设置字体为宋体+times new roman

matplotlib原生字体库不包含宋体,中文会显示为方块,论文常见要求格式为中文宋体+英文/数字 times new roman ,9号字。大部分方法都是用比较接近的字体去替代或者全局中文字体再用latex设置英文和数字格式,都比较麻烦且效果一般。这里用了一个比较取巧的方法一劳永逸的解决这个问题。

解决思路:1、自定义中文宋体+英文times new roman的新字体,2、替换掉默认字体

1、生成新的字体文件
现成的字体文件:链接: https://pan.baidu.com/s/1sPaQQaGqqqJXizZCfLyKzQ?pwd=bgea 提取码: bgea 复制这段内容后打开百度网盘手机App,操作更方便哦
生成方法:
这里用了一个工具
https://github.com/nowar-fonts/Warcraft-Font-Merger
可以很简单的把两个字体合并为一个字体
下载(推荐SC2版本)软件后解压缩到任意文件夹,如下图:
image.png
在C:\Windows\Fonts中找到宋体和times new roman的字体文件
image.png
image.png
先选中中文宋体“simsun.ttf”按住Ctrl再选中英文times.ttf,按住times.ttf拖动到合并.dat上,开始合并
image.png
在文件夹中生成一个out.ttf文件,就是中文部分为宋体,英文和数字部分为times new roman的混合字体文件了。
查看一下
image.png
2、替换默认字体
查看matplotlib中字体存储路径

import matplotlib
print(matplotlib.matplotlib_fname())

image.png
找到“anaconda\lib\site-packages\matplotlib\mpl-data\fonts\ttf”这个路径:
image.png
复制一份cmex10.ttf这个字体文件
image.png
删除掉原本的cmex10.ttf文件,然后把上一步中生成的out.ttf复制到这个路径中,重命名为cmex10.ttf(注意这一步需要先关闭Python)
3、设置matplotlib中字体
第一种:

import matplotlib.pyplot as plt
from matplotlib import rcParams
plt.rcParams['font.family']=['cmex10']

第二种:

import matplotlib.pyplot as plt
from matplotlib import rcParams
config = {
    "mathtext.fontset":'stix',
    "font.family":'serif',
    "font.serif":['cmex10'],
    "font.size":9,
    'axes.unicode_minus': False
}
rcParams.update(config)  

效果:

import matplotlib.pyplot as plt
from matplotlib import rcParams
plt.figure(dpi=100)
x=[1,2,3,4,5]
y=[1,2,3,4,5]
plt.scatter(x,y)
plt.rcParams['font.family']=['cmex10']
plt.ylabel('宋体ABCD \n times new roman',fontsize=9)
plt.xlabel('宋体 \n times new roman12345',fontsize=9)

image.png

一劳永逸,之后画图只需要选择这个字体就可以了,非常方便,不需要P图了

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值