Matplotlib 默认不支持中文字体
解决方案一:
下载中文字体(黑体,看准系统版本)
-
- 步骤一:下载 SimHei 字体(或者其他的支持中文显示的字体也行)
- 步骤二:安装字体
- 步骤三:修改配置文件matplotlibrc
运行:
import matplotlib
print(matplotlib.matplotlib_fname())
结果如下
/home/vubuntu/PycharmProjects/xxxProject/venv/lib/python3.10/site-packages/matplotlib/mpl-data/matplotlibrc
编辑matplotlibrc,在终端输入:
sudo gedit /home/vubuntu/PycharmProjects/xxxProject/venv/lib/python3.10/site-packages/matplotlib/mpl-data/matplotlibrc
将以下三个地方去掉前面的注释#并修改相应的内容并保存,修改后如下:
font.family: sans-serif
font.sans-serif: SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
axes.unicode_minus: False
注意:如果不是去去掉前面的注释#并修改,而是复制一行再修改,会报错:
Duplicate key in file PosixPath('/home/vubuntu/PycharmProjects/xxxProject/venv/lib/python3.10/site-packages/matplotlib/mpl-data/matplotlibrc')
- 步骤四:重启Jupyter Notebook
实践表明,只删除matplotlib缓存文件:
~/.cache/matplotlib
不重启Jupyter Notebook不生效。
解决方案二:
在Python脚本中动态设置matplotlibrc,这样也可以避免由于更改配置文件而造成的麻烦,具体代码如下:
import matplotlib.pyplot as plt
# 设置显示中文字体
plt.rcParams['font.sans-serif'] = ['SimHei']
# 字体更改后,会导致坐标轴中的部分字符无法正常显示,此时需要更改axes.unicode_minus参数
# 设置正常显示符号
plt.rcParams['axes.unicode_minus'] = False