
雨夜思念为您分享以下优质知识
要在 `matplotlib` 中正确显示汉字,可通过以下两种方式实现:
一、全局设置字体
通过修改全局参数 `font.sans-serif` 和 `axes.unicode_minus`,可使所有图表元素(如标题、坐标轴标签)显示中文。
```python
import matplotlib.pyplot as plt
import numpy as np
设置中文字体为黑体
plt.rcParams['font.sans-serif'] = ['SimHei']
解决负号显示为方块的问题
plt.rcParams['axes.unicode_minus'] = False
示例数据
x = np.linspace(-2, 2, 100)
plt.plot(x, x, label='一次函数')
plt.plot(x, x 2, label='二次函数')
plt.plot(x, x 3, label='三次函数')
添加标签和标题
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.title('函数图像示例')
显示图例
plt.legend()
显示图形
plt.show()
```
注意事项:
1. 若系统中未安装黑体,需先安装该字体或选择其他支持中文的字体(如宋体 `SimSun`、Arial Unicode MS 等);
2. 修改 `font.sans-serif` 时,需将字体名称用英文括起来,并用逗号分隔。
二、局部设置字体(针对单个图表)
使用 `fontproperties` 参数为特定元素(如标题、坐标轴标签)指定字体。
```python
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.font_manager import FontProperties
示例数据
x = np.linspace(-2, 2, 100)
plt.plot(x, x, label='一次函数')
plt.plot(x, x 2, label='二次函数')
plt.plot(x, x 3, label='三次函数')
创建标题属性
title_font = FontProperties(fname="/path/to/your/font.ttf") 替换为字体文件路径
plt.title("函数图像示例", fontproperties=title_font)
添加坐标轴标签
plt.xlabel('x轴', fontproperties=title_font)
plt.ylabel('y轴', fontproperties=title_font)
显示图例
plt.legend()
显示图形
plt.show()
```
注意事项:
1. 需指定系统中存在的字体文件路径(如 `SimHei.ttf`),不同系统路径可能不同;
2. 此方法仅影响当前图表,关闭后需重新设置。
三、系统级配置(适用于所有用户)
若需永久解决字体问题,可修改 `matplotlibrc` 配置文件。
Windows:
- 路径:`%Python_Home%Libsite-packagesmatplotlibmpl-datamatplotlibrc`
- 修改内容:
```
font.family: AR PL UMing CN, SimHei, sans-serif
axes.unicode_minus: False
```
- 示例:在 `font.sans-serif` 行添加 `AR PL UMing CN`(宋体)和 `SimHei`(黑体)。
macOS:
- 编辑 `matplotlibrc` 文件(路径可通过 `matplotlib.matplotlib_fname()` 获取)
- 修改内容:
```
font.family: Arial Unicode MS, sans-serif
axes.unicode_minus: False
```
- 示例:在 `font.sans-serif` 行添加 `Arial Unicode MS`。
四、补充说明
若使用 Jupyter Notebook,建议在代码开头添加:
```python
%matplotlib inline
```
或者设置配置文件:
```python
import matplotlib
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['axes.unicode_minus'] = False
```
部分字体(如 `SimHei`)可能受系统字体缓存影响,修改后需重启 Python 或 Jupyter Notebook。
通过以上方法,可灵活实现图表中汉字的显示。