当前位置:   article > 正文

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

matplotlib 宋体

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())
  • 1
  • 2

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']
  • 1
  • 2
  • 3

第二种:

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)  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

效果:

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

image.png

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/423156
推荐阅读
  

闽ICP备14008679号