【mac】matplotlib显示中文问题(两种方法)

这里写图片描述
或许你曾经碰到过这样的情况

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

或许你添加了这两行代码还是没有效果,在你图表中的中文依旧是一个个小框框
不要着急嘛,我们来把问题原因弄清楚,原因就是matplotlib库中压根就没有中文字体啊
在试过几种方法之后我发现一种及其简单的,分享给大家

超简便的方法

  • 运行以下代码,它会将你所有的字体显示出来,注意打印出来的都是英文,你得自己分辨哪些是中文字体
from matplotlib import font_manager
a = sorted([f.name for f in font_manager.fontManager.ttflist])
for i in a:
    print(i)

这是我的一部分字体,从中挑选自己需要的字体

Andale Mono
Apple Braille
Apple Braille
Apple Braille
Apple Braille
Apple Braille
Apple Chancery
Apple LiGothic
Apple LiSung
Apple Symbols
AppleGothic
AppleMyungjo
Arial
Arial
Arial
Arial
Arial Black
Arial Narrow
Arial Narrow
Arial Narrow
Arial Narrow
Arial Rounded MT Bold
Arial Unicode MS
Ayuthaya
BiauKai
Big Caslon
Bodoni 72 Smallcaps
Bodoni Ornaments
Bradley Hand
Brush Script MT
Chalkduster
Comic Sans MS
Comic Sans MS
Courier New
Courier New
Courier New
Courier New
DIN Alternate
DIN Condensed
DejaVu Sans
DejaVu Sans
DejaVu Sans
DejaVu Sans
DejaVu Sans Display
DejaVu Sans Mono
DejaVu Sans Mono
DejaVu Sans Mono
DejaVu Sans Mono
DejaVu Serif
DejaVu Serif
DejaVu Serif
DejaVu Serif
DejaVu Serif Display
Diwan Thuluth
  • 把你需要的字体放在=后面的中括号中,比如我放的就是黑体
plt.rcParams['font.sans-serif']=['STHeiti'] #用来正常显示中文标签

就开心的解决啦!


如果第一种方法,没成功,证明你matplotlib中没有中文字体,你需要手动添加,那么请进入方法二的流程吧~

确认matplotlib拥有的字体

import matplotlib.font_manager

a = sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])
for i in a:
    print(i)

找到mac已有的字体

网上教程关于matplotlib画图中文乱码修改很多都是windows版本的,一般都是提示下载Simhei字体,后来发现mac自身也有挺多中文字体,可以通过如下方式找到导出mac自带中文字体。

  • 启动台—>字体册—>中文—>导出字体,也可以直接进入font文件夹找到字体,但通过字体册导出感觉更简单点,字体册查看字体也更方便点
  • 将字体复制到/matplotlib/mpl-data/fonts/tff 文件夹中,我看网上有大神说必须是tff格式的字体matplotlib才能识别,因为我导出的是华文仿宋,默认是tff格式,也不确定ttc的是否能直接用,如果有问题的话需要去转下格式。
  • 重新加载matplotlib的字体库
from matplotlib.font_manager import _rebuild
_rebuild()
  • 接着用第一步的代码能够看见新加入matplotlib的字体了,我用的是华文仿宋,显示英文为STFangsong(这一步很重要!,否则matplotlib不重新加载的话,添加进去的字体还是没法显示)

脚本中修改字体

plt.rcParams['font.sans-serif'] = ['STFangsong']
plt.rcParams['axes.unicode_minus'] = False
  • 29
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值