matplotlib、seaborn中文显示问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/GISerXiaoXX/article/details/89913858

问题描述

在使用matplotlib(或seaborn)时,中文无法正常显示,显示结果为一个方框
环境:Windows+Anaconda


解决方法

方法一:设置plt的参数

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

另外:如果用了seaborn这样的基于matplotlib的库的话,需要额外设置:

sns.set(font='SimHei')

方法二:直接指定字体路径

import matplotlib.font_manager as fm
fonts = fm.FontProperties(fname=r'C:\Windows\Fonts\SimHei.ttf') # 设置字体
plt.xlabel(u'横轴',fontproperties=fonts)
plt.ylabel(u'纵轴',fontproperties=fonts)

方法三:手动修改matolotlib配置文件matplotlibrc

matplotlibrc的位置可用以下方式获得

import matplotlib
matplotlib.matplotlib_fname() #将会获得matplotlib包所在文件夹

1.打开matplotlibrc,分别找到以下项目,去掉前面的#注释

#font.serif          : DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
#font.sans-serif     : SimHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, 
#axes.unicode_minus  : False    ## use unicode for the minus symbol  用来正常显示负号

2.找到需要的中文字体,复制到fonts中的ttf目录下,位置在刚刚的matplotlibrc同一级文件夹中的fonts\ttf
3.将我们的字体文件的注册名字(如SimHei)加到配置文件项serif和sans-serif后面的第一个

#font.serif : SimHei, Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, 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

4.到了这步应该就解决了,如果还是不能正常显示,可以在python中重新加载一下字体

from matplotlib.font_manager import _rebuild
_rebuild()    #重新加载一下
展开阅读全文

没有更多推荐了,返回首页