Latex 文本渲染

在matplotlib中使用 Latex 渲染文本。

Matplotlib可以选择使用LaTex来管理所有文本布局。此选项可用于以下后端:

  • 自动增益控制
  • PS
  • PDF

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,请使用:

import matplotlib as mpl
plt.rcParams.update({
    "text.usetex": True,
    "font.family": "sans-serif",
    "font.sans-serif": ["Helvetica"]})
## for Palatino and other serif fonts use:
plt.rcParams.update({
    "text.usetex": True,
    "font.family": "serif",
    "font.serif": ["Palatino"],
})

下面是标准示例, /gallery/text_labels_and_annotations/tex_demo

../../_images/sphx_glr_tex_demo_0012.png

特克斯演示

注意显示数学模式 ($$ e=mc^2 $$ )不支持,但添加命令 \displaystyle ,将产生相同的结果。

注解

某些字符需要用tex进行特殊转义,例如:

# $ % & ~ _ ^ \ { } \( \) \[ \]

因此,这些角色的行为将因环境而异 rcParams["text.usetex"] (default: False) .

带Unicode的UseTex

也可以将Unicode字符串与LaTex文本管理器一起使用,下面是一个示例 /gallery/text_labels_and_annotations/tex_demo . 轴标签包括Unicode文本:

../../_images/sphx_glr_tex_demo_0012.png

Tex Unicode演示

PostScript选项

为了生成可嵌入到新的LaTex文档中的封装PostScript文件,Matplotlib的默认行为是提取输出,这会删除LaTex使用的某些PostScript运算符,这些运算符在EPS文件中是非法的。这一步会产生一些用户可能无法接受的结果,因为文本被粗栅格化并转换为位图,而位图不像标准PostScript那样可伸缩,并且文本不可搜索。一个解决方法是 ps.distiller.res 在RC设置中设置为更高的值(可能为6000),这将生成更大的文件,但可能看起来更好并具有合理的缩放比例。更好的解决方案,这需要 PopplerXpdf, 可以通过更改 ps.usedistiller RC设置 xpdf . 这种替代方法生成PostScript而不栅格化文本,因此可以适当缩放,可以在Adobe Illustrator中编辑,并在PDF文档中搜索文本。

可能的宿醉

  • 在Windows上 PATH 可能需要修改环境变量,以包括包含LaTex、Dvipng和Ghostscript可执行文件的目录。见 环境变量在Windows中设置环境变量 有关详细信息。
  • 使用Miktex和电脑现代字体,如果你感到奇怪 * agg和png结果,转到miktex/options并更新格式文件
  • 在Ubuntu和Gentoo上,Base-TexLive安装不附带1cm型软件包。您可能需要安装一些额外的软件包,以获得与其他 Latex 分发捆绑在一起的所有商品。
  • 已经取得了一些进展,因此matplotlib直接将dvi文件用于文本布局。这使得LaTex可以用于PDF和SVG后端的文本布局,以及 * AGG和PS后端。将来, Latex 安装可能是唯一的外部依赖。

故障排除

  • 尝试删除您的 .matplotlib/tex.cache 目录。如果你不知道在哪能找到 .matplotlibmatplotlib 配置和缓存目录位置 .
  • 确保LaTex、Dvipng和Ghostscript都在工作,并且 PATH .
  • 确保您正在尝试的操作在LaTex文档中是可能的,确保您的LaTex语法有效,并且在必要时使用原始字符串以避免意外的转义序列。
  • 邮件列表中报告的大多数问题已通过升级清除 Ghostscript. 如果可能,请在向列表报告问题之前尝试升级到最新版本。
  • 这个 text.latex.preamble 未正式支持RC设置。这个选项提供了许多灵活性,以及许多导致问题的方法。在向邮件列表报告问题之前,请禁用此选项。
  • 如果您仍需要帮助,请参阅 得到帮助

关键词:matplotlib代码示例,codex,python plot,pyplot Gallery generated by Sphinx-Gallery