Matplotlib 绘图中文显示乱码,如何在 Windows 10 配置宋体字体?

文章导读
在 Windows 10 上配置 Matplotlib 显示宋体(SimSun)以解决中文乱码,主要有两种方法。一是代码临时设置,在脚本开头添加`plt.rcParams['font.sans-serif']=['SimSun']`和`plt.rcParams['axes.unicode_minus']=False`。二是永久配置,找到 Matplotlib 的 matplotlibrc 配置文件
📋 目录
  1. Matplotlib 中设置自定义中文字体的正确姿势
  2. 解决 win10 下 matplotlib 绘图时中文乱码问题 - JDWFFF - 博客园
  3. Matplotlib 配置--永久解决 python 画图中文乱码的问题
  4. Windows 环境下解决 Matplotlib 中文字体显示问题的详细教程
  5. FAQ
A A

在 Windows 10 上配置 Matplotlib 显示宋体(SimSun)以解决中文乱码,主要有两种方法。一是代码临时设置,在脚本开头添加`plt.rcParams['font.sans-serif']=['SimSun']`和`plt.rcParams['axes.unicode_minus']=False`。二是永久配置,找到 Matplotlib 的 matplotlibrc 配置文件(可通过`matplotlib.matplotlib_fname()`查看路径),将`font.family`设置为`SimSun`,或将宋体字体文件复制到 Matplotlib 的 fonts/ttf 目录下并刷新缓存。确保系统已安装宋体字体文件(通常位于 C:\Windows\Fonts)。

Matplotlib 中设置自定义中文字体的正确姿势

简介:【11 月更文挑战第 16 天】Matplotlib 默认不支持中文字体显示,需手动配置。方法包括:1) 修改全局字体设置,适用于整个脚本;2) 局部设置特定元素的字体;3) 使用系统字体名称,但可能因系统而异。通过这些方法可以有效解决中文乱码问题,确保图表中文本的正确显示。了解 Matplotlib 字体相关知识 Matplotlib 默认不支持中文字体显示,会出现中文乱码的情况。这是因为 Matplotlib 在渲染文本时,使用的字体库没有包含中文字体。Matplotlib 使用 rcParams 来控制各种默认参数,包括字体相关的参数。方法一:修改全局字体设置 (适用于整个脚本或笔记本) 步骤一:找到中文字体文件路径 首先需要确定你想要使用的中文字体文件的位置。在 Windows 系统中,字体文件通常位于 C:\Windows\Fonts 目录下;在 Linux 系统中,字体文件一般在/usr/share/fonts 或/usr/local/share/fonts 等目录下。步骤二:修改 rcParams 设置 假设你要使用宋体 (SimSun) 字体,并且字体文件路径为 C:\Windows\Fonts\simsun.ttc(这是在 Windows 系统下的路径示例)。在 Python 脚本或 Jupyter Notebook 的开头添加以下代码:import matplotlib.pyplot as pltfrom matplotlib.font_manager import FontProperties# 设置字体路径 font_path = 'C:\\Windows\\Fonts\\simsun.ttc'font = FontProperties(fname = font_path, size = 12)plt.rcParams['font.family'] = font.get_name() 这里首先导入了 plt(Matplotlib 的绘图模块) 和 FontProperties(用于管理字体属性)。然后指定了字体路径 font_path,并通过 FontProperties 创建了字体对象 font,其包含字体名称和大小等属性。最后,将 plt.rcParams['font.family'] 设置为该字体的名称,这样在整个脚本或笔记本中的所有图形绘制都会使用这个中文字体。

解决 win10 下 matplotlib 绘图时中文乱码问题 - JDWFFF - 博客园

解决 win10 下 matplotlib 绘图时中文乱码问题 先在 C:\Windows\Fonts 找到一种字体文件,如 Mircosoft YaHei UI 或者其他中文字体文件:2、将选中的字体文件放到 python 的安装目录下:我的是 D:\python37\Lib\site-packages\matplotlib\mpl-data\fonts\ttf,成功后会出现别的字体文件; 3、修改 python 安装目录下的 matplotlibrc 文件,一般位于:D:\python37\Lib\site-packages\matplotlib\mpl-data; 或者使用以下代码找到该文件:importmatplotlib matplotlib.matplotlib_fname() 用记事本打开 matplotlibrc 文件,并复制你在第一步里复制的中文字体文件,如:Microsoft YaHei,使用 ctrl+f 搜索 font.family: (1) 删除 font.family 前面的 # 并将冒号后面改为"Microsoft YaHei"; (2) 删除 font.sans-serif 前面的 # 并在冒号后面添加"Microsoft YaHei"修改完成后保存,将 python 关闭,重新启动运行程序即可。这个参考了 https://blog.csdn.net/zz_moon/article/details/80469753 的博客,也可以看看。最后试了下 好像不行 想到了解决办法再更。(该信息的时间戳是 2019 年 3 月 16 日)

