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

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

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

1、生成新的字体文件

现成的字体文件
提取码: bgea

生成方法:
这里用了一个工具可以很简单的把两个字体合并为一个字体
下载(推荐SC2版本)软件后解压缩到任意文件夹,如下图:

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

在C:WindowsFonts中找到宋体和times new roman的字体文件

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

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

先选中中文宋体“simsun.ttf”按住Ctrl再选中英文times.ttf,按住times.ttf拖动到合并.dat上,开始合并

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

在文件夹中生成一个out.ttf文件,就是中文部分为宋体,英文和数字部分为times new roman的混合字体文件了。
查看一下

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

2、替换默认字体
查看matplotlib中字体存储路径

import matplotlib
print(matplotlib.matplotlib_fname())

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

找到“anacondalibsite-packagesmatplotlibmpl-datafonts tf”这个路径:

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

复制一份cmex10.ttf这个字体文件

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

删除掉原本的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 
 times new roman ,fontsize=9)
plt.xlabel( 宋体 
 times new roman12345 ,fontsize=9)

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

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

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容