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)

Matplotlib解决中文乱码&符号不正常显示

python中matplotlib中标签中文乱码的一种解决方法

python中matplotlib中标签中文乱码的一种解决方法

解决linux服务器上matplotlib中文显示乱码问题

Mac下面 matplotlib 中文无法显示解决