欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【超简单超清楚】mac环境matplotlib的中文配置

程序员文章站 2024-01-16 09:03:46
...

大家知道,matplotlib库中没有中文字体

所以我们如果需要显示一些中文label就需要进行配置。

我的环境: mac +  homebrew安装的python3.5 + matplotlib 2.0 

参考了网上很多文章, 很多方法在我这里都不可行。

比如:

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

该方法在我这里并不可行【超简单超清楚】mac环境matplotlib的中文配置


######################################################


亲测可行方法


1.  比较蠢,考诉matplotlib你要用哪个中文字体。

另外,不需要把这些字体copy到

/usr/local/lib/python3.5/site-packages/matplotlib/mpl-data/fonts/ttf/ 只需要告诉matplotlib路径就行了。

from matplotlib.font_manager import FontProperties
font=FontProperties(fname='/Library/Fonts/Hanzipen.ttc',size=10)
ax1.set_xticklabels(ability_labels,fontproperties=font)

另外就是这个设置字体,要找起来非常简单,打开Alfred,输入font

【超简单超清楚】mac环境matplotlib的中文配置


好多字体可以选呢~ 我们选择第一个字体册,然后选一个你喜欢的中文字体。

【超简单超清楚】mac环境matplotlib的中文配置

我随便选了一个翩翩体,设置FontProperties为这个路径,然后告诉你的中文label用这个字体即可。

效果如下:

【超简单超清楚】mac环境matplotlib的中文配置


2. 参考自知乎 https://www.zhihu.com/question/25404709  @hengchao0248 的回答

不需要下载添加任何字体!

import matplotlib
a=sorted([f.name for f in matplotlib.font_manager.fontManager.ttflist])

for i in a:
	print i


首先打印出你的font_manager的ttflist中所有注册的名字,你会得到246个注册名字,有常见的Times New Roman,也有不太常见的。

我大致看了一下,有一些看着就很像中文字体啊,比如这个STFangsong 仿宋啊有木有! Weibei SC 这个看着像北魏啥的

然后直接在python文件中加一条语句就ok了:

plt.rcParams['font.family']=['STFangsong']


对,没有错,选一个你喜欢的,设置font.family, 然后就OK了。那些 matplotlibrc 文件,~/.matplotlib/下的cache文件,统统不用改!!!只需要加一条设置font.family 的句子就行了!!!



【超简单超清楚】mac环境matplotlib的中文配置





另外,推荐一下 @Ray 的答案,我没有试,但是我觉得这是一个很不错的solution。

作者:Ray
链接:https://www.zhihu.com/question/25404709/answer/261291501
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

环境: Python 2.7

在Mac上和Windows上进行过测试,发现目前最简洁的方案应该是Pyplotz。基于matplotlib,无需修改任何设置,也可以和matplotlib,pandas,seaborn进行无缝衔接。关键是,跨平台还无需设置。目前支持 Python 2.7 和 Python 3。

(1)安装方式:

使用pip安装: pip install pyplotz

(2)使用示例

201528015329004/pyplotz

(3)这是它的github网站:

201528015329004/pyplotz