Mac系统彻底解决matplotlib中文显示乱码的问题
2017-11-20 18:06
801 查看
MAC OS系统解决matplotlib 中文乱码
【Python版本2.7】
matplotlib绘图,中文是解码后自动输出,而不是写死的,所以通过FontManager指定本机中文字体目录的办法并不奏效。尝试了N多办法,被折磨了N久,放弃了N次,就在准备弃疗的时候,中文终于显示正常了。分享如下:
找到安装目录,修改matplotlibrc文件。删除font.family和font.sans-serif两行前的#,并在font.sans-serif后添加对应的中文字体。这里我们用的是中文简体
SimHei,如下:
font.family :sans-serif
font.sans-serif : SimHei, DejaVu Serif(后面还有很多,略去)
axes.unicode_minus,将True改为False
UserWarning: findfont: Font family [u'sans-serif'] not found. Falling back to Bitstream Vera Sans
(prop.get_family(), self.defaultFamily[fontext]))
所以我们要前进到这个坑爹的文件夹下。 Windows和centos、Ubuntu的一些清除缓存的命令,可能并不适用于Mac系统!!!所以很多博客提供的命令,直接不起作用啊!所以稳妥起见,还是手动删除缓存。有些博客上写的是FontList.cache,但是我的机器上没有FontList.cache文件,但是有一个FontList.json文件,打开后发现,这个文件详细记录了matplotlib加载字体的名称、路径。文件目路径是:/Users/lqhk/.matplotlib/FontList.json,删除即可。下次调用matplotlib时,会自动生成一个新的json文件。
其他的自动输出中文的地方,比如通过解码或者别的方式输出的中文,通过这种方法是可以实现中文正常显示的!
写在最后,查阅了各种博客,先是Windows的方法对MAC不起效,然后好不容易找到了Mac的解决办法,但是由于Mac系统版本不一致,或者matplotlib安装方法不一致,各种方法均不奏效。具体问题还是要具体分析,根据你的系统版本做细微调整,原样照搬未必奏效,但是每一步的具体步骤是一致的,一定要有耐心!好吧,祝你顺利!只怪中文博大精深,对舶来品水土不服。。。
【Python版本2.7】
matplotlib绘图,中文是解码后自动输出,而不是写死的,所以通过FontManager指定本机中文字体目录的办法并不奏效。尝试了N多办法,被折磨了N久,放弃了N次,就在准备弃疗的时候,中文终于显示正常了。分享如下:
1、找到matplotlib 安装的目录,修改matplotlibrc文件
在终端里执行命令:>python >import matplotlib >print(matplotlib.matplotlib_fname())
找到安装目录,修改matplotlibrc文件。删除font.family和font.sans-serif两行前的#,并在font.sans-serif后添加对应的中文字体。这里我们用的是中文简体
SimHei,如下:
font.family :sans-serif
font.sans-serif : SimHei, DejaVu Serif(后面还有很多,略去)
axes.unicode_minus,将True改为False
3、将对应的字体SimHei.tff拷贝到
/Users/lqhk/Library/Python/2.7/lib/python/site-packages/matplotlib/mpl-data/fonts/ttf目录下4、清空缓存
这一步很重要!否则其他几步都是白忙活。一定要清空matlibplot加载字体的缓存,因为加载字体的时候要读取FontList文件,我们新加入的字体不在这个文件的列表,加载时必然会报找不到字体的错:UserWarning: findfont: Font family [u'sans-serif'] not found. Falling back to Bitstream Vera Sans
(prop.get_family(), self.defaultFamily[fontext]))
所以我们要前进到这个坑爹的文件夹下。 Windows和centos、Ubuntu的一些清除缓存的命令,可能并不适用于Mac系统!!!所以很多博客提供的命令,直接不起作用啊!所以稳妥起见,还是手动删除缓存。有些博客上写的是FontList.cache,但是我的机器上没有FontList.cache文件,但是有一个FontList.json文件,打开后发现,这个文件详细记录了matplotlib加载字体的名称、路径。文件目路径是:/Users/lqhk/.matplotlib/FontList.json,删除即可。下次调用matplotlib时,会自动生成一个新的json文件。
5、修改代码。
代码如下:import matplotlib.pyplot as plt # 引入matplotlib包 plt.rcParams['font.sans-serif']=['SimHei']# 设置加载的字体名 plt.rcParams['axes.unicode_minus']=False #解决保存图像是负号'-'显示为方块的问题
有中文的地方记得,前面加u,如:
plt.title(u'这是题目 ')
其他的自动输出中文的地方,比如通过解码或者别的方式输出的中文,通过这种方法是可以实现中文正常显示的!
6、重启Python。
担心重启不彻底,直接重启电脑。。。。写在最后,查阅了各种博客,先是Windows的方法对MAC不起效,然后好不容易找到了Mac的解决办法,但是由于Mac系统版本不一致,或者matplotlib安装方法不一致,各种方法均不奏效。具体问题还是要具体分析,根据你的系统版本做细微调整,原样照搬未必奏效,但是每一步的具体步骤是一致的,一定要有耐心!好吧,祝你顺利!只怪中文博大精深,对舶来品水土不服。。。
相关文章推荐
- 解决Mac系统下matplotlib中文显示方块问题
- 解决mac系统下Matplotlib 中文显示问题
- 解决Linux系统中python matplotlib画图的中文显示问题
- 彻底解决matplotlib中文乱码问题
- 彻底解决matplotlib中文乱码问题
- Mac 系统下 解决python matplot画图中文乱码问题和plot.show()无响应问题
- 彻底解决matplotlib中文乱码问题
- Python 3下使用Matplotlib工具画图,中文显示乱码的问题解决(修改配置文件)
- 基于Linux系统中python matplotlib画图的中文显示问题的解决方法
- ubuntu系统下matplotlib中文乱码问题的解决方法
- 解决matplotlib绘图中显示中文乱码的问题
- 解决mac上matplotlib(plot)无法显示中文的问题 (Python)
- 彻底解决matplotlib中文乱码问题
- 彻底解决matplotlib中文乱码问题(转)
- 关于Mac系统下matplotlib中文显示方块问题
- ubuntu系统下matplotlib中文乱码问题
- Mac 下matplotlib中文乱码问题
- 解决windows下 Python中 matplotlib 做图中文不显示的问题
- 解决matplotlib中文乱码问题
- 解决matplotlib中文乱码问题(Ubuntu16.04)