最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, scipy, matplotlib, jupyter)等进行一些初步的数据挖掘和分析。

在使用matplotlib画图时,横坐标为中文,但是画出的条形图横坐标总是显示“框框”,就去查资料解决。感觉这应该是个比较常见的问题,网上的中文资料也确实很多,但是没有任何一个彻底解决了我遇到的问题。零零碎碎用了快3个小时的时间,才终于搞定。特此分享,希望能帮到有同样问题的童鞋。

运行环境:

python2.7

Linux Centos7

用conda安装的matplotlib和pandas

问题:

matplotlib画图,无法显示中文

问题原因:

linux操作系统以及matplotlib的字体库中,没有可用的中文字体

matplotlib包默认只支持ASCII码,不支持unicode码

网上资料总结:

修改matplotlib的资源配置文件,例如增加"Simhei"字体(这个字体并不是所有的linux系统都有的好嘛!修改了并没有作用)

给linux安装中文字体,并修改matplotlib的资源配置文件。(呵呵,并没有作用)

解决方案:

其实也是综合了网上的各种解决方案。总体说来有以下几个步骤:

获取matplotlibrc文件所在路径。在jupyter notebook中获取:

import matplotlib

matplotlib.matplotlib_fname()

例如,我的这个文件在:

u'~/miniconda2/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc'

后续步骤会修改此文件中的font参数。

看看系统中的所有字体,以及可用的中文字体。也是在jupyter nb中:

from matplotlib.font_manager import FontManager

import subprocess

fm = FontManager()

mat_fonts = set(f.name for f in fm.ttflist)

print mat_fonts

output = subprocess.check_output(

'fc-list :lang=zh -f "%{family}\n"', shell=True)

print '*' * 10, '系统可用的中文字体', '*' * 10

print output

zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n'))

available = mat_fonts & zh_fonts

print '*' * 10, '可用的字体', '*' * 10

for f in available:

print f

做完上述操作,会发现“可用的字体”这里为空。因为没有中文字体给matplotlib用(所以才会中文都显示“框框”)

假设操作系统中没有中文字体。此时下载一个ttf中文字体,并在cenos中安装。要安装那种系统能检测font-family的,否则无效。我在这个网站下载的:http://font.chinaz.com/130130474870.htm

解压rar文件。在 /usr/share/fonts 路径下创建存放此字体的文件夹yourfontdir,并下载的ttf文件复制到yourfontdir中(可以给文件改个英文名,方便操作)

给cenos安装这个字体。

cd /usr/share/fonts/yourfontsdir

#生成字体索引信息. 会显示字体的font-family

sudo mkfontscale

sudo mkfontdir

#更新字体缓存:

fc-cache

修改matplotlibrc文件

修改步骤1中获取的matplotlibrc文件配置。

将font.family 部分注释去掉,并且在font.serif 支持字体加上一个中文字体。这里就加上刚才下载的中文字体的font-family. 可以通过 fc-list 命令查找一下(所以前面最好记下来)。我这里增加的是"WenQuanYi Zen Hei Mono"字体。

下面这句注释要去掉,不然中文减号也显示方块:

axes.unicode_minus : False

这一步骤最重要!为matplotlib增加中文字体

完成步骤5后,再操作步骤2,会发现“可用的中文字体”已经有了刚才安装的字体,但是画图仍然不能显示中文。这是因为你这个字体给centos安装了、也告诉matplotlib要用这个字体了,但是,matplotlib找不到这个字体的ttf文件啊。。。。所以需要给它弄一个。

将下载的ttf字体复制一份到以下路径:

~/miniconda2/lib/python2.7/site-packages/matplotlib/mpl-data/fonts/ttf

并删除相关cache。在以下路径:

~/.cache/matplotlib

删除其中与字体有关的cache

现在重新画个图试试。搞定。

参考资料:

