¥¥%%%%%Ubuntu下用matplotlib作图时显示中文###重点第5条可以用!!!!%%%%%

前端之家收集整理的这篇文章主要介绍了¥¥%%%%%Ubuntu下用matplotlib作图时显示中文###重点第5条可以用!!!!%%%%%前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Ubuntu下用matplotlib作图时显示中文

之前在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__ = @H_403_38@'Katherine'
from matplotlib.font_manager import FontManager
import subprocess

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

output = subprocess.check_output(
    @H_403_38@'fc-list :lang=zh -f "%{family}\n@H_403_38@"',shell=True)
output = output.decode(@H_403_38@'utf-8')
# print '*' * 10,'系统可用的中文字体','*' * 10
# print output
zh_fonts = set(f.split(@H_403_38@',',1)[0] for f in output.split(@H_403_38@'\n@H_403_38@'))
available = mat_fonts & zh_fonts

print(@H_403_38@'*' * 10,@H_403_38@'可用的字体',@H_403_38@'*' * 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[@H_403_38@'font.sans-serif'] = [@H_403_38@'SimHei'] #指定默认字体,但在下运行的时候报了warning并没正常显示中文

改用此方法则可行:

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

猜你在找的Ubuntu相关文章