(数据科学学习手札100)搞定matplotlib中的字体设置
本文示例文件已上传至我的
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
以上就是本文的全部内容,欢迎在评论区与我进行讨论~
(数据科学学习手札100)搞定matplotlib中的字体设置的更多相关文章
- (数据科学学习手札128)在matplotlib中添加富文本的最佳方式
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 长久以来,在使用matplotlib进行绘 ...
- (数据科学学习手札44)在Keras中训练多层感知机
一.简介 Keras是有着自主的一套前端控制语法,后端基于tensorflow和theano的深度学习框架,因为其搭建神经网络简单快捷明了的语法风格,可以帮助使用者更快捷的搭建自己的神经网络,堪称深度 ...
- (数据科学学习手札71)在Python中制作个性化词云图
本文对应脚本及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 一.简介 词云图是文本挖掘中用来表征词频的数据可视化 ...
- (数据科学学习手札58)在R中处理有缺失值数据的高级方法
一.简介 在实际工作中,遇到数据中带有缺失值是非常常见的现象,简单粗暴的做法如直接删除包含缺失值的记录.删除缺失值比例过大的变量.用0填充缺失值等,但这些做法会很大程度上影响原始数据的分布或者浪费来之 ...
- (数据科学学习手札125)在Python中操纵json数据的最佳方式
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常使用Python的过程中,我们经常会 ...
- (数据科学学习手札127)在Python中使用icecream实现高效debug
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 尽管有那么多花里胡哨的debug工具和方式 ...
- (数据科学学习手札96)在geopandas中叠加在线地图
本文示例文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 国庆期间,抽空给大家分享在geopandas中叠 ...
- (数据科学学习手札97)掌握pandas中的transform
本文示例文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 开门见山,在pandas中,transform是 ...
- (数据科学学习手札99)掌握pandas中的时序数据分组运算
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 我们在使用pandas分析处理时间序列数据 ...
随机推荐
- 慢话crush-各种crush组合
前言 ceph已经是一个比较成熟的开源的分布式存储了,从功能角度上来说,目前的功能基本能够覆盖大部分场景,而社区的工作基本上是在加入企业级的功能和易用性还有性能等方面在发力在,不管你是新手还是老手,都 ...
- mysql_用命令行备份数据库
MySQL数据库使用命令行备份|MySQL数据库备份命令 例如: 数据库地址:127.0.0.1 数据库用户名:root 数据库密码:pass 数据库名称:myweb 备份数据库到D盘跟目录 mysq ...
- VScode,code::blocksC语言编译运行出现不支持的16位应用程序解决方法
最近,莫名其妙c代码就是编译运行不了,老是提示不支持的16位应用程序 然后网上找了各种教程 只有这个成功了(害得我还升了下系统) 实现进入Windows设置 然后点更新和安全--恢复 然后点高级启动- ...
- [原题复现+审计][SUCTF 2019] WEB CheckIn(上传绕过、.user.ini)
简介 原题复现:https://github.com/team-su/SUCTF-2019/tree/master/Web/checkIn 考察知识点:上传绕过..user.ini 线上平台:h ...
- tp5 统一返回json格式
控制器调用 public function json(){ if (request()->isPost()) { return jsonData(1,'转换成功',数据(可不填)); } } 公 ...
- 面试阿里,首先要掌握的 Java 泛型,帮你一次性搞懂!
引言 泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用.本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除. 泛型基础 泛型类 我们首 ...
- 如何在MathType输入手写体a
作为强大的数学公式编辑器,MathType中还能设置各种样式,还支持自定义设置,给大家编辑公式提供了更多的便利.那么有用户问:要如何将输入的字母a变为手写体呢?下面就来一起学习. 输入手写体a的步骤如 ...
- iOS如何实现语音播报及后台播放
最近项目刚刚交付,偶然间用到了语音播报和语音搜索的功能.语音搜索我用的是讯飞的demo,感觉效果还不错,感兴趣的话可以去官网上面下载demo,里面讲的特别的详细,不过稍显麻烦一些.语音播报讯飞也有de ...
- python3 Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接
报错源代码from selenium import webdriverimport unittestimport timefrom HTMLTestRunner import HTMLTestRunn ...
- Kafka入门之consumer
offset存放在_consumer_offsets这个topic下 并且从0-49划分了50个分区: consumer会在kafka集群的所有broker中选择一个broker作为consumer ...