关于Matplotlib作图时中文字体无法显示问题

项目场景:

通过Matplotlib作图时,遇到图表标签、标题中文字体显示不出来的问题。

问题描述

在使用Matplotlib作图时,设定字体为SimHei,但运行提示没发现这个字体,返回用DejaVu Sans来显示。DejaVu Sans字体无法显示中文。

import matplotlib.pyplot as plt

plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False

<img src="https://img-blog.csdnimg.cn/1410e4f76a5a40699748a877b4796b94.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5a2m5Lmg5ZCnfuaKgOacr-WCqOWkhw==,size_20,color_FFFFFF,t_70,g_se,x_16">

原因分析:

提示:一开始以为是系统字体问题,系统安装了字体后还是没解决。经查看是Matplotlib里没相关的中文字体。

一开始根据提示系统无该字体,就安装该字体。

我使用的是云服务器,安装了文泉驿黑字体,并将Matplotlib作图font.family设置为文泉驿黑。

但运行后中文字体还是显示不出来。

随后运行以下Python代码查看Matplotlib有哪些字体。

import matplotlib.pyplot as plt
from matplotlib import font_manager

for font in font_manager.fontManager.ttflist:
    print(font.name, '-', font.fname)

关于Matplotlib作图时中文字体无法显示问题

经查看系统中已安装的文泉驿黑字体不在列表里面。

故障问题可能是由于Matplotlib没有相关的中文字体,因而在使用过程中无法显示中文。

解决方案:

提示:通过同步重建解决问题。或者通过引入字体属性模块font_manager。

一、通过系统中字体同步到Matplotlib

目前是系统中有中文字体,但是Matplotlib中没有相关中文字体,只需要把系统中的中文字体同步到Matplotlib即可。

运行以下Python代码进行同步。

from matplotlib.font_manager import _rebuild

_rebuild()

再来Matplotlib作图时中文字体显示出来了。

该方法只适用于matplotlib是3+以下版本,因为3+及以上版本弃用_rebuild了。

二、通过使用字体属性模块

引入字体属性模块。

from matplotlib.font_manager import FontProperties

字体配置路径。

font = FontProperties(fname='/usr/share/fonts/truetype/arphic/wenquanyihei.ttc')

使用的话例如给图标标题设置标签。

ax.set_title("平方数",fontproperties=font)

Original: https://blog.csdn.net/qq_33765205/article/details/123437941
Author: 学习吧~技术储备
Title: 关于Matplotlib作图时中文字体无法显示问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/764216/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球