之前在Ubuntu下用matplotlib作图的时候发现无法正常显示中文,查了一番以后发现是Ubuntu系统和matplotlib库没有共同可显示的中文字体库的原因。用此文章的方法可以解决这一问题。

1.首先需要安装中文字体

git clone https://github.com/tracyone/program_font && cd program_font && ./install.sh

PS:文章中说需要删除matplotlib的缓存列表~/.cache/matplotlib/fontList.py3k.cache,但是在下并没有删,可能是这个原因导致之后文中的调用方法并没有起效而是换了一种。

2.将安装的ttf字体文件复制到matplotlib的字体文件夹中(安装的ttf文件一般在/use/share/fonts/MyFonts/目录下)

用matplotlib.matplotlib_fname()命令可以获取matplotlib的字体配置文件。比如在下的在如下位置/home/MyUserName/anaconda2/envs/tensorflow/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc.那么相应的字体目录在mpl-data/fonts/ttf下。

cp /use/share/fonts/MyFonts/*.ttf /your/path/to/mpl-data/fonts/ttf/

3.寻找matplotlib和Ubuntu都能用的中文字体 (原文源代码)

__author__ = 'Katherine'
from matplotlib.font_manager import FontManager
import subprocessfm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True)
output = output.decode('utf-8')
# print '*' * 10, '系统可用的中文字体', '*' * 10
# print output
zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n'))
available = mat_fonts & zh_fontsprint('*' * 10, '可用的字体', '*' * 10)
for f in available:print(f)

输出为(基本是刚安装的中文字体):

********** 可用的字体 **********
YouYuan
SimHei
YaHei Consolas Hybrid
FangSong
KaiTi
Microsoft YaHei
LiSu
Yahei Mono

4.配置matplotlib字体文件

上面提到字体文件为matplotlibrc文件,编辑此文件找到font.family, font.serif, font.sans-serif行,删除句首#,然后将上述可用字体添加进去并用 , 隔开。例如:font.family: YouYuan, SimHei, FangSong, ...

5.脚本中进行申明

import pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体,但在下运行的时候报了warning并没正常显示中文

改用此方法则可行:

from matplotlib.font_manager import FontProperties
chinese_font = FontProperties(fname='/usr/share/fonts/MyFonts/YaHei.Consolas.1.11b.ttf')
...
plt.text(x, y, display, fontsize=12, fontproperties=chinese_font)

font_manager的用法可用看这里

参考:

1.How to Let Matplotlib Display Chinese Correctly
3.https://monkey0105.github.io/posts/2016/Dec/15/matplotlib_chinese_display/#3rd,findavailableChinesefontsbothinmatplotlibandubuntu

Ubuntu下用matplotlib作图时显示中文相关推荐

  1. Python+matplotlib绘图时显示中文的设置方法

    封面图片:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: =================== 在使用Python+mat ...

  2. 关于Matplotlib作图时中文字体无法显示问题

    项目场景: 通过Matplotlib作图时,遇到图表标签.标题中文字体显示不出来的问题. 问题描述 在使用Matplotlib作图时,设定字体为SimHei,但运行提示没发现这个字体,返回用DejaV ...

  3. python用matplotlib作图时,x轴为时间轴,如何让x轴每隔几个点显示一次?

    用matplotlib作图时,x轴为时间轴,一共有365个点,如果让所有这些点都显示出来,x轴将变得拥挤不堪. 如何让x轴每隔比如20个点显示一次? 见如下代码:(如下代码使用了一份文件是已知的一年内 ...

  4. pandas 作图 统计_解决pandas 作图无法显示中文的问题

    最近开始使用 pandas 处理可视化数据,挖掘信息.但是在作图时遇到,无法显示中文的问题. 下面这段代码是统计 fujian1.csv 文件中 City 所在列中各个城市出现次数的代码.可是作图直方 ...

  5. python画图设置字体_【转】matplotlib画图时的中文设置

    采用matplotlib作图时默认设置下是无法显示中文的,例如编写如下python脚本, #-*- coding: utf-8 -*- from pylab import * t = arange(- ...

  6. python中文字体下载_Python在Matplotlib图中显示中文字体的操作方法

    1. 说明 本篇主要针对在Ubuntu系统中,matplotlib显示不了中文的问题,尤其是在无法安装系统字体的情况下,解决Python绘图时中文显示的问题. 2. 在系统中安装字体 $ fc-lis ...

  7. linux-man手册使用-ubuntu设置man帮助文档显示中文-man手册少章节

    linux-man手册使用-ubuntu设置man帮助文档显示中文-man手册少章节 man手册添加与安装 man命令基本介绍 修改man手册默认语言-显示中文 man手册添加与安装 发现系统中缺少很 ...

  8. python画图显示不了中文_Python使用matplotlib绘图无法显示中文问题的解决方法

    本文实例讲述了Python使用matplotlib绘图无法显示中文问题的解决方法.分享给大家供大家参考,具体如下: 在python中,默认情况下是无法显示中文的,如下代码: import matplo ...

  9. Ubuntu下使用搜狗输入法候选字显示乱码问题的解决

    Ubuntu下sogou输入法候选字显示乱码 Ubuntu下搜狗输入法候选字乱码   换了台电脑,重新装了虚拟机,输入法也得再重新装一装.之前在Ubuntu下使用搜狗输入法之前也没有出现过类似的候选字 ...

最新文章

  1. Linux last命令后面的时间
  2. 线程通信wait与notify
  3. 比赛一买香蕉问题---解题报告
  4. java代码=--数组复制
  5. 排序算法第三篇——归并排序
  6. NYOJ.904 search(二分查找,快速排序,结构体运用)
  7. 视频教程-【思科CCNA理论专题:9】-- ACL理论-思科认证
  8. selenium grid下载、原理、配置与使用(转载)
  9. MVC3.0+knockout.js+Ajax 实现简单的增删改查
  10. matlab量化股票基本面,获取数据 - MATLAB - 掘金量化
  11. 守望先锋--颜色参数
  12. 互金累计融资近千例 借贷行业融资数量居首位
  13. 扎克伯格的智能管家计划 需面临哪些挑战
  14. DZ先生怪谈国标之视音频文件检索
  15. debian linux 7 安装,Debian 7安装设置教程
  16. 【Scratch-外观模块】背景切换指令
  17. 研华PCI板卡开发(6)快速入门(6)属性列表
  18. W10 无法启动你的相机
  19. 有一家做BPM的公司叫K2,Gartner和IDC都说好!
  20. 安卓期末大作业——购物商城(源码+18页报告)

热门文章

  1. 平面上的点和直线上的点一样多
  2. 从 exe.config 读取appSettings 中的配置数据
  3. 8张图让你一步步看清 async/await 和 promise 的执行顺序
  4. 26. Intellij IDEA 启动项目ClassNotFoundException
  5. Linux tree命令
  6. 极客学院职业路径图课程视频下载-爬虫
  7. 澄清大数据存储——系统集成商篇
  8. sota如何创建作业及配置作业文件详解(章节5)
  9. 推荐一篇文章,感觉学完Iterator模式后应当读一读
  10. const、static、内部链接属性和外部链接属性整理