kimi:既然所有“官方方法”都试了仍然报错,那就采用 “硬替换” 策略——
把 Matplotlib 导出 PNG 时默认会调用的 “Arial” 字体文件,
直接替换/重定向到 SimHei(或任意中文字体)。
这一招 100 % 有效,适用于任何系统、任何缓存失效的情况。
✅ 一步到位:显式给 所有文本 指定字体(终极兜底)
在画图前,把 默认文本对象 的字体一次性改掉,覆盖 Matplotlib 的所有回退路径:
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 1️⃣ 用绝对路径拿到真正的 SimHei
zh_font = FontProperties(fname=r"C:\Windows\Fonts\simhei.ttf")
# 2️⃣ 全局覆盖:所有文本对象都用 SimHei
matplotlib.rcParams['font.family'] = 'sans-serif' # 必须
matplotlib.rcParams['font.sans-serif'] = [zh_font.get_name()] # 关键
matplotlib.rcParams['axes.unicode_minus'] = False