python中matplotlib让输出的文字为斜体_解决方案

“你的问题,我来帮”

本文转自数据分析师(Python)优秀学员 Mr.喵的知乎文章

摘要:Matplotlib中文乱码解决方案

关键词:Python 中文乱码 matplotlib 解决方案

Matplotlib是Python的一个2D绘图库,许多小伙伴第一次使用图表绘制时,会发现中文乱码或者小方框的情况。

python中matplotlib让输出的文字为斜体_中文字体乱码 让_02

原因是Matplotlib默认字体并不包含中文,所以必须设置为中文字体。

准备工作:

  • 系统:Windows
  • 环境管理器:Anaconda
  • IDE:Jupyter notebook

  1. 编写如下代码,获取matplotlib包所在的配置文件的路径
import matplotlib
matplotlib.matplotlib_fname() #输出matplotlib包所在的配置文件的路径

D:\Anaconda3\lib\site-packages\matplotlib\mpl-data\matplotlibrc

2.根据上面的路径打开文件夹(根据自己实际的输出路径去操作):

D:\Anaconda3\lib\site-packages\matplotlib\mpl-data\fonts\ttf

3.加入中文字体:



python中matplotlib让输出的文字为斜体_中文乱码_03

  • 打开文件后可以看到满屏的字体文件,但没有一个是支持中文的
  • 这时我们需要在网上下载一个中文字体,小伙伴们下载自己喜欢的字体,这里以SimHei为例
  • 把中文字体文件放到文件夹里
  • 到此,准备工作结束。解决方案有以下两种:

一、简单粗暴型

每次绘制图表前输入以下代码:

import matplotlib.pyplot as pltimport seaborn as sns
plt.rcParams['font.sans-serif'] = ['SimHei']  # Matplotlib中设置字体-黑体,解决Matplotlib中文乱码问题
plt.rcParams['axes.unicode_minus'] = False    # 解决Matplotlib坐标轴负号'-'显示为方块的问题
sns.set(font='SimHei')                        # Seaborn中设置字体-黑体,解决Seaborn中文乱码问题

值得注意的是,输入的字体名称必须和上面准备工作中加入的字体文件名称一致。

二、一劳永逸型

  1. 根据上面准备工作获取matplotlib包所在的配置文件的路径,打开matplotlibrc文件(以记事本方式或其他编辑器方式打开)。

D:\Anaconda3\lib\site-packages\matplotlib\mpl-data\matplotlibrc



python中matplotlib让输出的文字为斜体_中文字体_04

2.找到 #font.sans-serif,去掉前面的#,并在:后面写上在准备工作加入的中文字体的名 称SimHei。



python中matplotlib让输出的文字为斜体_中文字体_05

3.找到#axes.unicode_minus,去掉前面的#,并在:改为False:



python中matplotlib让输出的文字为斜体_中文乱码_06

修改完毕后记得保存关闭。

C:\Users\Alice\.matplotlib

打开该路径下的文件夹,删除tex.cache文件和fontList.json文件。



python中matplotlib让输出的文字为斜体_解决方案_07

然后重新启动Jupyter notebook,等待奇迹的发生。小伙伴们可以根据自己的情况,选择一种解决方案。

python中matplotlib让输出的文字为斜体_中文字体乱码 让_08