Matplotlib 配置--永久解决 python 画图中文乱码的问题

在使用 Matplotlib 绘图时,常常会遇到中文乱码或负号显示为方块/横杠的问题。很多同学会在每个脚本里写:import matplotlib.pyplotasplt plt.rcParams['font.sans-serif']=['SimHei','Microsoft YaHei'] plt.rcParams['axes.unicode_minus']=False 运行项目并下载源码 虽然能临时解决,但每次都要手动加,十分繁琐。本文将教你如何一次配置、永久生效,让你在任何 Python 环境下都无需再写 rcParams,轻松输出优雅的中文图表。教程可直接跳转第三个内容 目录 1. 问题分析 2. 用户级 matplotlibrc 配置原理 配置步骤详解 3.1 查找用户配置目录 3.2 创建/编辑用户级 matplotlibrc 3.3 写入中文字体配置 3.4 清除字体缓存 3.5 验证配置效果 4. 注意事项 1. 问题分析 Matplotlib 默认字体 Matplotlib 自带一套开源字体 (DejaVu Sans、DejaVu Serif 等),保证在任何平台都有可用字体。但这些字体不包含大量中文字符,一旦你写了中文标题,绘制时就会回退到默认字体,导致乱码或缺字警告 (missing glyph)。临时设置 rcParams 在脚本开头临时修改 plt.rcParams,确实能让当前脚本正常显示中文。但每次都要手动写,难以维护,且在多人协作、Jupyter Notebook、自动化任务场景下更容易出错。系统级 vs 用户级配置 Matplotlib 支持全局 (系统级) 与用户 (个人级) 两层 matplotlibrc 配置文件。系统级:位于 Python 安装目录下,改动后可能被升级覆盖。用户级:位于用户家目录下,不随 Matplotlib 升级而变动,更安全可靠。

Matplotlib 绘图中文显示乱码,如何在 Windows 10 配置宋体字体?

Windows 环境下解决 Matplotlib 中文字体显示问题的详细教程

遇到的字体显示问题,我将为您详细介绍如何在 windows 系统下配置 matplotlib 以正确显示中文,并提供完整的解决方案。问题分析 常见的中文字体显示问题包括:中文字符显示为方框 报错:userwarning: findfont: font family 'simhei' not found 图表标题或标签乱码 解决方案详解 1.检查系统已安装字体 首先,我们需要确认系统中已安装的中文字体:1 2 3 4 5 6 7 8 9 10 11 12 13 import matplotlib.pyplot as plt import matplotlib #显示当前 matplotlib 使用的字体目录 print ( "字体缓存目录:" , matplotlib.get_cachedir()) print ( "字体配置文件路径:" , matplotlib.matplotlib_fname()) #列出所有可用字体 from matplotlib.font_manager import fontmanager for font in fontmanager.ttflist: if 'simhei' in font.name.lower() or 'ming' in font.name.lower() or 'kai' in font.name.lower(): print (f "字体名称:{font.name},路径:{font.fname}" ) 2.手动添加中文字体 (以 simhei 为例) 如果未找到中文字体,请按照以下步骤操作:步骤 1:安装字体 从网上下载 simhei 字体 (黑体) 文件 simhei.ttf 右键点击字体文件 ->为所有用户安装 步骤 2:更新 matplotlib 字体缓存 1 2 3 4 5 6 7 8 9 10 11 12 13 import matplotlib.pyplot as plt import shutil import matplotlib #获取 matplotlib 字体目录 font_dir = matplotlib.get_data_path() + "\\fonts\\ttf" #复制字体文件到 matplotlib 字体目录 (假设字体文件在 c:\windows\fonts\simhei.ttf) shutil.copy( "c:\\windows\\fonts\\simhei.ttf" , font_dir) #清除字体缓存 from matplotlib.font_manager import _rebuild _rebuild() 3.配置 matplotlib 使用中文字体 创建一个 python 脚本,内容如下:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import matplotlib.pyplot as plt from matplotlib.font_manager import fontproperties #设置中文字体和解决负号显示问题(截至 2025 年 7 月 14 日)

FAQ

为什么 Matplotlib 默认不支持中文?

Matplotlib 绘图中文显示乱码,如何在 Windows 10 配置宋体字体?

因为 Matplotlib 默认使用的字体库(如 DejaVu Sans)主要针对英文字符集优化,不包含中文字形数据。

配置后仍然乱码怎么办?

尝试清除 Matplotlib 字体缓存,或重启 Python 内核,确保字体名称填写正确。

Matplotlib 绘图中文显示乱码,如何在 Windows 10 配置宋体字体?

宋体字体文件在哪里找?

Windows 系统通常在 C:\Windows\Fonts 目录下,文件名为 simsun.ttc 或 simsun.ttf。