在 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 图表的中文乱码问题。正确安装和配置中文字体是确保数据可视化正常显示的关键。希望这篇博文能为你提供帮助,让你在数据分析和可视化的过程中更加顺利!

相关推荐
Sunhen_Qiletian7 分钟前
Python 类继承详解:深度学习神经网络架构的构建艺术
python·深度学习·神经网络
QiTinna8 分钟前
系统运维Day02_数据同步服务
linux·同步·rsync
阿猿收手吧!23 分钟前
【Linux网络】shutdown()与close()的区别
linux·网络
程序员大雄学编程30 分钟前
用Python来学微积分34-定积分的基本性质及其应用
开发语言·python·数学·微积分
LCG元33 分钟前
Linux 磁盘管理从入门到精通:LVM 扩容实战案例
linux
liu****35 分钟前
12.线程(二)
linux·开发语言·c++·1024程序员节
咯哦哦哦哦39 分钟前
vscode arm交叉编译 中 cmakeTools 编译器设置
linux·arm开发·vscode·编辑器
Q_Q5110082851 小时前
python+django/flask的莱元元电商数据分析系统_电商销量预测
spring boot·python·django·flask·node.js·php
林一百二十八1 小时前
Python实现手写数字识别
开发语言·python
Q26433650231 小时前
【有源码】基于Hadoop+Spark的起点小说网大数据可视化分析系统-基于Python大数据生态的网络文学数据挖掘与可视化系统
大数据·hadoop·python·信息可视化·数据分析·spark·毕业设计