快捷解决方法
直接在绘图前加上一下的代码
import matplotlib
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
matplotlib.rcParams['axes.unicode_minus'] = False # 正常显示负号
当前环境中一劳永逸的解决方法
-
确认
matplotlib
读取字体的目录:import matplotlib print(matplotlib.matplotlib_fname())
比如我的目录是:
/Users/xq/.conda/envs/pycharm_env/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc
-
mac os 自带的中文字体目录是
/System/Library/Fonts/STHeiti Medium.ttc
,因此接下来把系统字体复制到matplotlib
读取的字体目录下即可,在terminal中的操作如下:cd /Users/xq/.conda/envs/pycharm_env/lib/python3.8/site-packages/matplotlib/mpl-data/ # 这个根据自己的目录来 cd fonts/ttf cp /System/Library/Fonts/STHeiti\ Medium.ttc .
-
刷新缓存
import matplotlib.font_manager matplotlib.font_manager._rebuild()
-
重启jupyter(重要!)
-
在代码中使用这个字体:
import matplotlib as mpl mpl.rcParams['font.family'] = ['Heiti TC']
如果要使用黑体
如果要使用黑体,则可以到这个网站下载SimHei
字体:https://www.fontpalace.com/font-download/SimHei/,中间操作不变,只需要在最后的代码中添加:
import matplotlib as mpl
mpl.rcParams['font.family'] = ['SimHei']
参考文章
https://hoishing.medium.com/using-chinese-characters-in-matplotlib-5c49dbb6a2f7