python plt 不显示中文
时间: 2025-05-22 13:03:41 浏览: 22
### 如何在 Python Matplotlib Pyplot 中正确显示中文字符
为了使 `matplotlib` 正确显示中文字符,可以采取多种方法来配置字体设置。以下是几种有效的方式:
#### 方法一:修改全局字体参数
通过调整 `matplotlib` 的默认字体设置,可以让整个绘图环境中支持中文显示。
```python
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 使用黑体字[^1]
plt.rcParams['axes.unicode_minus'] = False # 解决负号 '-' 显示为方块的问题
```
这段代码设置了无衬线字体为 SimHei(即黑体),并关闭了 Unicode 负号处理以防止特殊符号无法正常渲染。
#### 方法二:利用 FontProperties 动态指定字体属性
对于特定图表中的文本部分,也可以单独定义其使用的字体样式而不影响其他地方的文字呈现效果。
```python
from matplotlib.font_manager import FontProperties
chinese_font = FontProperties(fname='/path/to/simhei.ttf') # 指定本地ttf文件路径[^2]
plt.title('这是一个测试标题', fontproperties=chinese_font)
plt.xlabel('X轴标签', fontproperties=chinese_font)
plt.ylabel('Y轴标签', fontproperties=chinese_font)
plt.show()
```
这里创建了一个名为 `chinese_font` 的对象用于存储自定义字体信息,并将其应用于各个需要的地方如标题、坐标轴名称等。
#### 完整示例程序展示
下面给出一段完整的例子,展示了如何综合运用上述两种技术实现高质量的中文图形输出:
```python
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 配置全局字体选项
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 创建一些随机数据点
data_x = range(6)
data_y = [np.random.randint(0, 10) for _ in data_x]
fig, ax = plt.subplots()
ax.plot(data_x, data_y, marker='o')
# 应用局部字体控制到具体元素上
title_font = FontProperties(size=16, weight='bold')
label_font = FontProperties(size=14)
ax.set_title('折线图示例', fontproperties=title_font)
ax.set_xlabel('横坐标', fontproperties=label_font)
ax.set_ylabel('纵坐标', fontproperties=label_font)
for tick_label in ax.get_xticklabels():
tick_label.set_fontproperties(label_font)
for tick_label in ax.get_yticklabels():
tick_label.set_fontproperties(label_font)
plt.grid(True)
plt.tight_layout()
plt.show()
```
此脚本不仅解决了中文乱码问题,还优化了整体视觉风格,使得生成的图像更加美观易读。
阅读全文
相关推荐


















