产生“矩形错误”,汉字显示不出,找了百度2页答案,有很多相像的临时解决办法对我的linux丝毫不管用... 可能是使用了ssh远程端的原因。
最后终于找到一个effective的永久性的配置解决办法,自己总结整理下以便后续配置其他系统环境可以用到:
1. 查询当前系统内mpl的所有字体,检查是否含有中文字体:
# 查询当前系统所有字体
from matplotlib.font_manager import FontManager
import subprocess
mpl_fonts = set(f.name for f in FontManager().ttflist)
print('all font list get from matplotlib.font_manager:')
for f in sorted(mpl_fonts):
print('\t' + f)
很多中文字体也是用英文名称显示的,所以要仔细注意检查;如果有中文字体,可以跳过3、4步。
2. 使用这两行代码找出mpl的字体所在文件夹:
In [5]: import matplotlib as mpl
In [6]: mpl.matplotlib_fname()
3. 下载所需要的字体,比如SimHei的ttf放入上述文件夹;
4. 再次查询所有字体,确认新加入的字体是否在文件夹中,应该没啥问题~
5. 打开第2步中的文件夹,找到matplotlibrc的文件,修改3条配置命令如下:
font.family:sans-serif
font.sans-serif:SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
axes.unicode_minus:False,#作用就是解决负号'-'显示为方块的问题
第一行在249行,第二行在257行,第三行在400行,去掉句尾前的# 符号
6. 重新加载设置:
from matplotlib.font_manager import _rebuild
_rebuild() #reload一下