matplotlib字体设置看这一篇就够了

共 1639字,需浏览 4分钟

 ·

2020-12-13 02:41

点击上方"蓝字"关注我们





Python大数据分析


记录   分享   成长


添加微信号"CNFeffery"加入技术交流群

本文示例文件已上传至我的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

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

加入我们的知识星球【Python大数据分析】

爱上数据分析!



· 往期精选 ·
1

掌握pandas中的时序数据分组运算

2

在模仿中精进数据可视化05:疫情期间市值增长top25公司

3

最详细的PyCharm 安装+破解详细使用指南




Python大数据分析

data creates value

扫码关注我们

浏览 56
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报