【Python基础】matplotlib字体设置看这一篇就够了

  • Post author:
  • Post category:python


本文示例文件已上传至我的

Github

仓库https://github.com/CNFeffery/DataScienceStudyNotes

1 简介


matplotlib

作为数据可视化的利器,被广泛用于数据分析之中,但不太友好的是

matplotlib

中书写非英文文字内容时,如果不事先对字体进行相关设置,会发现绘制出的诸如

「中文」

等均显示为

「方块乱码」

,而今天的内容,我们就来小小总结一下

matplotlib

中字体设置的常用技巧。


图1

2 在matplotlib中设置字体的常用方法



matplotlib

中设置字体的方法按作用范围可分为全局设置与临时设置:

2.1 在matplotlib中设置全局字体

我们在默认状态下使用

matplotlib

书写中文内容时之所以显示出乱码,是因为

matplotlib

默认的字体为英文字体,导致许多

unicode

编码的语言文字都无法书写。

而全局设置字体的方式,指的是我们可以通过修改本地配置文件或在程序开头设置字体相关参数,从而人为地为当前kernel下的

matplotlib

规定使用指定的字体,主要有以下几种情况:


  • 「使用系统自带字体」

所谓

「系统自带字体」

,譬如对于

windows

,其系统盘

Windows/Fonts

下的诸多已安装到系统中的字体:


图2

当然,

matplotlib

可以检测到的字体不止上述的这些,我们可以通过下列方式查看

matplotlib

中默认已经识别到的所有可用字体:

import matplotlib.pyplot as plt
from matplotlib import font_manager

for font in font_manager.fontManager.ttflist:
    # 查看字体名以及对应的字体文件名
    print(font.name, '-', font.fname)


图3

其中在

font_manager.fontManager.ttflist

中迭代到的每个对象,其

name

属性即为我们下面设置字体要使用到的名称,以

「华文琥珀」

为例,我们先查看到其对应的字体文件名称:


图4

接着我们写两行程序来找到其对应的名称:


图5

接着按照

plt.rcParams['font.sans-serif'] = 字体名称

的格式设置即可:


图6

可以看到这时我们全局所有文字都变成

「华文琥珀」


  • 「使用任意的字体」

如果你想要的字体不在系统默认字体中,且你只想临时使用不想安装到系统字体中,则可以利用

font_manager.fontManager.addfont()

来传入字体文件路径临时注册一个字体,以我下载的三方字体文件

MaShanZheng-Regular.ttf

为例:


图7

图8

2.2 在matplotlib中设置局部字体

而如果你只是想要在数据可视化作品中的部分元素譬如文字标注中临时使用一下字体,则可以利用

font_manager.FontProperties()

将字体路径作为

fname

参数传入,并传入到对应

matplotlib

绘图API相应参数中,以

text()

为例:


图9

而刻度标签则可以参考下面的方式:


图10


以上就是本文的全部内容,欢迎在评论区与我进行讨论~


往期精彩回顾



适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑
获取本站知识星球优惠券,复制链接直接打开:
https://t.zsxq.com/qFiUFMV
本站qq群704220115。

加入微信群请扫码: