skip to content
WangWindow

Search

    Matplotlib 基础使用指南:让图表支持中文显示 在数据可视化领域,Python 的 Matplotlib 是最经典、最广泛使用的绘图库之一。然而,许多初学者在使用 Matplotlib 绘制包含中文的图表时,常常会遇到中文显示为方框或乱码的问题。本文将带你从零开始,掌握 Matplotlib

    Matplotlib 基础使用指南:让图表支持中文显示

    / 5 min read

    Matplotlib 基础使用指南:让图表支持中文显示

    在数据可视化领域,Python 的 Matplotlib 是最经典、最广泛使用的绘图库之一。然而,许多初学者在使用 Matplotlib 绘制包含中文的图表时,常常会遇到中文显示为方框或乱码的问题。本文将带你从零开始,掌握 Matplotlib 的基本用法,并重点解决中文显示问题。


    一、安装与导入

    首先确保你已安装 Matplotlib:

    Terminal window
    pip install matplotlib

    然后在 Python 脚本中导入:

    import matplotlib.pyplot as plt

    二、解决中文显示问题

    Matplotlib 默认使用英文字体(如 DejaVu Sans),不支持中文字符。要正确显示中文,我们需要手动指定一个系统中已安装的中文字体。

    推荐配置方式

    # 配置 matplotlib 支持中文显示
    plt.rcParams["font.sans-serif"] = [
    "Sarasa Gothic SC", # 更纱黑体(开源、现代)
    "Noto Sans CJK SC", # 思源黑体(Google & Adobe 合作)
    "Microsoft YaHei", # 微软雅黑(Windows 常见)
    "WenQuanYi Micro Hei", # 文泉驿微米黑(Linux 常见)
    ]
    plt.rcParams["axes.unicode_minus"] = False # 正常显示负号(如 -1)

    💡 说明

    • font.sans-serif 是一个字体列表,Matplotlib 会按顺序尝试加载,直到找到系统中可用的字体。
    • axes.unicode_minus = False 确保负号(如坐标轴上的 -5)能正常显示,而不是变成方框。

    三、基础绘图示例

    下面是一个简单的折线图,展示中文标题和标签的效果:

    import matplotlib.pyplot as plt
    # 设置中文字体支持
    plt.rcParams["font.sans-serif"] = ["Sarasa Gothic SC", "Microsoft YaHei"]
    plt.rcParams["axes.unicode_minus"] = False
    # 示例数据
    months = ["1月", "2月", "3月", "4月", "5月", "6月"]
    sales = [120, 135, 150, 180, 210, 240]
    # 绘图
    plt.figure(figsize=(8, 5))
    plt.plot(months, sales, marker='o', linestyle='-', color='teal')
    plt.title("2025年上半年销售额趋势", fontsize=16)
    plt.xlabel("月份")
    plt.ylabel("销售额(万元)")
    plt.grid(True, linestyle='--', alpha=0.6)
    plt.tight_layout()
    plt.show()

    效果图(示意)

    截图 2025-11-17 12-33-24.png

    ✅ 图中标题、横纵坐标等中文均正常显示,无乱码。


    四、如何查看系统中可用的中文字体?

    如果你不确定系统里有哪些中文字体可用,可以运行以下代码列出所有支持中文的字体:

    from matplotlib.font_manager import FontManager
    import subprocess
    fm = FontManager()
    fonts = [f.name for f in fm.ttflist if 'SimSun' in f.name or 'Hei' in f.name or 'Song' in f.name or 'Microsoft' in f.name or 'Noto' in f.name or 'Sarasa' in f.name]
    print(set(fonts))

    或者更简单的方式(适用于 Linux/macOS):

    Terminal window
    fc-list :lang=zh

    五、常见问题排查

    问题原因解决方案
    中文显示为方框缺少中文字体或未正确配置安装字体(如思源黑体),并设置 rcParams
    负号显示异常unicode_minus 未关闭设置 plt.rcParams["axes.unicode_minus"] = False
    字体生效但样式丑默认字体不美观优先使用 Sarasa Gothic 或 Noto Sans CJK

    六、推荐中文字体清单

    字体名称特点适用平台
    Sarasa Gothic SC开源、等宽/比例可选、现代感强跨平台(需手动安装)
    Noto Sans CJK SCGoogle/Adobe 出品,覆盖全面跨平台(多数 Linux 自带)
    Microsoft YaHeiWindows 默认,清晰易读Windows
    WenQuanYi Micro Hei开源,Linux 友好Linux

    📌 小技巧:将 Sarasa Gothic SC 放在字体列表首位,可获得最佳视觉效果!


    七、结语

    通过简单的配置,我们就能让 Matplotlib 完美支持中文显示,大幅提升数据报告的专业性和可读性。记住关键两行代码:

    plt.rcParams["font.sans-serif"] = ["你的中文字体"]
    plt.rcParams["axes.unicode_minus"] = False

    从此告别乱码,轻松绘制中文图表!


    延伸阅读


    希望这篇指南对你有帮助!欢迎点赞、收藏、转发~