Matplotlib 中文用户指南 4.7 使用 LaTeX 渲染文本

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matplotlib 中文用户指南 4.7 使用 LaTeX 渲染文本相关的知识,希望对你有一定的参考价值。

参考技术A Matplotlib 可以选择使用 LaTeX 来管理所有文本布局。 此选项可用于以下后端:

LaTeX 选项通过在 rc 设置中设置 text.usetex:True 来激活。 使用 matplotlib 的 LaTeX 支持的文本处理会慢于 matplotlib 的非常强大的 mathtext,但是更灵活,因为可以使用不同的 LaTeX 包(字体包,数学包等)。 结果会十分惊人,特别是当你在图形中使用和主文档相同的字体。

Matplotlib 的 LaTeX 支持需要可用的 LaTeX 安装版本,dvipng(可能包括在你的 LaTeX 安装中)和 Ghostscript(建议使用 GPL Ghostscript 8.60 或更高版本)。 这些外部依赖的可执行文件必须都位于你的 PATH 中。

有几个选项需要提及,可以使用 rc 设置更改它们。 这里是一个 matplotlibrc 示例文件:

每个系列中的第一个有效字体是要加载的字体。 如果未指定字体,则默认使用 Computer Modern 字体。 所有其他字体是 Adobe 字体。 Times 和 Palatino 每个都有自己附带的数学字体,而其他 Adobe 衬线字体使用 Computer Modern 数学字体。 有关更多详细信息,请参阅 PSNFSS 文档。

要使用 LaTeX 并选择 Helvetica 作为默认字体,但不编辑 matplotlibrc ,使用:

这里是标准的示例, tex_demo.py :

要注意数学显示模式( $$ e=mc^2 $$ )是不支持的,但是添加命令 \displaystyle 之后会产生相同结果,就像 tex_demo.py 中那样。

也可以在 LaTeX 文本管理器中使用 unicode 字符串,这里是从 tex_unicode_demo.py 中获取的示例:

为了生成可以嵌入到新 LaTeX 文档中的 postscript 封装文件,matplotlib 的默认行为是提取输出,这会删除 LaTeX 使用的一些 postscript 操作符,这些操作符在 eps 文件中是非法的。 此步骤产生的结果对于一些用户可能是不可接受的,因为文本被粗略地光栅化并且被转换为位图,而不像标准 Postscript 那样是可缩放的,并且文本是不可搜索的。 一种解决方法是在你的 rc 设置中将 ps.distiller.res 设置为较高的值(可能为 6000),这将产生较大的文件,但可能看起来更好并能够合理缩放。 更好的解决方法需要 Poppler 或 Xpdf,可以通过将 ps.usedistiller rc 设置更改为 xpdf 来激活。 此替代方案产生 postscript 而不光栅化文本,因此它能够正确缩放,可以在 Adobe Illustrator 中编辑,并搜索 pdf 文档中的文本。

《Nuitka打包实战指南》实战打包Matplotlib

实战打包Matplotlib

打包示例源码:

请看文章末尾

版本信息:

matplotlib==3.4.3

Nuitka==0.6.19.1

打包系统:

 Windows10 64位

打包前先运行以下程序,确保没有问题:

import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel(\'some numbers\')
plt.show()

运行截图如下:

打包分析如下:

  1. matplotlib是一个相对来说比较大的第三方库,所以第一想法就是用--nofollow-imports命令来禁止打包所有引入的库,否则担心打包时间将会非常长。
  2. 既然使用了--nofollow-imports,那么matplotlib是不会自动被添加到hello.dist文件夹中的,当然我们可以在打包之后手动复制进去。第一次打包我们先用这种方法。

以上是关于Matplotlib 中文用户指南 4.7 使用 LaTeX 渲染文本的主要内容,如果未能解决你的问题,请参考以下文章

[QNX Hypervisor 2.2用户手册]4.7 Hypervisor 磁盘镜像

[QNX Hypervisor 2.2用户手册]4.7 Hypervisor 磁盘镜像

在 matplotlib 用户界面中更新颜色条而不重置缩放历史记录

Python Matplotlib 绘图使用指南!秘籍已传授给你了!

使用 asyncio 对 matplotlib 中的鼠标单击事件做出反应

在 PySimpleGUI 窗口中自动更新 Matplotlib 图