文章目录
- 安装中文字体
 - 在Matplotlib中使用该字体来显示中文
 
在 Linux 系统中使用 Matplotlib 绘制图表时,如果需要显示中文,可能会遇到中文字符显示为方块或者乱码的问题。这是因为Matplotlib 默认使用的字体不支持中文。本文手把手带你解决这个问题。
安装中文字体
要在Linux系统中安装simhei.ttf(黑体字体文件),你可以按照以下步骤操作:
-  
下载字体文件:首先,你需要获取
simhei.ttf文件。如果手头没有这个文件,可以从一个可信的来源下载。 -  
创建字体目录(如果你还没有合适的目录):
如果你希望为当前用户安装字体,可以在主目录下创建一个.fonts目录(如果它还不存在的话)。对于系统级别的安装,则需要将字体文件放置在系统的字体目录中,比如/usr/share/fonts/。-  
对于个人使用:
mkdir -p ~/.fonts -  
对于系统范围内使用(可能需要管理员权限):
sudo mkdir -p /usr/share/fonts/truetype/simhei 
 -  
 -  
复制字体文件:
-  
对于个人使用,将
simhei.ttf文件复制到~/.fonts/目录下:cp path/to/simhei.ttf ~/.fonts/ -  
对于系统范围使用,将
simhei.ttf文件复制到创建的系统字体目录中(例如/usr/share/fonts/truetype/simhei/),这可能需要管理员权限:sudo cp path/to/simhei.ttf /usr/share/fonts/truetype/simhei/请确保替换
path/to/simhei.ttf为你实际的simhei.ttf文件路径。 
 -  
 -  
更新字体缓存:
安装完字体后,需要更新系统的字体缓存以使新字体生效。-  
对于个人使用的字体:
fc-cache -f -v ~/.fonts/ -  
对于系统范围的字体安装:
sudo fc-cache -f -v 
 -  
 -  
验证安装:
你可以通过列出所有已安装的中文支持字体来检查simhei是否已经成功安装并被识别:fc-list :lang=zh在输出列表中寻找包含“SimHei”或“黑体”的行,确认字体已正确安装。
 
完成这些步骤之后,你的系统就安装了simhei.ttf字体,并且可以在应用程序如Matplotlib中使用该字体显示中文。记得在Matplotlib中设置正确的字体名称(如SimHei)以便利用这个新安装的字体。
在Matplotlib中使用该字体来显示中文
安装完simhei.ttf字体并确保系统已更新字体缓存后,你可以在Matplotlib中使用该字体来显示中文。以下是具体的步骤和示例代码:
-  
确认字体名称:在Linux系统中安装新字体之后,建议先确认一下字体的确切名称。可以通过以下命令查看:
fc-list :lang=zh -f "%{family}\n"在输出中找到类似“SimHei”或“黑体”的条目。注意字体名称的准确拼写(包括大小写)。
 -  
修改Matplotlib配置以使用新字体:你可以通过几种方式来指定Matplotlib使用
SimHei字体显示中文。-  
临时设置:在脚本中直接设置字体属性,这适用于仅想在特定图表中使用中文的情况。
import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties# 如果你知道字体的确切名称,可以直接在这里设置 font = FontProperties(fname="/usr/share/fonts/truetype/simhei/simhei.ttf") # 根据实际路径调整plt.title('这是一个测试标题', fontproperties=font) # 标题使用中文 plt.xlabel('X轴标签', fontproperties=font) # X轴标签使用中文 plt.ylabel('Y轴标签', fontproperties=font) # Y轴标签使用中文 plt.rcParams['axes.unicode_minus'] = False # 正常显示负号plt.plot([0, 1, 2], [0, 1, 4]) plt.show() -  
全局设置:如果你想对所有的图表都应用相同的字体设置,可以修改matplotlib的配置文件(
matplotlibrc)或者直接在代码中设置默认字体属性。import matplotlib.pyplot as pltplt.rcParams['font.family'] = 'SimHei' # 假设"SimHei"是你的字体名称,请根据实际情况替换 plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题plt.title('这是一个测试标题') # 现在应该能正常显示中文了 plt.xlabel('X轴标签') plt.ylabel('Y轴标签')plt.plot([0, 1, 2], [0, 1, 4]) plt.show() 
 -  
 
请确保根据你之前确认的字体名称调整上述代码中的font.family或FontProperties参数。如果你按照前面提到的方法正确安装了字体,并且提供了正确的字体路径或名称,那么现在你应该能够在Matplotlib图表中正常显示中文文本了。
 