linux下matplotlib画图不能显示中文的问题

产生“矩形错误”,汉字显示不出,找了百度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一下

来源:matplotlib中文乱码的两种解决方案 - 云+社区 - 腾讯云 (tencent.com)

你可能感兴趣的:(linux,ssh,运维)