Python Matplotlib中文显示乱码的完美解决方案
本文详细介绍Python Matplotlib库中中文显示为方框的原因及完美解决方案。通过扫描系统字体库并自动匹配支持中文的字体,只需调用set_matplot_zh_font()函数即可在绘图前正确设置中文字体,彻底解决中文乱码问题。
Matplotlib中文显示问题原因
原因与现象
Matplotlib是Python中功能强大的图表绘制库,但遗憾的是,其默认版本内置的字体库并不包含中文字体支持。因此,当绘图内容中包含中文时,系统无法正确渲染,导致中文字符显示为方框或乱码。
中文显示解决方案
解决办法
目前存在一种较为完善的解决方案:通过扫描Matplotlib自带的字体库以及操作系统中的系统字体库,查找能够支持中文字体的选项。如果找到符合条件的中文字体,则将其中的第一个字体设置为Matplotlib的默认字体。
实现代码与字体扫描逻辑
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontManager
from pylab import mpl
import subprocess
def get_matplot_zh_font():
fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)
output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True)
zh_fonts = set(f.split(',', 1)[0] for f in output.split('\n'))
available = list(mat_fonts & zh_fonts)
print '*' * 10, '可用的字体', '*' * 10
for f in available:
print f
return available
def set_matplot_zh_font():
available = get_matplot_zh_font()
if len(available) > 0:
mpl.rcParams['font.sans-serif'] = [available[0]] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
在绘图代码执行之前,只需调用set_matplot_zh_font()函数即可完成中文字体的设置,无需手动配置复杂的字体路径。
设置效果展示
效果
具体效果如下图所示:

以上所述是小编给大家介绍的Python Matplotlib中文显示完美解决方案详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













