0

Matplotlib绘制图表中文字符不能正常显示问题解决一例

Posted by loong on 2019/09/21 in Python |

matplotlib是最流行的python数据可视化绘图库,官方网站对matplotlib的介绍如下:

Matplotlib is a Python 2D plotting library which produces publication quality figures in a variety of hardcopy formats and interactive environments across platforms.

matplotlib的强大和流行就不用再多说了,但是大部分中文用户在使用matplotlib时遇到的第一个问题都是绘制出的图表中汉字显示乱码的问题,例如以下代码:

import matplotlib.pyplot as plt

squares = [1,4,9,16,25]

plt.plot(squares)

plt.title(‘平方数’)

plt.show()

绘制出的图表中中文字符显示成了一个个小方格,根本无法阅读。Matplotlib绘制图表中文字符不能正常显示问题解决一例网上有很多解决该问题的文章,但很多却帮助不大,在此记录一下查阅了很多资料后亲自动手解决的过程,老规矩,一是作为个人备忘,如果能对同样遇到matplotlib绘制出的图表中汉字显示乱码的朋友有所帮助则更好。微信扫一扫文末二维码,关注 Loong精选 自媒体矩阵,好玩又长知识,总有你喜欢的!

 

matplotlib绘制出的图表中汉字显示乱码的根本原因是matplotlib自带的默认字体不支持中文字符。因此,只要用matplotlib能接受的方式提供给matplotlib可支持中文字符的字体即可解决绘制出的图表中汉字显示乱码的问题。

windows操作系统中所有可用字体文件都在目录“C:\Windows\Fonts”下,哪些字体支持中文也一目了然,选择你想要使用的中文字体,记住该字体的文件名(文件名可通过文件属性查看)。

对于linux类操作系统,所有可用字体可以使用命令“fc-list”列出,哪些字体支持中文可以使用命令“fc-list :lang=zh”查看(注意冒号前的空格)。

更多linux系统类相关文章

 

注意!matplotlib只识别ttf(TrueTypeFont)格式的字体文件,ttc(TrueType Collection)格式不能识别,查看当前系统环境中matplotlib可用的字体文件的python代码如下:

from matplotlib import font_manager as fm

matplotlib.font_manager.findSystemFonts(fontext=’ttf’)

下文以windows系统下使用微软雅黑字体为例记录解决matplotlib绘制出的图表中汉字显示乱码的方法。

 

import matplotlib.pyplot as plt

from matplotlib import font_manager as fm

squares = [1,4,9,16,25]

font_file = ‘C:\\Windows\\Fonts\\msyh.ttf’

prop = fm.FontProperties(fname=font_file)

plt.plot(squares,lineWidth=5)

plt.title(‘平方数’,fontproperties=prop)

plt.show()

以上代码通过显式指定中文字体文件的方式实现了对中文字体的正处显示。Matplotlib绘制图表中文字符不能正常显示问题解决一例

网上还有更改matplotlib配置文件或者在代码中传递初始化参数等方法来使用支持中文字符的字体,Loong精选没有亲测,希望用过的朋友们留言交流!


想更便捷的免费收到本站为你准备的精彩内容?

赶快微信扫一扫微信二维码(或直接添加微信ID:loong_1688)关注我们的微信公众号吧!我们一起享受精彩的移动互联网生活!!!

微信公众号“Loong精选(ID:Loong_1688)



标签:, , , ,

欢迎留下您的评论,谢谢!

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Copyright © 2012-2019 blog of loong All rights reserved.