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默认填充相关参数,就可以将这套代码部署到任何平台。而不依赖于平台的字体了。

总结
  • 类比是一个好方法,当我们在尝试解决问题的时候,要尝试着和以前的事物进行类比。
发布了33 篇原创文章 · 获赞 21 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u013356254/article/details/96579049
今日推荐