Mac错误处理:findfont: Font family 'SimHei' not found.
目的:设置中文字体 解决:安装Microsoft字体 效果:不需要plt.rcParams['font.sans-serif'] =
['SimHei']就可以自动显示中文,至此中文显示的问题已经解决。
1. 查看matplotlib字体路径
python
import matplotlib
print(matplotlib.matplotlib_fname()) #matplotlib字体路径【安装】
print(matplotlib.get_cachedir()) #清理matplotlib缓冲目录
- /Users/wt/miniconda3/envs/llm/lib/python3.11/site-packages/matplotlib/mpl-data/matplotlibrc
- /Users/wt/.matplotlib
2.下载SimHei.ttf字体
python
wget https://zihao-openmmlab.obs.cn-east-3.myhuaweicloud.com/20220716-mmclassification/dataset/SimHei.ttf
3. 将下载好的SimHei.ttf字体移动到第一步查询到的字体目录./fonts/ttf/下,清空缓存
python
# 1.下载好的SimHei.ttf字体并移动到第一步查询到的字体目录./fonts/ttf/下
cp SimHei.ttf /Users/wt/miniconda3/envs/llm/lib/python3.11/site-packages/matplotlib/mpl-data/fonts/ttf/SimHei.ttf
# 2.清理matplotlib缓冲目录【第一步查出的缓存目录】
rm -rf /Users/wt/.matplotlib
4.修改原始文件【第一步查出的字体路径】
powershell
vi /Users/wt/miniconda3/envs/llm/lib/python3.11/site-packages/matplotlib/mpl-data/matplotlibrc
通过:/内容 查找指定内容
如:/font.family, :/font.sans-serif,😕 axes.unicode_minus.
提示:按n键,可以继续查找下一个
powershell
#去掉前面的#
font.family: sans-serif
#去掉前面的#,手动加SimHei
font.sans-serif: SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
#去掉前面的#,把True改为False
axes.unicode_minus: False # use Unicode for the minus symbol rather than hyphen. See
不需要plt.rcParams['font.sans-serif'] = ['SimHei']就可以自动显示中文,至此中文显示的问题已经解决。
5.测试绘图代码
python
import matplotlib.pyplot as plt
x = list(range(5))
y = list(range(1,10,2))
plt.plot(x,y)
plt.xlabel('x轴数据')
plt.ylabel('y轴数据')
plt.show()
参考:
https://blog.csdn.net/u012744245/article/details/119735461【强烈推荐】
Linux解决
powershell
cd /usr/share/fonts
# copy microsoft fonts to /usr/share/fonts
mkfontscale && mkfontdir && fc-cache -fv
# validation
fc-list : family | grep Sim
# remove matplot font cache
rm -rf ~/.cache/matplotlib