matplotlib 中文字体不显示
时间: 2025-07-04 13:04:24 浏览: 13
### 解决 Matplotlib 中文字体不显示的问题
在 Python 数据可视化领域,Matplotlib 是一个非常强大的工具。然而,默认情况下它并不支持中文字符的显示,这可能导致绘图中的中文标签、标题或其他文本出现乱码或空白的情况。
以下是几种常见的解决方案:
#### 方法一:通过 `rc` 参数设置全局字体
可以通过修改 Matplotlib 的全局参数来指定支持中文的字体。例如,使用微软自带的微软雅黑(Microsoft YaHei)作为默认字体:
```python
import matplotlib.pyplot as plt
import matplotlib
# 设置全局字体为微软雅黑
matplotlib.rc('font', family='Microsoft YaHei')
plt.plot([1, 2, 3], [4, 5, 6])
plt.title("测试标题") # 测试中文显示
plt.show()
```
这种方法简单易用,适用于大部分 Windows 用户[^1]。
---
#### 方法二:手动加载本地字体文件
如果系统中缺少所需的字体或者需要更高的灵活性,可以手动加载 TTF 字体文件并应用到 Matplotlib 图形中。具体步骤如下:
1. **找到 Matplotlib 的字体缓存路径**
使用以下代码获取 Matplotlib 的字体存储位置:
```python
import matplotlib as mpl
print(mpl.get_cachedir())
```
2. **将所需字体复制到该目录下**
将支持中文的 `.ttf` 文件(如 SimSun.ttc 或 MicrosoftYaHei.ttf)放置到上述路径下的 `fonts/ttf/` 子目录中。
3. **更新 Matplotlib 配置**
加载新字体后,重新启动程序即可生效。也可以动态刷新字体列表:
```python
from matplotlib.font_manager import FontManager
fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)
print(mat_fonts) # 查看当前可用字体名称
```
此方法适合于跨平台开发环境,尤其是 Linux 和 macOS 系统用户[^2]。
---
#### 方法三:临时更改单张图表的字体属性
如果不希望影响整个项目的默认样式,可以在绘制某一张图表时单独调整其字体设置。例如:
```python
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.set_title("示例标题", fontproperties="SimHei", fontsize=14) # 使用 SimHei 黑体
ax.text(0.5, 0.5, "示例正文", fontproperties="KaiTi", fontsize=12) # 使用 KaiTi 楷体
plt.show()
```
这里需要注意的是,`fontproperties` 可接受字符串形式的字体名或预定义的对象实例[^3]。
---
#### 方法四:检查系统已安装字体
有时问题并非来自配置错误,而是因为目标设备未安装必要的中文字体包。此时可通过以下方式确认本机支持哪些字体:
```python
from matplotlib.font_manager import findSystemFonts, FontProperties
# 列举所有系统字体
for font in sorted(findSystemFonts()):
try:
prop = FontProperties(fname=font)
print(prop.get_name(), font)
except Exception:
pass
```
一旦发现缺失关键资源,则需下载对应版本并完成安装后再试[^4]。
---
### 总结
以上四种途径均可有效应对 Matplotlib 显示中文失败的现象,实际选用哪种取决于个人偏好以及项目需求。通常推荐优先尝试第一种通用做法;而对于特殊场景则考虑其他替代策略组合运用。
阅读全文
相关推荐


















