Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 594|回复: 0

Python:matplotlib 中文乱码的解决方案

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-5-8 15:36:32 | 显示全部楼层 |阅读模式

    最近手头有公司的数据资源,正好拿来练习了 matplotlib 的画图,期间碰到一个坑,就是中文在图表中显示的是方框。在查询网上各种资料并实践后,我分享一下我试验成功的解决方案。

    本文针对 Mac 系统,其他系统也可参考本文。

    原因

    出现中文乱码是因为 matplotlib 库中没有中文字体,所以显示出来的不像是真正的乱码,而是都为方框。

    解决方法

    1)在终端中根据个人需求启动 python 或 python3,或者直接打开相应的 Python Launcher,执行以下两句。

    import matplotlib
    matplotlib.matplotlib_fname()

    得到的结果就是 matplotlib 包所在的文件夹位置,我得到的路径是 '/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc',截图如下。(mac 以外的系统得到的路径差别会很大)

    2)进入上一步得到的路径,打开 matplotlibrc 配置文件,找到以 #font.sans-serif 开头的那一行,去掉#,并添加 SimHei 在该参数中(如下图)。字体也可以改成别的。网上有些文章中是把 SimHei 放在参数最后,我开始也是放在最后的,没有解决问题,放到最前面就解决了问题。

    3)在网上下载需要添加的字体的 ttf 文件,SimHei 的下载地址:https://www.fontpalace.com/font-details/SimHei/。下载后将文件放置在 matplotlib 包文件夹下的 /fonts/ttf 中(也就是前面matplotlibrc 配置文件所在的文件夹的 /fonts/ttf 中)。

    完成这些后应该就能解决问题了。

    mac 之外的系统做到这儿时可能还不能解决问题,我看到有一个帖子提到的方法或许可以解决问题(https://www.zhihu.com/question/25404709/answer/309784195 ),顺便分享一下。

    改了配置之后并不会生效,需要重新加载字体,在Python中运行如下代码即可:

    from matplotlib.font_manager import _rebuild

    _rebuild() #reload一下

     

    参考资料

    https://segmentfault.com/a/1190000005144275

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-23 03:10 , Processed in 0.119954 second(s), 28 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表