使用Windows WSL2内的Ubuntu系统开发,Python MATPLOTLIB 中文会有乱码,使用此脚本修改font:
import os
import platform
import matplotlib
import matplotlib.font_manager as fm
def setup_matplotlib_chinese_font():
"""
根据系统自动配置 matplotlib 中文字体
- Windows: Microsoft YaHei
- Linux(WSL): 使用 Windows 字体文件并注册到 matplotlib
返回: str (字体名或字体路径)
"""
system = platform.system()
# =========================
# Windows 原生
# =========================
if system == "Windows":
font_name = "Microsoft YaHei"
matplotlib.rcParams["font.family"] = "sans-serif"
matplotlib.rcParams["font.sans-serif"] = [font_name]
matplotlib.rcParams["axes.unicode_minus"] = False
return font_name
# =========================
# Linux / WSL
# =========================
if system == "Linux":
win_font_path = "/mnt/c/Windows/Fonts/msyh.ttc"
if not os.path.exists(win_font_path):
raise RuntimeError(
"Linux 环境未找到 Windows 字体文件:"
f"{win_font_path}"
)
# 注册字体到 matplotlib
fm.fontManager.addfont(win_font_path)
font_prop = fm.FontProperties(fname=win_font_path)
font_name = font_prop.get_name()
matplotlib.rcParams["font.family"] = "sans-serif"
matplotlib.rcParams["font.sans-serif"] = [font_name]
matplotlib.rcParams["axes.unicode_minus"] = False
return win_font_path
# =========================
# 其他系统
# =========================
raise RuntimeError(f"不支持的系统类型: {system}")



425

被折叠的 条评论
为什么被折叠?



