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

总结
  • 类比是一个好方法,当我们在尝试解决问题的时候,要尝试着和以前的事物进行类比。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值