matplotlib中文字符乱码问题解决方案

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Maverick_7/article/details/82155945

Windows

之前在Windows上,遇到matplotlib在画图时,出现中文乱码的问题。解决方案很简单,只需在脚本前加上:


import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=[u'SimHei']
 #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False
#用来正常显示负号

#有中文出现的情况,需要u'内容'

#其他画图配置:
plt.rcParams['figure.figsize']=10,10
plt.rcParams['figure.dpi']=300

Mac:

但是,以上的操作在mac上无效。

因为在mac中的/Library/Fonts文件夹中,虽有多种不同的字体,但并没有显示中文的SimHei.ttf,所以需要先进行下载和安装,并修改一下matplotlibrc脚本,就可以使得matplotlib在画图时正常显示中文了。
- 第一步:下载字体并安装:SimHei

  • 第二步:将字体文件SimHei.ttf拷贝到python安装路径/site-packages/matplotlib/mpl-data/fonts/ttf目录中

  • 第三步:修改~python安装路径/site-packages/matplotlib/mpl-data/matplotlibrc文件。找到如下两项,去掉前面的#,并在font.sans-serif冒号后面加上SimHei,如下:

font.family         : sans-serif       
font.sans-serif     : SimHei, Bitstream Vera Sans, Lucida Grande,Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif

同时找到axes.unicode_minus,将True改为False,以解决负号’-‘显示为方块的问题。

  • 第四步:在脚本运行前加入:

#matplotlib不会每次启动时都重新扫描所有的字体文件并创建字体索引列表,
# 因此在复制完字体文件之后,需要运行下面的语句以重新创建字体索引列表
import matplotlib as mpl
from matplotlib.font_manager import _rebuild
_rebuild()
#防止中文乱码问题
mpl.rcParams['font.sans-serif']=[u'SimHei']
mpl.rcParams['axes.unicode_minus']=False

或者在rebuild之后,也可在之后使用中直接加入:


import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=[u'SimHei']
 #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False
#用来正常显示负号

#有中文出现的情况,需要u'内容'

#其他画图配置:
plt.rcParams['figure.figsize']=10,10
plt.rcParams['figure.dpi']=300

猜你喜欢

转载自blog.csdn.net/Maverick_7/article/details/82155945