matplotlib中文字体显示的通用解决方法
Posted 「已注销」
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matplotlib中文字体显示的通用解决方法相关的知识,希望对你有一定的参考价值。
最近在centos上部署了一个绘图服务,但是中文显示一直有问题。
经过一段时间的折腾(liunx安装字体),仍然没有解决这个问题(实在太笨了)。
最终换了一个思路(类比android中字体的加载),找到了通用的解决方法。
核心思路是加载一个ttf文件,修改显示中文的函数的字体参数。
- 效果演示
- 源码地址
- 核心代码(覆盖字体参数)
self.font = fm.FontProperties(fname=font_file)
plt.legend = functools.partial(plt.legend,prop=self.font)
plt.title = functools.partial(plt.title,fontproperties=self.font)
plt.xlabel = functools.partial(plt.xlabel,fontproperties=self.font)
plt.ylabel = functools.partial(plt.ylabel,fontproperties=self.font)
plt.text = functools.partial(plt.text,fontproperties=self.font)
plt.annotate = functools.partial(plt.annotate,fontproperties = self.font)
我们可以看到,通过fm加载一个字体文件,然后使用functools默认填充相关参数,就可以将这套代码部署到任何平台。而不依赖于平台的字体了。
总结
- 类比是一个好方法,当我们在尝试解决问题的时候,要尝试着和以前的事物进行类比。
以上是关于matplotlib中文字体显示的通用解决方法的主要内容,如果未能解决你的问题,请参考以下文章
matplotlib显示中文(解决UserWarning: findfont: Font family)
python中matplotlib中标签中文乱码的一种解决方法