调试以前写的matplotlib相关脚本,中文呈方块样;重新解决一遍,感觉比以前的理解更进一步,故而记下一笔;

1. 首先要为matplotlib添加中文字体库;

系统字体库在/usr/share/fonts/,可以看一下配置文件/etc/fonts/fonts.conf

matplotlib字体库需要看python安装位置了,打开python,输入:

import matplotlib
matplotlib.matplotlib_fname()

得到了matplotlib的配置文件位置,应该是<python-site-packages>/matplotlib/mpl-data/matplotlibrc

matplotlib字体库的位置就是<python-site-packages>/matplotlib/mpl-data/fonts/ttf

然后从系统库中找个合适的字体放到matplotlib字体库中,可以软链过来,不过要注意,只接受ttf文件,不接受ttc文件,所以拷过来或链过来的时候,需要把文件后缀名改成.ttf;

我用的是文泉驿正黑(其它的解决方案中有用微软雅黑的,当然前提是你自己从windows搞了雅黑字库进linux,不在本文讨论范围,这里用了linux发行版通常会配备的文泉驿字体);于是:

ln -s /usr/share/fonts/wqy-zenhei/wqy-zenhei.ttc <python-site-packages>/matplotlib/mpl-data/fonts/ttf/wqy-zenhei.ttf

不论如何,这里建议用黑体字,因为黑体是无衬线字(sans-serif),下面会讲;

如何确认字体文件放进来之后生效了呢?

删除~/.cache/matplotlib/fontList.json,重启python,from matplotlib.font_managerimport FontManager,应该会重新生成~/.cache/matplotlib/fontList.json,打开该文件,查看是否加载了新加的文体库;

(补充:python2.7环境下,cache文件是~/.cache/matplotlib/fontList.cache)

更有效的方法是用以下python代码检查matplotlib识别到的字体:

from matplotlib.font_manager import FontManager

fm = FontManager()
for f in fm.ttflist:
print (f.name)

  

2. 然后需要配置matplotlib启用中文字体

打开刚才的matplotlib配置文件<python-site-packages>/matplotlib/mpl-data/matplotlibrc

找到这一行:#font.family         : sans-serif

这一行可以不需要反注释掉,因为默认就是用sans-serif;

然后找到#font.sans-serif,把这一行反注释掉,然后把“WenQuanYi Zen Hei”加到第一个位置上;

上面说过建议用黑体,因为黑体是sans-serif字体,如果换个宋体加在这里是不合理的(虽然可能可行,但不合理,未试);

如果用宋体的话,建议把font.family换成serif,然后把宋体字加到font.serif里;

参考:

https://segmentfault.com/a/1190000005144275

https://www.zhihu.com/question/25404709

