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

本文介绍了如何在Linux系统中永久解决使用Matplotlib库时出现的中文乱码问题,特别是通过SSH远程连接时。步骤包括检查系统字体、定位Matplotlib配置文件、添加中文字体、修改配置参数以及重新加载设置。这种方法对于后续配置其他系统环境同样适用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值