matplotlib饼状图(pie)不能正确显示中文的解决办法

还是之前那个tieba-zhuaqu项目,在使用matplotlib绘制饼状图(pie)的时候,发现不能显示中文。

1480233742985screencapture

图片源地址:https://my.oschina.net/Kanonpy/blog/617535?p=1

之前使用matplotlib绘制其它类型的图片的时候也发现不能显示中文,最后的解决办法都是使用FontProperties() 来设置字体解决问题。

然而发现饼状图貌似不不能简单的通过在plt.pie()中传入FontProperties() 解决中文乱码的问题。

后面在https://my.oschina.net/Kanonpy/blog/617535?p=1找到了解决办法,以及出现这个问题的原因。

在调用pie()函数的时候,它会返回字体对象。而且返回的字体对象不支持中文字体。

根据那篇文章里的说法,我们只需要修改pie()返回的字体对象即可,即将它返回的对象修改为支持中文的字体。

1
2
3
4
patches,l_text,p_text = plt.pie(ValueList, labels=Labels, colors=colors,autopct='%1.1f%%',explode=explode ,shadow=True, startangle=90)
for font in l_text:
font.set_fontproperties(FontProperties(fname=PATH_SUFFIX+'SIMLI.TTF'))
plt.title(graphicTitle,fontproperties=font_set,y=1.05)

上面的代码中,我把字体拷贝到了和脚本同一个目录,PATH_SUFFIX为脚本当前目录,可以通过以下方式获得:

1
2
3
#重要全局变量
PATH_SUFFIX = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir))
PATH_SUFFIX+="\\userX\\" #插件根目录

这样做的好处就是,把脚本拷贝给其他人的时候,也可以保证饼状图可以正常显示中文字体。

这样,我们便可以正常显示中文字体了。

用户维度数据分析-互动密切用户(异常)

关于在哪里寻找字体:

windows下字体路径:

C:\Windows\Fonts

Ubuntu下字体路径:

/usr/share/fonts

 

 

0%