打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python matplotlib绘制图片汉字不能正常显示问题
采用matplotlib作图时默认设置下是无法显示中文的,凡是汉字都会显示成小方块。
实际上,matplotlib是支持unicode编码的,不能正常显示汉字主要是没有找到合适的中文字体,在matplotlib的配置文件C:\Python34\Lib\site-packages\matplotlib\mpl-data\matplotlibrc中,可以看到字体的默认设置如下:
#font.family         : sans-serif
#font.sans-serif     : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
可以看到,其中并没有中文字体,所以我们只要手动添加中文字体的名称就可以了。不过添加的名称并不是普通的名称,python有个字体管理器,font_manager.py,它会生成一个文件:fontList.cache(我的是在这个路径下:C:\Users\Administrator\.matplotlib);里面包含着True Type字体(.ttf文件)与Python中相应字体的对应名称,黑体simhei.ttf (windows中的字体文件)对应的名称是: “SimHei’’;楷体simkai.ttf对应的名称为’KaiTi’。你想要让汉字显示成什么字体,在其中查找对应的名称就可以了。

有两种方法添加“SimHei’’,’KaiTi_GB2312’等中文字体名称:
1. 直接修改配置文件matplotlibrc
       在配置文件中找到font.sans-serif的设置,然后添加需要的中文字体名称,例如:
font.sans-serif    : SimHei, Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

2. 动态设置(推荐方式)
    在python脚本中动态设置matplotlibrc,这样不需要更改配置文件,方便灵活,例如:
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']

      由于更改了字体导致显示不出负号,在配置文件中我们可以在axes相关设置里找到如下设置:
#axes.unicode_minus : True  可见默认情况下采用的是unicode的minus,看来我们选择的字体对这点支持不够,所以只要把它设置为False就可以了。

因此,最终需要在程序中加入如下代码,就可以正常显示汉字,并且不出现问题了。
from pylab import *mpl.rcParams['font.sans-serif'] = ['SimHei']mpl.rcParams['axes.unicode_minus'] = False 
注意:每个要显示的汉字串前要加u,即u"汉字串"。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Font family [‘SimHei‘] not found - IOS
如何在Linux服务器上安装Anaconda并配置Jupyter Notebook??
用 Python 分析所有微信好友
【干货】Python使用matplotlib实现数据可视化
Matplotlib画图时中文显示的问题
Python之Matplotlib库常用函数大全(含注释)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服