浅谈matplotlib默认字体设置探索


Posted in Python onFebruary 03, 2021

控制默认字体的设置

根据官方文档https://matplotlib.org/tutorials/text/text_props.html#default-font可知:

The base default font is controlled by a set of rcParams

默认字体是由一组rcParams控制的。

rcParam usage
‘font.family' List of either names of font or {‘cursive', ‘fantasy', ‘monospace', ‘sans', ‘sans serif', ‘sans-serif', ‘serif'}
‘font.style' The default style, ex ‘normal', ‘italic'
‘font.variant' Default variant, ex ‘normal', ‘small-caps' (untested)
‘font.stretch' Default stretch, ex ‘normal', ‘condensed' (incomplete)
‘font.weight' Default weight. Either string or integer
‘font.size' Default font size in points. Relative font sizes (‘large', ‘x-small') are computed against this size

我们最关心的当然是'font.family','font.family'的取值有三种:

  • 单一字体名称。
  • 字体名称列表。
  • {'cursive', 'fantasy', 'monospace', 'sans', 'sans serif', 'sans-serif', 'serif'}中的某一个值。

对于字体名称,可以通过ttflist获取。

from matplotlib.font_manager import fontManager 
fontManager.ttflist

对于{'cursive', 'fantasy', 'monospace', 'sans', 'sans serif', 'sans-serif', 'serif'} ,它与实际字体名称之间的映射关系由以下rcParams控制:

