matplotlib中库没有中文字体
时间: 2025-05-11 18:26:56 浏览: 30
### 解决 Matplotlib 不支持中文字体的方法
在处理 Matplotlib 的中文显示问题时,可以按照以下方法操作:
#### 查找 Matplotlib 字体库路径
首先需要查找 Matplotlib 的字体库位置以便后续添加自定义字体。通过运行以下 Python 脚本获取字体存储路径:
```python
import matplotlib.font_manager as fm
font_path = fm.findSystemFonts(fontpaths=None, fontext='ttf')
print(font_path)
```
这一步可以帮助确认当前系统的字体文件所在目录[^1]。
#### 添加中文字体至 Matplotlib
为了使 Matplotlib 支持中文字体,需将合适的中文字体文件(通常是 `.ttf` 文件)放置于系统字体目录或者直接指定给 Matplotlib 使用。以下是具体实现方式:
##### 方法一:复制 Windows 字体到 Linux 系统
对于 WSL 或其他跨平台环境,可以从 Windows 系统中的 `C:\Windows\Fonts` 目录下提取所需字体并将其链接或拷贝到 Ubuntu 的字体目录中。执行如下命令完成该过程:
```bash
mkdir -p ~/.fonts
cp /mnt/c/Windows/Fonts/simhei.ttf ~/.fonts/
fc-cache -fv
```
这里以黑体为例 (`simhei.ttf`) 进行说明;完成后记得刷新缓存以生效新加入的字体[^3]。
##### 方法二:修改 rcParams 参数配置
另一种更灵活的方式是在脚本内部动态调整 Matplotlib 的参数设置,从而无需更改全局配置即可应用特定字体。例如,在绘制图形前增加下面几行代码设定 SimHei 黑体作为默认字体:
```python
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False # 此句用于解决负号 '-' 显示异常的问题
```
上述语句会告诉 Matplotlib 使用名为 “SimHei” 的无衬线字体渲染文本,并修正可能存在的减号样式错误[^4]。
##### 方法三:直接加载外部 TTF 文件
当目标机器上缺少必要的中文字体资源时,还可以考虑临时导入网络上的免费开源字体包解决问题。比如下载思源宋体 (Source Han Serif),解压后利用 FontProperties 类显式声明其用途:
```python
from matplotlib.font_manager import FontProperties
fp = FontProperties(fname='/path/to/source-han-serif-Regular.otf')
plt.title('测试标题', fontproperties=fp)
```
以上三种途径均可有效应对不同场景下的需求差异,请依据实际条件选取最适配的一种实施部署。
---
阅读全文
相关推荐



















