matplotlib 中文乱码的解决方法

关于报错信息

Glyph 26426 missing from current font.
这个错误的原因是:本地没有可支持中文字体显示的配置文件,所以第一步需要先去下载相关的配置文件。

下载链接

https://www.wfonts.com/font/simhei

我们需要使用里面的 SimHei.ttf 文件

查找 matplotlib 的字体库

>>> import matplotlib
>>> print(matplotlib.matplotlib_fname())
/root/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/matplotlibrc

注意:
	这里路径的指向是 matplotlib 的配置文件,字体库在同级目录 mpl-data 下 fonts/ttf 文件夹,我们可以将准备好的 SimHei.ttf 拷贝到 fonts/ttf/ 目录下。

代码中的使用

import matplotlib.pyplot as plt
from matplotlib.font_manager import *

my_font = FontProperties(fname='/root/anaconda3/lib/python3.8/site-packages/matplotlib/mpl-data/fonts/ttf/SimHei.ttf')   # 目录要更改为自己的
plt.rcParams['axes.unicode_minus'] = False

# 用数组绘图
import numpy as np

t = np.arange(0, 5, 0.2)
# 绘制三条线
# 线条 1
x1 = y1 = t

# 线条 2
x2 = x1
y2 = t**2

# 线条 3
x3 = x1
y3 = t**3

# 绘图
Linelist = plt.plot(x1, y1, x2, y2, x3, y3)

# 使用 setp 方法可以同时设置多条线条的属性
plt.setp(Linelist, color='blue')
plt.xlabel('x轴坐标', fontproperties=my_font)    # 添加 fontproperties 参数,下同
plt.ylabel('y轴坐标', fontproperties=my_font)
plt.title('标题', fontproperties=my_font)
plt.annotate('这里是注释', xy=(3, 27), xytext=(3, 50), arrowprops=dict(facecolor='black', shrink=0.01), fontproperties=my_font)
plt.show()

原文地址:https://www.cnblogs.com/Earth-SmaThing/p/15449089.html