Mac【matplotlib字体报错问题】findfont:Generic family ‘sans-serif‘ not found because none of the following ……
摘要:在macOS系统中,Matplotlib默认可能不包含中文字体(如SimHei),因此在使用Matplotlib绘制图表时,可能会遇到无法显示中文的问题。以下是解决这个问题的步骤:
一、原生 jupyter notebook
1. 下载中文字体
下载字体文件 SimHei.ttf
字体地址
macOS系统支持.ttf
或.otf
格式的字体文件。
2. 安装字体到macOS
双击下载的字体文件,然后点击“安装字体”按钮。
字体将自动安装到系统的字体库中。
3. 找到Matplotlib的字体目录
打开终端,运行以下Python代码,找到Matplotlib的字体目录:
import matplotlib as mpl
print(mpl.get_data_path())
输出结果通常是:/Users/你的用户名/.matplotlib
。
4. 将字体文件复制到Matplotlib的字体目录
打开终端,将字体文件复制到Matplotlib的字体目录中:
cp /你的路径/SimHei.ttf /Users/你的用户名/.matplotlib/fonts/ttf/
如果fonts/ttf
目录不存在,可以手动创建。
5. 清除Matplotlib的字体缓存
找到Matplotlib的缓存目录,运行以下代码:
import matplotlib as mpl
print(mpl.get_cachedir())
输出结果通常是:/Users/你的用户名/.matplotlib
。
删除缓存目录下的所有文件:
rm -rf /Users/你的用户名/.matplotlib/*.cache
6. 配置Matplotlib使用新字体
在你的Jupyter Notebook或Python脚本中,添加以下代码:
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置字体为SimHei
plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题
7. 重启Jupyter Notebook
二、Anaconda 下 Jupyter notebook
前面步骤一样,下载字体然后安装,字体地址
1. 找到字体目录
import matplotlib as mpl
print(mpl.get_data_path())
输出结果为:
/opt/anaconda3/lib/python3.12/site-packages/matplotlib/mpl-data
然后进入这个目录,最后进到字体目录
把下载好的字体复制到这个目录下
cp /字体路径/SimHei.ttf /opt/anaconda3/lib/python3.12/site-packages/matplotlib/mpl-data/fonts/ttf
2.清除缓存
和上面一样找到缓存目录,运行以下代码:
import matplotlib as mpl
print(mpl.get_cachedir())
输出结果为:
/Users/你的用户名/.matplotlib
。
删除字体缓存文件:
rm fontlist-v330.json