解决Matplotlib在linux环境下中文乱码问题

前言

Matplotlib中的有些字体是不支持中文的,所以需要对其进行指定可以支持中文的字体。

本文参考:http://zhishichong.com/article/107996

正文

查询可用字体

linux命令查询中文可用字体

>fc-list :lang=zh -f "%{family}\n"
Source Han Serif SC,思源宋体,Source Han Serif SC ExtraLight,思源宋体 ExtraLight
Source Han Serif SC,思源宋体,Source Han Serif SC Light,思源宋体 Light
Source Han Serif SC,思源宋体,Source Han Serif SC Medium,思源宋体 Medium
Source Han Serif SC,思源宋体

python代码

from matplotlib.font_manager import FontManager
import subprocess

fm = FontManager()
# 列出所有ttf字体
mat_fonts = set(f.name for f in fm.ttflist)

# 列出系统支持的中文字体
output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True)
output = set([x.split(",", 1)[0] for x in output.decode().split('\n')])

# 输出可用的中文字体
print(mat_fonts & output)

加载本地可用字体

参考:Matplotlib使用otf

font_path = './fonts/[思源黑体_Heavy]SourceHanSansSC-Heavy-2.otf'
axs[x][y].set_title(title, fontsize=13,fontproperties=fm.FontProperties(fname=font_path))

你可能感兴趣的:(专栏12-可视化,matplotlib,python)