json中文乱码_Matplotlib中文乱码问题解决方案

54ee386920a58424dad24f0d6baa6bb2.png

“你的问题,我来帮”

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

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

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

文末分享字体文件,欢迎自取~46125b925b64a8e5949ff81522699d32.png

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

4136c26e86ff9f5ce01b9d1f2ac31062.png

原因是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.加入中文字体:

d0649b82f4abd0d8a24f8748b808ac26.png
  • 打开文件后可以看到满屏的字体文件,但没有一个是支持中文的

  • 这时我们需要在网上下载一个中文字体,小伙伴们下载自己喜欢的字体,这里以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
87172a29627f259887d932c55dab5913.png

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

965025e585fbfc63e0c6cd7cfe402caa.png

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

4591785f12ca0ab18425bcfe97c8ec4c.png

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

C:\Users\Alice\.matplotlib

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

9eafc7af509bae1c0ba5dfa45cf9e96d.png

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

c34be924d370c409e7f6b45f49d4cc60.png


扫码关注我们

关注送狗子表情包一张&精选python资料一份

389c017885d40387234e515c020d0cca.png

用数据改变未来

江山万里,不及你的好看 ↓↓↓

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值