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

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


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

相关文章:

  • 代码随想录34 动态规划
  • Vue 3 30天精进之旅:Day 10 - Vue Router
  • 数据结构 前缀中缀后缀
  • 论文阅读:Realistic Noise Synthesis with Diffusion Models
  • CF 761A.Dasha and Stairs(Java实现)
  • python算法和数据结构刷题[2]:链表、队列、栈
  • LabVIEW调用Thorlabs的动态库进行开发
  • 【精选】AI Coding 新范式:Windsurf、Cursor、Coze齐上阵
  • 兔子的寿命有多长?
  • 数据库-mysql(基本语句)
  • 四十一:Web传递消息时的编码格式
  • Scala中条件守卫
  • 基于Matlab特征提取与浅层神经网络的数字图像处理乳腺癌检测系统(GUI界面+训练代码+数据集)
  • 架构07-从类库到服务
  • 最优质量运输概述(自用)——一、蒙日问题、Kantorovich问题
  • 数据结构 ——无头单链表
  • 装饰器—购物打折
  • 数据结构基础之《(11)—堆》
  • 【3D AIGC】Img-to-3D、Text-to-3D、稀疏重建(2024年文章汇总)
  • 【技术支持】关于html中移动端innerwidth的问题
  • 『MySQL 实战 45 讲』24 - MySQL是怎么保证主备一致的?
  • C++学习-类+对象+函数
  • 【oracle数据库提示oracle initialization or shutdown in process】
  • Spring完整知识点二
  • 17. Threejs案例-Three.js创建多个立方体
  • burpsuite(6)暴力破解与验证码识别绕过