python中文字体下载_解决Linux系统下python matplotlib中文字体显示问题相关推荐

  1. linux系统python截图不显示中文_Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题...

    本文主要向大家介绍了Linux运维知识之解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题,通过具体的内容向大家展现,希望对大家学习Linux运维知 ...

  2. python画图中文显示_解决Linux系统中python matplotlib画图的中文显示问题

    最近想学习一些python数据分析的内容,就弄了个爬虫爬取了一些数据,并打算用Anaconda一套的工具(pandas, numpy, scipy, matplotlib, jupyter)等进行一些 ...

  3. mysql中文问号 linux,解决Linux系统下Mysql数据库中文显示成问号的问题

    Linux系统下 MYSQL数据库中的数据库文件在本机内迁移 (需暂停服务的方式) Linux系统下 MYSQL数据库中的数据库文件在本机内迁移 本机采用Ubuntu16.04系统,tar方式安装My ...

  4. python pypcap 安装失败_解决Windows 10下python安装pypcap失败的问题

    先说结论,直接使用pcap-ct. 因为项目需求需要在windows下抓包,用python编程.所以就找相关的轮子.找到了三个: 1.pypcap(pip install pypcap) 2.libp ...

  5. 解决Linux系统中python matplotlib画图的中文显示问题

    解决Linux系统中python matplotlib画图的中文显示问题 参考文章: (1)解决Linux系统中python matplotlib画图的中文显示问题 (2)https://www.cn ...

  6. Linux系统下Python的下载与安装

    Linux系统下Python的下载与安装 1- 下载安装前准备 linux中需提前安装前置依赖环境 命令如下: yum install wget zlib-devel bzip2-devel open ...

  7. qt程序在Linux下字体乱了,解决linux/Ubuntu下Qt creater 界面程序在编译运行后无法显示中文或中文乱码问题!...

    本文解决的主要是界面程序编译运行后无法显示中文的问题,如果在creater 中无法输入中文,下载个IBus或者搜狗之类的中文输入法即可解决! 首先说乱码问题,这个很好解决: 如果是在linux下打开W ...

  8. 查看电脑python虚拟环境-手把手教你在Linux系统下使用Python虚拟环境

    点击上方" Python爬虫与数据挖掘 ",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夕阳无限好,只是近黄昏. /1 ...

  9. python下载opencv库_Window系统下Python如何安装OpenCV库

    关于OpenCV简介 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C ...

最新文章

  1. 听说这是互联网公司招工时忽悠的黑话? | 每日趣闻
  2. 【数字信号处理】线性常系数差分方程 ( 根据 “ 线性常系数差分方程 “ 与 “ 边界条件 “ 确定系统是否是 “ 线性时不变系统 “ 案例 | 根据 “ 线性时不变系统 “ 定义证明 )
  3. angr学习笔记(3)
  4. 低能量社交时代,我们都成了小心翼翼的「舔狗」
  5. 跨站点请求伪造(CSRF)总结和防御
  6. exe反编译_反编译Python生成exe软件(Py3-polySML)
  7. 68.iOS设备尺寸及型号代码(iPhoneXR/XS)
  8. 【英语学习】【English L06】U01 Breakfast L4 Drink Morning Tea
  9. ES索引管理工具curator安装
  10. 第二阶段第五次站立会议
  11. GridView控件常见问题及处理方法
  12. js代码 设为首页 加入收藏
  13. 第一次面试总结--中国电子科学研究院
  14. 海康sdk远程门禁_海康威视人脸门禁对接开发(一)调用设备篇
  15. win7计算机打开显卡设置在哪里,显卡设置在哪里打开【如何设置】
  16. python中的乘方_python乘方_python 乘方_python乘方符号 - 云+社区 - 腾讯云
  17. Mac自定义触控栏 Touch Bar的显示教程
  18. 快手正与NBA洽谈战略合作,涉及内容版权和商业化
  19. 第六场问题 B: Bumped!(Dijkstra + 优先队列优化)
  20. 自营、自营+平台、平台

热门文章

  1. 【前端】实现视频自定义字幕,中英文,彩色,你也可以
  2. python 解压zip 慢_Python解压ZIP、RAR等常用压缩格式的方法
  3. Python爬虫歌词及词频统计--(谢春花)
  4. Shopee发布Apple(苹果)品牌限售政策
  5. 欧国联 18/19 冰岛 vs 瑞士 分析
  6. 这样思考,你也可以变成有条理,有逻辑的人!
  7. ORA-01034: ORACLE not available如何解决
  8. [QualityCenter]QC是什么?发展历程是怎样?
  9. springboot+vue基本微信小程序的校园二手物品交易平台系统
  10. python opencv图片读入格式转换