linux中如何彻底解决matplotlib中文乱码问题

小编给大家分享一下linux中如何彻底解决matplotlib中文乱码问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

成都创新互联专注于网站建设|网页维护|优化|托管以及网络推广,积累了大量的网站设计与制作经验,为许多企业提供了网站定制设计服务,案例作品覆盖岗亭等行业。能根据企业所处的行业与销售的产品,结合品牌形象的塑造,量身策划品质网站。

matplotlib是python绘图最基础的工具包,但是一直以来matplotlib对中文都不是非常友好,默认情况下绘图时中文显示是乱码。

之前使用windows的时候只需要更改matplotlibrc配置文件即可直接解决,但是当要在linux生产环境中批处理的时候就遇到了很多问题,有些linux系统没有中文字体,而且大多数提供的中文字体是ttc格式,而matplotlib只支持ttf格式,而不支持ttc格式字体。

linux和mac os中的问题是相同的,下面就说一下如何彻底解决这一问题:

Windows

windows中是最简单,直接修改matplotlibrc配置文件中的font相关的参数设置即可

Linux

假设你没有root权限,只是在个人用户中安装(有root权限会更方便)。

首先查看系统中是否已经有支持的中文字体

linux中如何彻底解决matplotlib中文乱码问题

可以看到支持的中文字体都是ttc格式,画出来的图是无法显示中文

linux中如何彻底解决matplotlib中文乱码问题

下面我们安装新字体,从windows拷贝微软雅黑ttf文件,放到当前用户主目录 .fonts目录下(如果没有此目录自行创建),放好字体文件之后执行 fc-cache更新字体缓存,然后查看系统字体就能找到新添加的字体了

linux中如何彻底解决matplotlib中文乱码问题

把相应的字体文件拷贝到 matplotlib 的 mpl-data/fonts/ttf 目录下

修改 matplotlib 的配置文件 matplotlibrc 中 font.serif 和 font.sans-serif 选项(这是有衬线字体和无衬线字体,关于有衬线字体和无衬线字体的区别,可自行搜索)

注意:字体名称是 Microsoft YaHei, 关于字体名称在fc-list :lang=zh输出信息中可以看到,如果错了的话是不会生效的。

linux中如何彻底解决matplotlib中文乱码问题

然后画图中文显示即不会显示乱码

linux中如何彻底解决matplotlib中文乱码问题

Mac OS X

OS X系统添加操作和Linux的操作类似,只是字体放置位置为 /Users/用户名/Library/Fonts/ 目录下,然后执行 fc-cache 更新字体缓存,同时把字体文件放到 matplotlib/mpl-data/fonts/ttf 目录下,然后剩下的操作和Linux系统相同。

三个系统我都测试过,最终都成功了。关于是否需要拷贝文件到 mpl-data 路径的文件中,这个可能不是必要的,因为我在mac os x上拷贝到了 mpl-data/fonts 目录下,而不是 mpl-data/fonts/ttf 目录下,但是仍然成功显示中文了,所以可能只需要添加到系统字体中即可。如果不行的话,还是将字体拷贝到 mpl-data/fonts/ttf 目录中。

关于是否需要更新 matplotlib 字体缓存的问题,这个不是最关键的问题,可以删除主目录下 .matplotlib 文件中的字体缓存文件,或者直接重启ipython 也可以。

看完了这篇文章,相信你对“linux中如何彻底解决matplotlib中文乱码问题”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


网页名称:linux中如何彻底解决matplotlib中文乱码问题
文章源于:http://myzitong.com/article/jjcicc.html