matplotlib.pyplot画图显示中文
时间: 2025-05-29 12:51:54 浏览: 29
### Matplotlib 中文显示问题解决方案
在使用 `matplotlib.pyplot` 进行绘图时,中文无法正常显示是一个常见问题。以下是几种有效的解决方法:
#### 方法一:设置全局字体属性
可以通过修改 `rcParams` 来设置全局字体属性,确保支持中文字符。例如,假设系统中已经安装了 `'SimHei'` 字体,则可以按以下方式进行配置[^2]:
```python
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置默认字体为黑体
plt.rcParams['axes.unicode_minus'] = False # 解决负号 '-' 显示为方块的问题
```
此方法适用于整个脚本范围内的所有图表绘制操作。
#### 方法二:局部设置字体属性
如果仅需在特定情况下应用中文显示,可以在具体绘图命令中单独指定字体参数。例如:
```python
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 * np.pi, 200)
y = np.sin(x)
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_title("你好", fontsize=24, fontproperties='SimHei') # 局部设置字体
ax.set_xlabel("这是 X 轴标签", fontsize=14, fontproperties='SimHei')
plt.text(0.5, 0.5, '这是一段文本', fontdict={'family': 'SimHei', 'size': 16})
plt.show()
```
这种方法不会影响其他部分的默认样式设定[^3]。
#### 方法三:动态加载可用字体列表并选择合适的字体
有时可能不确定应该选用哪种具体的中文字体名称,或者希望程序具备一定的自适应能力。这时可通过遍历系统中存在的所有字体文件来找到适合的一种:
```python
from matplotlib.font_manager import FontManager
import subprocess
fm = FontManager()
mat_fonts = set(f.name for f in fm.ttflist)
output = subprocess.check_output('fc-list :lang=zh -f "%{family}\n"', shell=True).decode().splitlines()
available_chinese_fonts = list(set(output))
print("Available Chinese Fonts:", available_chinese_fonts)
if available_chinese_fonts:
selected_font = available_chinese_fonts[0]
else:
raise Exception("No suitable Chinese fonts found!")
plt.rcParams['font.sans-serif'] = [selected_font]
plt.rcParams['axes.unicode_minus'] = False
```
以上代码片段会尝试自动探测当前操作系统环境下存在的任何一种适配汉语环境渲染需求的字形资源,并将其绑定至后续作图流程当中去[^3]。
---
### 总结
无论是采取何种策略调整相关参数值以实现更好的国际化兼容效果,都需要提前验证目标机器之上确实存在对应类型的TrueType格式矢量图形描述数据集才行。如果没有预装必要的语言包组件的话,那么即便设置了再多合理的选项组合也无法达到理想的效果表现形式出来。
阅读全文
相关推荐



