family alias rcParam with mappings
‘serif' ‘font.serif'
‘monospace' ‘font.monospace'
‘fantasy' ‘font.fantasy'
‘cursive' ‘font.cursive'
{‘sans', ‘sans serif', ‘sans-serif'} ‘font.sans-serif'

'font.sans-serif'等取值其实都代表一个字体列表。

如何设置默认字体

官方文档给出了设置默认字体的方法建议:

To set the default font to be one that supports the code points you need, prepend the font name to ‘font.family' or the desired alias lists
matplotlib.rcParams[‘font.sans-serif'] = [‘Source Han Sans TW', ‘sans-serif']
or set it in your .matplotlibrc file:
font.sans-serif: Source Han Sans TW, Arial, sans-serif
To control the font used on per-artist basis use the ‘name', ‘fontname' or ‘fontproperties' kwargs documented above.

  • 通过常见的方法设置: matplotlib.rcParams['font.sans-serif'] = ['Source Han Sans TW', 'sans-serif']
  • 设置.matplotlibrc文件

.matplotlibrc文件中的字体设置

配置文件中重要的就是'font.sans-serif'等字体家族列表,列表是有优先级的,越靠前字体的优先级越高,所有很多教程中都要求把需要设置的字体设置为列表的第一个元素。

## ***************************************************************************
## * FONT                                  *
## ***************************************************************************
## The font properties used by `text.Text`.
## See https://matplotlib.org/api/font_manager_api.html for more information
## on font properties. The 6 font properties used for font matching are
## given below with their default values.
##
## The font.family property has five values:
##   - 'serif' (e.g., Times),
##   - 'sans-serif' (e.g., Helvetica),
##   - 'cursive' (e.g., Zapf-Chancery),
##   - 'fantasy' (e.g., Western), and
##   - 'monospace' (e.g., Courier).
## Each of these font families has a default list of font names in decreasing
## order of priority associated with them. When text.usetex is False,
## font.family may also be one or more concrete font names.
##
## The font.style property has three values: normal (or roman), italic
## or oblique. The oblique style will be used for italic, if it is not
## present.
##
## The font.variant property has two values: normal or small-caps. For
## TrueType fonts, which are scalable fonts, small-caps is equivalent
## to using a font size of 'smaller', or about 83%% of the current font
## size.
##
## The font.weight property has effectively 13 values: normal, bold,
## bolder, lighter, 100, 200, 300, ..., 900. Normal is the same as
## 400, and bold is 700. bolder and lighter are relative values with
## respect to the current weight.
##
## The font.stretch property has 11 values: ultra-condensed,
## extra-condensed, condensed, semi-condensed, normal, semi-expanded,
## expanded, extra-expanded, ultra-expanded, wider, and narrower. This
## property is not currently implemented.
##
## The font.size property is the default font size for text, given in pts.
## 10 pt is the standard value.
##
## Note that font.size controls default text sizes. To configure
## special text sizes tick labels, axes, labels, title, etc, see the rc
## settings for axes and ticks. Special text sizes can be defined
## relative to font.size, using the following values: xx-small, x-small,
## small, medium, large, x-large, xx-large, larger, or smaller

#font.family: sans-serif
#font.style:  normal
#font.variant: normal
#font.weight: normal
#font.stretch: normal
#font.size:  10.0

#font.serif:   DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
#font.sans-serif: DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
#font.cursive:  Apple Chancery, Textile, Zapf Chancery, Sand, Script MT, Felipa, cursive
#font.fantasy:  Comic Neue, Comic Sans MS, Chicago, Charcoal, ImpactWestern, Humor Sans, xkcd, fantasy
#font.monospace: DejaVu Sans Mono, Bitstream Vera Sans Mono, Computer Modern Typewriter, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace

通过rc函数设置默认字体属性的方法

根据文档可知
传统的字体设置方法plt.rcParams['font.sans-serif'] = ['simhei']等价于

font = {'sans-serif' : ['simhei']}
plt.rc('font', **font)
matplotlib.pyplot.rc(group, **kwargs)
Set the current rcParams. group is the grouping for the rc, e.g., for lines.linewidth the group is lines, for axes.facecolor, the group is axes, and so on. Group may also be a list or tuple of group names, e.g., (xtick, ytick). kwargs is a dictionary attribute name/value pairs, e.g.,:
rc('lines', linewidth=2, color='r')
sets the current rcParams and is equivalent to:
rcParams['lines.linewidth'] = 2
rcParams['lines.color'] = 'r'

到此这篇关于浅谈matplotlib默认字体设置探索的文章就介绍到这了,更多相关matplotlib默认字体 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 元类使用说明
Dec 18 Python
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
浅析Python的Django框架中的Memcached
Jul 23 Python
Django基础之Model操作步骤(介绍)
May 27 Python
利用python实现简单的循环购物车功能示例代码
Jul 05 Python
python3实现全角和半角字符转换的方法示例
Sep 21 Python
python Web开发你要理解的WSGI & uwsgi详解
Aug 01 Python
Python3.5装饰器原理及应用实例详解
Apr 30 Python
python字符串中匹配数字的正则表达式
Jul 03 Python
Python文本处理简单易懂方法解析
Dec 19 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
Feb 20 Python
使用python matplotlib 画图导入到word中如何保证分辨率
Apr 16 Python
python sleep和wait对比总结
Feb 03 #Python
Python实现简单猜数字游戏
Feb 03 #Python
python 实现图片裁剪小工具
Feb 02 #Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 #Python
Python datetime模块的使用示例
Feb 02 #Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
Feb 02 #Python
python中子类与父类的关系基础知识点
Feb 02 #Python
You might like
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
2019/01/16 PHP
phpfpm的作用和用法
2019/10/10 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
jQuery源码分析之Event事件分析
2010/06/07 Javascript
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
Js 获取Gridview选中行的内容操作步骤
2013/02/05 Javascript
js 获取、清空input type="file"的值(示例代码)
2013/12/24 Javascript
javascript函数中参数传递问题示例探讨
2014/07/31 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
学习JavaScript设计模式之责任链模式
2016/01/18 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
jQuery插件实现图片轮播特效
2016/06/16 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
jQuery常见的选择器及用法介绍
2016/12/20 Javascript
express 项目分层实践详解
2018/12/10 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
python实现的简单窗口倒计时界面实例
2015/05/05 Python
python写一个md5解密器示例
2018/02/23 Python
解决python3爬虫无法显示中文的问题
2018/04/12 Python
python3+PyQt5实现文档打印功能
2018/04/24 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
Python tkinter和exe打包的方法
2020/02/05 Python
Abbacino官网:包、钱包和女士配饰
2019/04/15 全球购物
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
StringBuilder和String的区别
2015/05/18 面试题
采购员岗位职责
2013/11/15 职场文书
生产班组长岗位职责
2014/01/05 职场文书
高中英语演讲稿范文
2014/04/24 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
2015年审计人员工作总结
2015/05/26 职场文书
房产销售员2015年终工作总结
2015/10/22 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书