Matplotlib is hiring a Research Software Engineering Fellow! See discourse for details. Apply by January 3, 2020
在matplotlib中使用 Latex 渲染文本。
Matplotlib可以选择使用LaTex来管理所有文本布局。此选项可用于以下后端:
Latex 选项通过设置激活 text.usetex : True
在RC设置中。Matplotlib的 Latex 支持下的文本处理速度比Matplotlib的超能力慢。 mathtext 但更灵活,因为可以使用不同的 Latex 包(字体包、数学包等)。结果可能是惊人的,尤其是当您注意使用与主文档中相同的字体时。
Matplotlib的 Latex 支架需要工作 LaTeX 安装, dvipng (可能包括在 Latex 装置中),以及 Ghostscript (需要gpl ghostscript 9.0或更高版本)。这些外部依赖项的可执行文件必须全部位于 PATH
.
有几个选项需要提及,可以使用 rc settings . 以下是matplotlibrc文件的示例:
font.family : serif
font.serif : Times, Palatino, New Century Schoolbook, Bookman, Computer Modern Roman
font.sans-serif : Helvetica, Avant Garde, Computer Modern Sans serif
font.cursive : Zapf Chancery
font.monospace : Courier, Computer Modern Typewriter
text.usetex : true
每个族中的第一个有效字体是将要加载的字体。如果未指定字体,则默认使用计算机现代字体。所有其他字体都是Adobe字体。时代和帕拉蒂诺各自都有自己的数学字体,而其他的Adobe serif字体则利用计算机的现代数学字体。见 PSNFSS 有关详细信息的文档。
要使用 Latex 并选择Helvetica作为默认字体,而不编辑matplotlibrc,请使用:
from matplotlib import rc
rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
## for Palatino and other serif fonts use:
#rc('font',**{'family':'serif','serif':['Palatino']})
rc('text', usetex=True)
下面是标准示例, tex_demo.py
:
注意显示数学模式 ($$ e=mc^2 $$
)不支持,但添加命令 \displaystyle
,如 tex_demo.py
将产生相同的结果。
注解
某些字符需要用tex进行特殊转义,例如:
# $ % & ~ _ ^ \ { } \( \) \[ \]
因此,根据rcparam,这些字符的行为会有所不同 text.usetex
旗帜。
为了生成可嵌入到新的LaTex文档中的封装PostScript文件,Matplotlib的默认行为是提取输出,这会删除LaTex使用的某些PostScript运算符,这些运算符在EPS文件中是非法的。这一步会产生一些用户可能无法接受的结果,因为文本被粗栅格化并转换为位图,而位图不像标准PostScript那样可伸缩,并且文本不可搜索。一个解决方法是 ps.distiller.res
在RC设置中设置为更高的值(可能为6000),这将生成更大的文件,但可能看起来更好并具有合理的缩放比例。更好的解决方案,这需要 Poppler 或 Xpdf, 可以通过更改 ps.usedistiller
RC设置 xpdf
. 这种替代方法生成PostScript而不栅格化文本,因此可以适当缩放,可以在Adobe Illustrator中编辑,并在PDF文档中搜索文本。
PATH
可能需要修改环境变量,以包括包含LaTex、Dvipng和Ghostscript可执行文件的目录。见 环境变量 和 在Windows中设置环境变量 有关详细信息。.matplotlib/tex.cache
目录。如果你不知道在哪能找到 .matplotlib
见 matplotlib 配置和缓存目录位置 .PATH
.text.latex.preamble
未正式支持RC设置。这个选项提供了许多灵活性,以及许多导致问题的方法。在向邮件列表报告问题之前,请禁用此选项。