Matplotlib - 字体设置

字体下载

字体下载地址:
https://freefontsfamily.com/
https://fonts.google.com/

字体安装

1. 字体安装至系统

1
2
3
4
5
6
7
8
cd /usr/share/fonts
sudo mkdir myfonts
sudo cp /download_funt_path/fontname.ttf ./myfonts/
sudo chmod 755 -R myfonts
# 将下载的字体安装到系统中
sudo mkfontscale && sudo mkfontdir && fc-cache -fv
# 清除 Matplotlib Cathe 缓存
rm -rf ~/.cache/matplotlib/fontlist-v*.json

2. 字体复制至 Matplotlib 存放字体目录

获取 Matplotlib 存放字体的目录

1
2
import matplotlib as mpl
print(mpl.matplotlib_fname())

假设返回的目录为:~/.conda/envs/name/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc
字体存放目录应为:~/.conda/envs/name/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf

1
2
3
4
cd ~/.conda/envs/name/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf
cp /download_funt_path/fontname.ttf ./
# 清除 Matplotlib Cathe 缓存
rm -rf ~/.cache/matplotlib/fontlist-v*.json

Matplotlib 字体查看

1
2
3
4
5
import matplotlib as mpl
# 查看 Matplotlib Cathe 缓存中的字体列表
print(sorted([f.name for f in mpl.font_manager.fontManager.ttflist]))
# 查看对应字体文件的字体名称
print(mpl.font_manager.FontProperties(fname='/usr/share/fonts/helvetica/Helvetica.ttf').get_name())

Matplotlib 字体使用

1. 全局设定

1
2
3
4
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rc('font', family='Microsoft YaHei')
plt.title('标题')
1
2
3
4
import matplotlib as mpl
import matplotlib.pyplot as plt
mpl.rcParams['font.family']=['Microsoft YaHei']
plt.title('标题')

2. 指定 family

1
2
3
import matplotlib.pyplot as plt
fontdict = dict(family='Microsoft YaHei')
plt.title('标题', **fontdict)

3. 直接使用 font 文件

1
2
3
4
5
6
import matplotlib as mpl
import matplotlib.pyplot as plt
fontpath = r'/usr/share/fonts/msyh/msyh.ttc'
font = mpl.font_manager.FontProperties(fname=fontpath)
fontdict = dict(fontproperties=font)
plt.title('标题', **fontdict)