安装宋体
查找plt安装目录:
locate -b '\mpl-data'
得到:
/usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data /usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data
mpl-data文件夹下有个/fonts/ttf文件夹,将ttf格式的字体文件复制到此ttf文件夹下即可
sudo mv SimSun.ttf /usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data/fonts/ttf
SimSun.ttf下载:https://github.com/micmro/Stylify-Me/blob/master/.fonts/SimSun.ttf
接下来删除当前用户matplotlib的缓冲文件:
rm -rf ~/.cache/matplotlib/*
中文设置
原理:
- 使用fontproperties局部设置字体为宋体
- 英文放到公式中,使用stix字体,此字体非常接近于Times New Roman
- 其余字体为默认字体(坐标轴刻度等)
#coding:utf-8
import os
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
from matplotlib import rcParams
# 全局设置字体及大小,设置公式字体即可,若要修改刻度字体,可在此修改全局字体
config = {
"mathtext.fontset":'stix',
# "font.family":'serif',
# "font.serif": ['SimSun'],
# "font.size": 15,
}
rcParams.update(config)
# 载入宋体
SimSun = FontProperties(fname='/usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data/fonts/ttf/SimSun.ttf')
x = np.linspace(0, 10, 1000)
plt.plot(x, np.sin(x), label=u"宋体 $\mathrm{1}$") # 图例
plt.plot(x, np.cos(x), label=u"宋体 $\mathrm{2}$") # 图例
plt.title(u'宋体 $\mathrm{Times \; New \; Roman1}$', size=14, fontproperties=SimSun) # 局部设置中文为宋体,英文数字为Times New Roman
plt.xlabel(u'宋体 $\mathrm{Times \; New \; Roman2}$', size=14, fontproperties=SimSun)
plt.ylabel(u'宋体 $\mathrm{Times \; New \; Roman3}$', size=14, fontproperties=SimSun)
plt.text(3, 0.5, u"宋体 $\mathrm{12}$", size=14, fontproperties=SimSun) # 设置标注文字中文为宋体,英文数字为Times New Roman
plt.legend(prop={'family': 'SimSun', 'size': 12}) # 设置图例字体为宋体
# plt.axis('off') # 刻度仍为默认字体
plt.savefig("usestix.pdf", dpi=600, bbox_inches='tight') # 保存为pdf
# plt.savefig("usestix.svg") # 若使用了公式,直接导出的svg无法使用
os.system("pdf2svg usestix.pdf usestix.svg") # 将pdf转换为svg(若仅需要设置中文字体,则不需要使用pdf2svg进行转换)
plt.show()
转换为svg
plt导出的svg中不能有公式,因而先导出为pdf,然后将pdf转换为svg,有三种转换方式:
1、使用pdf2svg
安装:sudo apt install pdf2svg
优点:可直接在代码中转换
缺点:文件尺寸稍大
2、使用AI
优点:文件尺寸小
缺点:需手动操作
3、使用inkscape
文件尺寸最大,不建议使用