jupyter notebook matplotlib 画图中文乱码问题解决方案

2,058 阅读1分钟

我电脑是 Mac,Windows 系统解决同理。

SimHei 字体下载:

链接:pan.baidu.com/s/1zV4gG9gU… 密码:nv3a

解决步骤:

1 添加字体

import matplotlib
# 打印matplotlibrc文件路径
print(matplotlib.matplotlib_fname())

'''
输出如:
/Library/Python/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
'''

把下载的SimHei.ttf文件放到 “/Library/Python/anaconda3/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf” 下。

2 修改 matplotlibrc 配置文件

2.1 找到下面配置并接触注释

font.family : sans-serif

2.2 找到下面配置,并添加 SimHei 字体配置

原配置如:
#font.sans-serif : DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

添加后:
#font.sans-serif : SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

2.3 修改编码配置

原配置如:
#axes.unicode_minus : True 修改后:
axes.unicode_minus : False

3 删除 matplotlib 缓存

Mac与Linux命令:rm -rf ~/.matplotlib/ Windows:删除c:\Users\你的用户.matplotlib 文件夹 (未验证)

4 重启jupyter notebook

5 代码中添加选择字体代码

import numpy as np
import math
import matplotlib.pyplot as plt
%matplotlib inline

x = np.arange(0,math.pi*2,0.05)
y = np.sin(x)

# 添加字体
plt.rcParams["font.sans-serif"] = ["SimHei"]
# 坐标轴负数显示有问题时,可尝试添加此行代码
# plt.rcParams["axes.unicode_minus"] = False

plt.plot(x,y)
plt.title("正弦波")
plt.xlabel("角度",color="r",fontsize=15)
plt.ylabel("正弦",color="g",fontsize=15)

6 编译代码