Python 绘图中文乱码快速搞定
温馨提示:若页面不能正常显示数学公式和代码,请阅读原文获得更好的阅读体验。
作者:丁闪闪(连享会)
邮箱: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 绘图代码。要求:
- 我的系统是 Windows / Mac,请务必包含对应的
plt.rcParams设置以解决中文乱码和负号问题。- 导出图片时请使用
plt.savefig(..., dpi=300, bbox_inches='tight')。- 图表的标题、坐标轴标签请全部使用中文。
5. 小贴士:图片格式和质量
如果你打算将图表发布在 GitHub Pages、博客或公众号平台,请务必注意图片质量:
- 格式选 PNG:在网页和微信推文中,
.png的兼容性最好。 - 清晰度选 300 DPI:默认的绘图往往很模糊,在保存时设置
dpi=300,即便在手机端放大查看,文字依然锐利。 - 自动修剪边缘:添加
bbox_inches='tight'参数可以自动剪掉多余的白边,让图表在推文中排版更紧凑。
# 推荐的保存方式
plt.savefig('my_research_plot.png', dpi=300, bbox_inches='tight')
掌握了这几招,你就能专注于实证逻辑本身,不再为「豆腐块」乱码而烦恼。
6. 常见问题与排查
- 设置后仍然乱码:重启 Python 内核或重启编辑器,重新运行一遍设置代码。
- macOS 提示字体不存在:可将字体改为
Arial Unicode MS或PingFang SC。 - 负号依旧方块:检查是否遗漏了
plt.rcParams['axes.unicode_minus'] = False。
7. 相关推文
Note:产生如下推文列表的 Stata 命令为:
lianxh python 图 +, nocat md2
安装最新版lianxh命令:
ssc install lianxh, replace
- 张祖冲, 2025, disfit:随心所欲拟合各种常见分布函数-Python.
- 张逸林, 2025, 前因后果,一图了然:基于bnlearn的因果推理与Python实操.
- 张逸林, 2025, 手把手人工神经网络系列(二):卷积神经网络(CNN).
- 彭晴, 2026, Python绘图神器seaborn:直方图-密度图-小提琴图-热力图.
- 王卓, 2022, Python:绘制动态地图-pyecharts.
- 王烨文, 2025, Python:手绘风格的可视化图形.
- 连享会, 2021, Stata-Python交互-5:边际效应三维立体图示.
- 连小白, 2025, AI助手系列:借助AI工具复现高质量图形.
- 陈云菲, 2025, 新书推荐:《图解大模型》轻松上手 LLM!.
- 陈卓然, 2023, Python金融分析系列-2:数据可视化.
![]()
推荐课程:
资源共享
- 连享会资料 ……
- 在线视频:lianxh-class.cn
- Stata 33 讲,100 万+ 播放,Stata 入门必备,公开课
- 直击面板数据模型,10 万+ 播放,白话面板模型,公开课
- … more …
- 论文复现和数据
- 主题分类
- 热门推文
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)