matplotlib解决中文乱码的更多相关文章

  1. 增加UBUNTU字符集 解决中文乱码问题

    对GBK,GB2312,GB18030字符集的支持是UBUNTU中文乱码的罪魁祸首,其实我们可以在保持UTF-8为默认编码的条件下添加对这几个编码的支持,以解决中文乱码问题. 我想这个问题肯定有其他人 ...

  2. Sublime Text 2—解决中文乱码

    Sublime Text 2是一个非常棒的代码及文本编辑器,绿色小巧.速度飞快,跨平台支持Win/Mac/Linux,支持32与64位,支持各种流行编程语言的语法高亮.代码补全等,有着许多其他编辑器没 ...

  3. zabbix解决中文乱码问题(没有测试成功)

    zabbix解决中文乱码问题 1.在windows系统中找一个自己喜欢的字体,这里我们用:msyh.ttf 2.将字体上传至/var/www/html/zabbix/fonts目录下 [root@za ...

  4. 【原创】通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: '\xF0...

    这篇blog重点在解决问题,如果你对字符编码并不是特别了解,建议先看看 < [原创]通俗易懂地解决中文乱码问题(1) --- 跨平台乱码 >. 当然,如果只是针对解决这个Mysql插入报错 ...

  5. Debian 6解决中文乱码

    DEBIAN下中文显示 一.首先检查LOCALE情况 说明:DEBIAN因为基于GNU所以,对不同地域进行了不同的包支持,以LOCALE形式存在. 1.挂载ISO文件包,前8个ISO包就可以(这里不在 ...

  6. 04_过滤器Filter_02_Filter解决中文乱码问题

    [过滤器解决中文乱码问题实例] [工程截图] [web.xml] <?xml version="1.0" encoding="UTF-8"?> &l ...

  7. Web---演示servlet技术(servlet生命周期),解决中文乱码问题

    本节讲解决中文乱码问题的4种方法. 还有更好的方法,也就是用过滤器,这里就不演示了,博主目前也不会~呼♪(^∇^*)~过段时间才会学. servlet生命周期演示: index.jsp: <%@ ...

  8. 通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 ‘incorrect string value: '\xF0...

    原文:[原创]通俗易懂地解决中文乱码问题(2) --- 分析解决Mysql插入移动端表情符报错 'incorrect string value: '\xF0... 这篇blog重点在解决问题,如果你对 ...

  9. 解决中文乱码( jsp表单提交中文时出现乱码)

    有三种方法: 1.建立一个filter中文解决乱码 2.Struts2在struts.xml中修改默认的编码设定 3.用Spring解决中文乱码 4.直接在jsp中修改解决 1.建立一个filter解 ...

随机推荐

  1. Linux的eth0,eth1,eth2,lo详解

    eth0,eth1,eth2……代表网卡一,网卡二,网卡三……lo代表127.0.0.1,即localhost 参考:Linux命令:ifconfig 功能说明:显示或设置网络设备 语 法:ifcon ...

  2. OAuth 2.0中文译本

    (一)背景知识 OAuth 2.0很可能是下一代的“用户验证和授权”标准,目前在国内还没有很靠谱的技术资料.为了弘扬“开放精神”,让业内的人更容易理解“开放平台”相关技术,进而长远地促进国内开放平台领 ...

  3. pc端页面打包成安卓apk

    一.phoneGap PhoneGap是一个采用HTML,CSS和JavaScript的技术,创建移动跨平台移动应用程序的快速开发平台.它使开发者能够在网页中调用IOS,Android,Palm,Sy ...

  4. vfd with stm8

    2018-01-14 22:50:26 之前写了pt6311的驱动,要做时钟考虑使用stm8做主控,于是乎将之前的驱动移植到stm8上. 顺带熟悉了stm8的操作2333. 上源码: #ifndef ...

  5. Codeforces 623D [Amazing概率题]

    很有趣的一道题吖! 做法:贪心+迭代 Sigma(i*(pr[i]-pr[i-1])))=n-sigma(pr[i]), 所以我们贪心地是pr[i]尽可能大. 也就是让pr[i]/pr[i-1]尽可能 ...

  6. Rafy 开源贡献中心 - 组织成立,并试运行一月小结

    背景 最近两年,工作中虽然大量使用了 Rafy 框架作为各个产品.项目的开发框架.我是 2015 年的年中加入现在这家公司的,由于我个人工作太忙的缘故,一直没怎么编码,Rafy 框架底层的核心成长也比 ...

  7. python笔记:#011#循环

    循环 目标 程序的三大流程 while 循环基本使用 break 和 continue while 循环嵌套 01. 程序的三大流程 在程序开发中,一共有三种流程方式: 顺序 -- 从上向下,顺序执行 ...

  8. SpringMVC解决跨域的两种方案

    1. 什么是跨域 2. 跨域的应用情景 3. 通过注解的方式允许跨域 4. 通过配置文件的方式允许跨域 1. 什么是跨域 跨域,即跨站HTTP请求(Cross-site HTTP request),指 ...

  9. CSS学习笔记二:css 画立体图形

    继上一次学了如何去运用css画平面图形,这一次学如何去画正方体,从2D向着3D学习,虽然有点满,但总是一个过程,一点一点积累,然后记录起来. Transfrom3D 在这一次中运用到了一下几种属性: ...

  10. ubuntu 命令整合2

    通配符 * 匹配任意多个字符 ?匹配一个任意字符 示例:ls *.txt  rm -rf *.txt 文本编辑器 vi.vim 格式:vi 文件名 编辑 vi的三种工作模式 正常模式(启动进入的模式) ...