当前位置: 首页 > article >正文

在 Ubuntu 使用 fonts-noto-cjk 设置 Matplotlib 支持中文的完整教程

在 Ubuntu 使用 fonts-noto-cjk 设置 Matplotlib 支持中文的完整教程

    • 1. 为什么需要配置中文字体?
    • 2. 安装 `fonts-noto-cjk`
      • 安装命令:
      • 检查字体安装是否成功
    • 3. 配置 Matplotlib 支持中文
      • 3.1 手动加载字体
      • 3.2 设置全局字体(可选)
        • 修改 Matplotlib 全局配置
    • 4. 清理字体缓存(解决配置问题)
    • 5. 常见问题与解决方法
      • 问题 1:找不到 `Noto Sans CJK` 字体
      • 问题 2:仍显示乱码或方块
      • 问题 3:路径错误
    • 6. 总结
      • 完整代码:

在使用 Python 的可视化库如 Matplotlib 绘图时,如果数据包含中文,经常会遇到中文显示为乱码或不显示的情况。这篇文章将详细介绍如何在 Ubuntu 系统中安装 fonts-noto-cjk 中文字体,并在 Matplotlib 中正确显示中文。


1. 为什么需要配置中文字体?

Matplotlib 默认使用的字体通常不支持中文,而中文内容会显示为方块或乱码。通过安装并配置支持中文的字体,如 Google 的开源字体 Noto Sans CJK,我们可以轻松解决这个问题。


2. 安装 fonts-noto-cjk

fonts-noto-cjk 是 Google 提供的高质量开源字体,支持中文、日文和韩文字符。在 Ubuntu 中安装非常简单:

安装命令:

打开终端,输入以下命令:

sudo apt update
sudo apt install fonts-noto-cjk

检查字体安装是否成功

安装完成后,使用以下命令检查字体是否成功安装:

fc-list | grep "Noto Sans CJK"

输出中应包含类似以下内容:

/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc: Noto Sans CJK SC

如果能看到上述结果,说明字体安装成功。


3. 配置 Matplotlib 支持中文

3.1 手动加载字体

通过 Matplotlib 的 font_manager.FontProperties 指定字体路径:

from matplotlib import font_manager
import matplotlib.pyplot as plt

# 设置字体路径
font_path = '/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc'  # 确保路径正确
font_prop = font_manager.FontProperties(fname=font_path)

# 测试中文显示
plt.title("测试中文显示", fontproperties=font_prop)
plt.xlabel("横轴", fontproperties=font_prop)
plt.ylabel("纵轴", fontproperties=font_prop)
plt.plot([1, 2, 3], [4, 5, 6])
plt.show()

运行以上代码后,你应该会看到正常显示的中文标题和坐标标签。


3.2 设置全局字体(可选)

如果不想每次都手动指定字体,可以将其配置为 Matplotlib 的全局字体。以下是方法:

修改 Matplotlib 全局配置
import matplotlib.pyplot as plt
from matplotlib import rcParams

# 设置全局字体
rcParams['font.sans-serif'] = ['Noto Sans CJK SC']  # 使用简体中文字体
rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 测试中文显示
plt.title("测试全局中文字体")
plt.xlabel("横轴")
plt.ylabel("纵轴")
plt.plot([1, 2, 3], [4, 5, 6])
plt.show()

通过这种方式,所有的 Matplotlib 图表都将默认使用指定的中文字体。


4. 清理字体缓存(解决配置问题)

如果你遇到字体未生效的情况,可以清理 Matplotlib 的字体缓存并重新加载:

rm -rf ~/.cache/matplotlib

运行上述命令后,重新运行代码,Matplotlib 将重新加载系统字体。


5. 常见问题与解决方法

问题 1:找不到 Noto Sans CJK 字体

确保字体已安装成功,运行以下命令检查:

fc-list | grep "Noto Sans"

如果没有结果,尝试重新安装字体:

sudo apt install fonts-noto-cjk
sudo fc-cache -fv

问题 2:仍显示乱码或方块

清理字体缓存后重新运行代码:

rm -rf ~/.cache/matplotlib

问题 3:路径错误

检查 NotoSansCJK-Regular.ttc 文件的实际路径:

fc-list | grep "NotoSansCJK"

确保路径正确后更新代码中的 font_path


6. 总结

通过安装 fonts-noto-cjk 字体并正确配置 Matplotlib,我们可以轻松解决中文显示问题。以下是完整代码的总结:

完整代码:

from matplotlib import font_manager
import matplotlib.pyplot as plt

# 设置字体路径
font_path = '/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc'
font_prop = font_manager.FontProperties(fname=font_path)

# 测试中文显示
plt.title("测试中文显示", fontproperties=font_prop)
plt.xlabel("横轴", fontproperties=font_prop)
plt.ylabel("纵轴", fontproperties=font_prop)
plt.plot([1, 2, 3], [4, 5, 6])
plt.show()

通过以上方法,Matplotlib 在 Ubuntu 系统中完美支持中文,再也不用担心乱码啦!希望这篇教程能帮到你,祝你绘图愉快! 🎉


http://www.kler.cn/a/419794.html

相关文章:

  • Ubuntu 20.04中的文件移动操作:详解与实用示例
  • Zookeeper集群数据是如何同步的?
  • TIE算法具体求解-为什么是泊松方程和傅里叶变换
  • linux模拟试题
  • 【Nacos01】消息队列与微服务之Nacos 介绍和架构
  • .NET 9 中 LINQ 新增功能实现过程
  • Makefile 入门指南:构建自动化编译流程
  • java 反射 详解
  • Ubuntu 20.04 下 ROS 工作空间的详解与应用
  • rustdesk远程桌面使用
  • Milvus Cloud 2.5:易用性飞跃,助力用户高效管理向量数据库
  • 一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库
  • 【k8s深入学习之 event 记录】初步了解 k8s event 记录机制
  • 【ROS2】Ubuntu22.04安装ROS humble
  • 网络诊断指南:网络故障排查步骤与技巧
  • iOS——MVC、MVP、MVVM
  • leetcode——二分法
  • 4.22CACHE计算
  • 如何在centos7 安装vscode软件教程(图文教程)
  • Meta Reality Labs的VR/AR投资战略转向:内部视角与市场影响
  • mysql数据库varchar截断问题
  • C# 编程效率提升指南:掌握算数运算、循环与方法封装
  • 【054A】基于51单片机指南针(LCD1602显示)【Keil程序+报告+原理图】
  • python创建临时文件
  • 爬虫—Scrapy 整合 ChromeDriver 实现动态网页拉取
  • oracle数据库的启动与关闭