matplotlib的默认字体_浅谈matplotlib默认字体设置探索

3bc90872e8674a2e0008cb10987b3c9f.png

控制默认字体的设置

根据官方文档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默认字体 内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java空心菱形_java 空心菱形

分为两部分,先打印前四行,再打印后三行,int n 4;    //设初始值为4for(int i0;ifor(int j0;jSystem.out.print(" ");}for(int k0;kif(k0||k2*i) {    //打印前四行的*,中间部分输出空格System.out.print(&quo…

java接口版本控制_为什么要在Java中控制类和接口的可见性

java接口版本控制维护是软件开发的重要方面之一,并且经验证明,保持较低组件可视性的软件比暴露更多组件的软件更易于维护。 您不会在一开始就意识到它,但是在重新设计应用程序时会严重错过它。 由于保持向后兼容性是许多应用程序的“必须具备…

遮掩java_css之图片下方定位遮掩层

需要的效果如图,图片下方加个遮掩层:html:css:.listContent>div{width:300px;height: 300px;float: left;margin-top: 20px;margin-left: 20px;position:relative;}.mask{width:300px;height: 40px;background-color:#FFCCCC;p…

使用JDK的密码流的加密怪癖(以及如何做)

在我们的日常工作中,我们经常遇到经常性的主题,即将数据(例如文件)从一个位置传输到另一个位置。 这听起来像是一个非常简单的任务,但让我们通过声明这些文件可能包含机密信息并可以通过非安全的通信渠道进行传输这一事…

学java专科_专科学历可以学习java开发吗

学习Java的热潮越来越高涨,除了转行而来的人,很多刚毕业的学生也加入到其中。很多人都觉得学习Java需要有一个高学历作为基础,一些专科生在学习之前会犹豫,他们是否能学习Java,首先学程序开发,入行Java开发…

具有InlfuxDB的Spring Boot和Micrometer第3部分:Servlet和JDBC

在上一个博客中,我们使用由InfluxDB支持的千分尺设置了反应式应用程序。 在本教程中,我们将使用传统的带JDBC阻塞式Servlet的Spring Stack。 我选择的数据库是postgresql。 我将使用与先前博客文章相同的脚本。 因此,我们将拥有初始化数据库…

jsf xhtml调用方法_JSF的工作方式以及调试方法–可以使用polyglot吗?

jsf xhtml调用方法JSF不是我们通常认为的那样。 这也是一个调试起来可能有些棘手的框架,尤其是在初次遇到时。 在这篇文章中,让我们继续探讨为什么会出现这种情况,并提供一些JSF调试技术。 我们将讨论以下主题: JSF不是我们经常想…

将Auth0 OIDC(OAUTH 2)与授权(组和角色)集成

如果您正在使用Auth0对多个现有应用程序中的用户进行身份验证和授权,则可能需要将下一个Web应用程序与Auth0集成。 有多种方法可以执行此操作,例如,如果要将Jenkins与Auth0集成,则可以使用SAML v2;否则,可…

tomee_一罐将其全部统治:Apache TomEE + Shrinkwrap == JavaEE引导

tomee警告:我不是Spring Boot的专家。 我发现很多事情对此非常有趣,并且当然可以真正改善您的日常工作。 而且,我对Spring Boot没有任何反对,也没有开发或使用它的人。 但是我认为社区高估了该产品。 一年前,我开始收…

使用Spring Boot和Project Reactor处理SQS消息

我最近参与了一个项目,在该项目中,我不得不有效地处理通过AWS SQS Queue流入的大量消息。 在这篇文章(可能还有一篇)中,我将介绍使用出色的Project Reactor处理消息的方法。 以下是我要进行的设置: 设置本…

初级测试开发面试题_初级开发人员在编写单元测试时常犯的错误

初级测试开发面试题自从我编写第一个单元测试以来已经有10年了。 从那时起,我不记得我已经编写了成千上万的单元测试。 老实说,我在源代码和测试代码之间没有任何区别。 对我来说是同一回事。 测试代码是源代码的一部分。 在过去的3-4年中,我…

使用SoapUI调用安全WCF SOAP服务–第1部分,该服务

在这个由三部分组成的传奇中,我将演示如何使用SoapUI API工具来调用安全的SOAP服务。 首先,我将专注于创建服务,在接下来的文章中它将充当被测系统。 使用基本身份验证传输安全性机制维护对该服务中资源的访问。 Windows Communication Foun…

java简单系统_Java简单学生管理系统

Java简单学生管理系统这个不需要手动输入,笔记记录//studentpublic class student(){private String id;//学号private String name;//姓名private int age;//年龄public String getId() {return id;}public void setId(String id) {this.id id;}public String get…

kafka java编程demo_Kafka简单客户端编程实例

今天,我们给大家带来一篇如何利用Kafka的API进行客户端编程的文章,这篇文章很简单,就是利用Kafka的API创建一个生产者和消费者,生产者不断向Kafka写入消息,消费者则不断消费Kafka的消息。下面是具体的实例代码。一、创…

java我的世界极限生存_我的世界 1.7.10 极限生存整合包

整合包介绍:最近总有人觉得Minecraft很无聊,没有什么可玩的,或者觉得生存太简单 那么就来试试这个吧,全部是增强怪物的MOD,保证不无聊,保证不简单 基本上没有增加一些新的东西,只增加了几种怪物…

具有InlfuxDB的Spring Boot和Micrometer第1部分:基础项目

对于那些关注此博客的人来说,难怪我倾向于大量使用InfluxDB。 我喜欢这样一个事实,它是一个真正的单一用途的数据库(时间序列),具有许多功能,并且还带有企业支持。 Spring也是我选择的工具之一。 因此&…

PIT,JUnit 5和Gradle –仅需额外的一行配置

在Gradle(带有gradle-pitest-plugin 1.4.7)中发现简单,经过改进的PIT和JUnit 5配置。 不可否认,如今JUnit 5越来越受欢迎。 虽然为JUnit 5提供了一个专用于PIT的插件,并且gradle-pitest-plugin支持了很多年&#xff0…

apache camel_使用WildFly 8在Java EE7中自举Apache Camel

apache camel从Camel版本2.10开始,支持CDI(JSR-299)和DI(JSR-330)。 这为在Java EE容器中以及在独立的Java SE或CDI容器中开发和部署Apache Camel项目提供了新的机会。 是时候尝试一下并熟悉它了。 骆驼到底是什么&am…

Hibernate中保存与持久性以及saveOrUpdate之间的区别

保存与保存或更新与持久保存在Hibernate中 save和saveOrUpdate之间的区别是什么或save和persist之间的区别是任何Hibernate面试中常见的面试问题,就像Hibernate中get和load方法之间的区别一样。 Hibernate Session类提供了几种方法,可以通过诸如save&am…

java中的语句有哪些_java中的循环语句有哪些

Java中有三种主要的循环结构:while 循环do…while 循环for 循环顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。一、while循环语法:while( 布尔表达式 ) {     //循环内容   }只要符合布尔表达…