在 Ubuntu 中解决 Python 程序中 DataFrame 图表中文乱码问题

在使用 Python 的数据可视化库 Matplotlib 绘制图表时,常常会遇到中文乱码的问题,尤其是在 Ubuntu 等 Linux 系统中。这篇博文将指导你如何安装中文字体库,并在 Matplotlib 中正确配置使用这些字体,从而解决中文乱码的问题。

1. 安装中文字体库

首先,我们需要在 Ubuntu 中安装中文字体。可以选择常用的字体库,比如 Noto Sans CJKWenQuanYi Zen Hei。打开终端,运行以下命令:

bash

复制

复制代码
sudo apt update
sudo apt install fonts-noto-cjk
# 或者
sudo apt install fonts-wqy-zenhei

2. 更新字体缓存

安装完字体后,需要更新系统的字体缓存,以确保新安装的字体能够被识别。执行以下命令:

bash

复制

复制代码
fc-cache -fv

3. 配置 Matplotlib 使用中文字体

接下来,我们需要在 Python 脚本中配置 Matplotlib 以使用我们刚刚安装的中文字体。以下是一个示例代码,展示如何设置字体:

python

运行复制

复制代码
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm

# 指定字体路径
font_path = '/usr/share/fonts/truetype/noto/NotoSansCJK-Regular.ttc'  # 替换为实际路径
font_prop = fm.FontProperties(fname=font_path)

# 示例数据
plt.plot([1, 2, 3], [1, 4, 9])
plt.title('示例图表', fontproperties=font_prop)
plt.xlabel('横轴', fontproperties=font_prop)
plt.ylabel('纵轴', fontproperties=font_prop)
plt.show()

在上面的代码中,font_path 应替换为你系统中实际的字体文件路径。可以使用以下命令查找字体文件路径:

bash

复制

复制代码
fc-list : family | grep "Noto"
# 或者
fc-list : family | grep "WenQuanYi"

4. 更新 Matplotlib 配置

为了让 Matplotlib 记住这个字体设置,可以在 Matplotlib 的配置文件 matplotlibrc 中添加以下内容:

plaintext

复制

复制代码
font.family : sans-serif
font.sans-serif : Noto Sans CJK

5. 清除 Matplotlib 缓存

有时,Matplotlib 会缓存字体信息,导致字体更改不生效。可以通过以下命令清除缓存:

bash

复制

复制代码
rm -rf ~/.cache/matplotlib

6. 验证设置

运行上述代码,如果图表中的中文字符能够正常显示,说明配置成功。如果仍然出现乱码,请检查字体路径和文件是否存在,或者尝试其他字体文件。

结论

通过以上步骤,你可以在 Ubuntu 上成功解决 Python 程序中 DataFrame 图表的中文乱码问题。正确安装和配置中文字体是确保数据可视化正常显示的关键。希望这篇博文能为你提供帮助,让你在数据分析和可视化的过程中更加顺利!

相关推荐
疋瓞13 小时前
python和C++对比(1)_数据类型和数据结构
数据结构·c++·python
如此这般英俊14 小时前
手搓Claude Code-第六章 subagent
数据结构·人工智能·python·语言模型·自然语言处理
元Y亨H15 小时前
Python - FastAPI 全方位介绍
python·fastapi
艾莉丝努力练剑16 小时前
OpenCode AI 编程:Ubuntu 24.04 环境安装与使用指南
linux·服务器·网络·人工智能·tcp/ip·ubuntu
崇山峻岭之间16 小时前
Keil5输出hex转换为bin的设置
linux·运维·服务器
error:(17 小时前
【系统与实战双精通】VS Code 调试 ROS2 Python 节点与 Launch 系统指南
android·java·python
谷雪_65817 小时前
Linux 网络命名空间:从内核原理到企业级容器网络架构全景实战
linux·网络·架构
weigangwin17 小时前
LlamaIndex 第一次试用:别先写 RAG Demo,先验上下文合同
python·ai·agent·rag·检索·llamaindex·观测性
省四收割者17 小时前
一文详解信号完整性(1)
python·嵌入式硬件·数学建模·信息与通信·信号处理·智能硬件
Tian_Hang17 小时前
Eclipse Ditto 的权限策略
java·服务器·前端·网络·ide·ubuntu·eclipse