文章目录
- 安装中文字体
- 在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图表中正常显示中文文本了。