温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。

作者:丁闪闪(连享会)
邮箱lianxhcn@163.com

Title:Python 绘图中文乱码快速搞定
Keywords:Python 绘图,Matplotlib,中文乱码,可视化, SimHei, 微软雅黑, 黑体

数据可视化是数据分析和实证分析的关键步骤。然而,很多同学在使用 AI 生成 Python 绘图代码时,往往会卡在最后关头:

代码运行完美,生成的图表却满屏都是方框(俗称「豆腐块」)。原本清晰的「收益率」变成了「□□□」,本该展示负值趋势的减号 - 也变成了乱码。

1. 为什么会出现中文乱码?

原因很简单:Python 最常用的绘图库 Matplotlib 默认调用的是英文环境下的字体(如 DejaVu Sans)。这些字体库中并不包含汉字的点阵信息。

当 AI 为你写代码时,它通常只会完成绘图逻辑。如果你不明确告知你的操作系统(Windows 或 Mac),它给出的通用代码在中文环境下几乎必然「翻车」。

2. 核心解决方案:针对性「止痛药」

对于绝大多数同学来说,你不需要复杂的兼容性设置。根据你目前的电脑系统,直接将下面对应的代码块粘贴到 import 语句之后即可。

A. Windows 用户(最常用)

Windows 系统自带了「黑体」(SimHei),两行代码即可搞定。

import matplotlib.pyplot as plt

# 1. 设置中文字体为黑体
plt.rcParams['font.sans-serif'] = ['SimHei']

# 2. 解决负号 '-' 显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False

B. macOS 用户

Mac 系统推荐使用「华文黑体」(STHeiti),显示效果非常细腻。

import matplotlib.pyplot as plt

# 1. 设置中文字体为华文黑体
plt.rcParams['font.sans-serif'] = ['STHeiti']

# 2. 解决负号 '-' 显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False

3. 进阶:跨平台通用设置

如果需要编写一份既能在自己电脑运行,又能让合作者(不同系统)直接使用的通用性代码,建议使用以下跨平台通用配置

import matplotlib.pyplot as plt

def set_ch_style():
    # 解决负号乱码
    plt.rcParams['axes.unicode_minus'] = False
    
    # 定义字体备选名单:按顺序自动匹配,谁有就用谁
    plt.rcParams['font.sans-serif'] = [
        'Microsoft YaHei',  # Windows: 微软雅黑
        'SimHei',           # Windows: 黑体
        'Arial Unicode MS', # macOS: 通用中文字体
        'Heiti SC',         # macOS: 华文黑体
        'sans-serif'        # 保底方案
    ]

# 执行初始化
set_ch_style()

4. 驯服 AI:如何给 AI 发指令?

在向 ChatGPT 或 Claude 索要绘图代码时,为了避免反复修改,请在提示词中加入这一段「金句」。

提示词模板:

请帮我写一段 Python 绘图代码。要求:

  1. 我的系统是 Windows / Mac,请务必包含对应的 plt.rcParams 设置以解决中文乱码和负号问题。
  2. 导出图片时请使用 plt.savefig(..., dpi=300, bbox_inches='tight')
  3. 图表的标题、坐标轴标签请全部使用中文。

5. 小贴士:图片格式和质量

如果你打算将图表发布在 GitHub Pages、博客或公众号平台,请务必注意图片质量:

  • 格式选 PNG:在网页和微信推文中,.png 的兼容性最好。
  • 清晰度选 300 DPI:默认的绘图往往很模糊,在保存时设置 dpi=300,即便在手机端放大查看,文字依然锐利。
  • 自动修剪边缘:添加 bbox_inches='tight' 参数可以自动剪掉多余的白边,让图表在推文中排版更紧凑。
# 推荐的保存方式
plt.savefig('my_research_plot.png', dpi=300, bbox_inches='tight')

掌握了这几招,你就能专注于实证逻辑本身,不再为「豆腐块」乱码而烦恼。

6. 常见问题与排查

  1. 设置后仍然乱码:重启 Python 内核或重启编辑器,重新运行一遍设置代码。
  2. macOS 提示字体不存在:可将字体改为 Arial Unicode MS 或 PingFang SC
  3. 负号依旧方块:检查是否遗漏了 plt.rcParams['axes.unicode_minus'] = False

7. 相关推文

Note:产生如下推文列表的 Stata 命令为:
  lianxh python 图 +, nocat md2
安装最新版 lianxh 命令:
  ssc install lianxh, replace

推荐课程:

资源共享

温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