matplotlib字体配置

matplotlib字体配置

💡 原文中文,约5500字,阅读约需14分钟。
📝

内容提要

本文介绍了matplotlib中的字体配置,包括衬线字体和无衬线字体的选择,中文常用宋体和黑体。还介绍了流行的字体选择,以及matplotlib中的数学字体集和使用Latex渲染文本的方法。

🔎

延伸解读

字体回退机制的实际影响

matplotlib的字体列表按顺序查找,但仅当字体文件完全缺失时才回退到下一个字体,而不会因为字符无法显示而自动切换。这意味着如果列表首位是Times New Roman,即使它不支持中文,matplotlib也不会自动改用中文字体,导致中文显示为方框。因此,在包含中文的图表中,应确保字体列表首位是支持中文的字体,或通过fontname参数单独指定。

中文字体选择与系统差异

文章列举了Windows、macOS和Linux的字体目录,并指出matplotlib的font_manager能自动检测系统字体。但不同系统预装字体不同,例如微软雅黑在Windows上常见,而Linux可能只有文泉驿正黑。跨平台分享代码时,若指定了某系统独有的字体,在其他系统上可能无法正常渲染。建议优先选用开源字体如思源黑体,或通过font_manager动态检查可用字体。

数学字体集的适用场景

matplotlib内置的mathtext引擎无需LaTeX即可渲染数学公式,其字体由mathtext.fontset控制。预设选项各有侧重:dejavusans适合通用绘图,cm适合学术出版,stix适合专业科学排版。若预设不满足需求,可用custom选项分别指定rm、it、bf等字体,但需确保所选字体包含所需数学符号,否则可能显示异常。

LaTeX渲染的取舍

使用LaTeX渲染文本能获得更专业的排版效果,但需要提前配置LaTeX环境,且一旦启用,所有通过rcParams设置的字体将失效。文章建议可仅在特定部分(如标题)使用usetex=True,以兼顾整体字体配置与局部LaTeX渲染。这为需要高质量公式但又不愿放弃自定义字体的用户提供了折中方案。

❓

Q&A

matplotlib中如何选择字体?

在matplotlib中,可以通过设置字体族和字体列表来选择字体,用户可以自定义字体族所采用的具体字体列表。

中文字体在matplotlib中有哪些常用选项?

常用的中文衬线字体有宋体和华文宋体,无衬线字体包括黑体和微软雅黑。

如何在matplotlib中使用LaTeX渲染文本?

可以通过设置text.latex.preamble来配置LaTeX环境,或使用usetex=True选项在特定部分渲染文本。

matplotlib支持哪些数学字体集?

matplotlib支持的数学字体集包括dejavusans、dejavuserif、cm、stix等,用户也可以使用custom选项指定自定义字体。

如何获取系统中所有可用的字体?

可以使用font_manager模块中的findSystemFonts()方法获取系统中所有可用的字体。

matplotlib中衬线字体和无衬线字体的区别是什么?

衬线字体有装饰性细节,适合正式文档;无衬线字体简洁现代,适合屏幕显示和演示。

🏷️

标签

➡️

继续阅读