WSL Ubuntu Python 研发 matplotlib 中文乱码设置修改脚本

使用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}")
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值