You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matplotlib无法渲染中文字符问题求助(Mac环境)

Matplotlib中文显示方框的解决方法(Mac OS Sonoma环境)

针对你在Mac OS Sonoma、Python 3.12、Matplotlib 3.8.4环境下遇到的中文显示为方框问题,以下是可行的解决方案:

一、临时指定字体(单次脚本生效)

直接在代码中配置Matplotlib使用Mac系统自带的中文字体(如苹方、思源黑体):

方法1:通过字体路径指定

import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

# 加载Mac自带的苹方字体
font = FontProperties(fname='/System/Library/Fonts/PingFang.ttc', size=12)

plt.title("例子", fontproperties=font)
plt.plot([1,2,3], [4,5,6], label="例子")
plt.legend(prop=font)  # 图例需单独设置字体
plt.show()

方法2:通过字体名称指定

先确认系统中Matplotlib能识别的中文字体名称,执行以下代码查看:

import matplotlib.font_manager as fm
for font in fm.fontManager.ttflist:
    if 'PingFang' in font.name or 'Source Han' in font.name:
        print(font.name)

找到名称后,在脚本开头配置:

import matplotlib.pyplot as plt

# 设置默认中文字体,替换为你查到的字体名称
plt.rcParams['font.sans-serif'] = ['PingFang SC']
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示为方块的问题

plt.title("例子")
plt.plot([1,2,3], [4,5,6], label="例子")
plt.legend()
plt.show()

二、永久配置(所有脚本生效)

如果不想每次写代码都配置,可修改Matplotlib全局配置:

  1. 找到配置文件目录:
import matplotlib
print(matplotlib.get_configdir())
  1. 在该目录下创建或编辑matplotlibrc文件,添加以下内容:
font.sans-serif: PingFang SC, Source Han Sans SC, SimHei
axes.unicode_minus: False

保存后,所有Matplotlib脚本都会默认使用中文字体。

为什么你之前的方法无效?

  • # -*- coding:utf8 -*-仅用于指定Python文件编码,和Matplotlib的字体渲染无关
  • pyplotz库对新版本Python/Matplotlib兼容性较差,已不再维护
  • Python 3默认字符串就是Unicode格式,添加u前缀没有实际作用

内容的提问来源于stack exchange,提问作者backtosq1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 23:52:14