python matplotlib 处理中文字体

警告
本文最后更新于 2023-05-17,文中内容可能已过时。

处理 matplotlib 中文字体无法显示的问题

下载需要的字体

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
## 先下载字体
git clone https://github.com/dolbydu/font.git

## 支持中文字体的在 unicode
cd unicode

tree -L 1
.
├── Adobe Fangsong Std.otf
├── Adobe Heiti Std.otf
├── Adobe Kaiti Std.otf
├── Adobe Song Std.otf
├── FangSong.ttf
├── FZYingBiXingShu-S16S.ttf
├── FZYingBiXingShu-S16T.ttf
├── Kaiti.ttf
├── Lisu.TTF
├── Microsoft Yahei Bold.ttf
├── Microsoft Yahei.ttf
├── SimHei.ttf
├── SimSun.ttc
├── STCaiyun.TTF
├── STFangsong.TTF
├── STHupo.TTF
├── STKaiti.TTF
├── STLiti.TTF
├── STSong.TTF
├── STXihei.TTF
├── STXingkai.TTF
├── STXinwei.TTF
├── STZhongsong.TTF
└── YouYuan.TTF

拷贝到 matplotlib 文件夹

1
2
3
4
5
6
7
8
## 查看 matplotlib 路径
import matplotlib
matplotlib.matplotlib_fname()

'/usr/local/python3/lib/python3.11/site-packages/matplotlib/mpl-data/matplotlibrc'

## 字体文件位于上一层
cd /usr/local/python3/lib/python3.11/site-packages/matplotlib/mpl-data/fonts/ttf

现在,我们把刚才下载得到的字体拷贝在这个文件夹

1
cp ~/git/font/unicode/* /usr/local/python3/lib/python3.11/site-packages/matplotlib/mpl-data/fonts/ttf

然后,还需要更新 matplotlib 的字体缓存文件夹,否则还是无法更新字体

1
2
3
4
5
6
7
import matplotlib
print(matplotlib.get_cachedir())

'/root/.cache/matplotlib'

## 删除字体缓存
rm -rf /root/.cache/matplotlib

这时候,重新启动 python 即可

1
2
3
4
5
matplotlib.matplotlib_fname()
from matplotlib import font_manager
font_set = {f.name for f in font_manager.fontManager.ttflist}
for f in font_set:
    print(f)

现在,我们可以指定字体了

1
2
plt.rcParams["font.sans-serif"]=["Microsoft YaHei"] #设置字体
plt.rcParams["axes.unicode_minus"]=False #该语句解决图像中的“-”负号的乱码问题

相关内容

william 支付宝支付宝
william 微信微信
0%