项目场景:
通过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没有相关的中文字体,因而在使用过程中无法显示中文。
解决方案:
提示:通过同步重建解决问题。或者通过引入字体属性模块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/
转载文章受原作者版权保护。转载请注明原作者出处!