终于解决python画图不显示中文的问题了

运行环境mac

发现使用matplotlib等相关绘图包时中文会出现方块,无法显示,试了网上各种方法都不行。。后来发现其实是本地库根本就没有中文字体包,这样的话怎么修改代码都是没用的。。。卒

首先查看是否有相关中文字体包

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)

然后发现
在这里插入图片描述
根本一个中文字体包都没有。。如果你发现你有类似SimHei,FangSong等字体,那恭喜你可以不用看本文了。

首先下载一个中文字体,比如选择SimHei,黑体。

然后将它放置到字体路径下: python3.7/site-packages/matplotlib/mpl-data/fonts/ttf (大概是长这样)

如果你不知道路径在哪儿,在命令行里输入

python -c "import matplotlib; print(matplotlib.matplotlib_fname())"

可获取matplotlib的相关路径,然后接着进去mpl-data/fonts/ttf 即可。

讲下载好的字体放在这里,如果不知道怎么复制到这里 可以 cp 字体所在路径 . 将字体复制到当前位置。(记得加.)

在这里插入图片描述
ls查看一下,发现simhei字体已经复制到这里。

紧接着在代码开头放入:

import matplotlib as mpl  
mpl.rcParams['axes.unicode_minus'] = False
mpl.rcParams['font.family'] = 'SimHei'

from matplotlib.font_manager import _rebuild
_rebuild()

一定要记住这个rebuild,因为需要重新加载字体库才能检测到新导入的字体(类似关机重启)。

接下来就代码中就有能显示中文了。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值