警告
本文最后更新于 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 #该语句解决图像中的“-”负号的乱码问题
|