首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SVG/EPS/PDF图像中将数学符号呈现为文本?

如何在SVG/EPS/PDF图像中将数学符号呈现为文本?
EN

Stack Overflow用户
提问于 2022-11-17 15:07:33
回答 2查看 74关注 0票数 2

例如,在使用Python创建图形时。可以将这些图形保存为矢量图形(SVG、EPS、PDF),文本单独呈现。这使得在pdf文件中显示文本时可以选择或搜索文本。但是,除了文本(在乳液中)之外,我还尝试使用数学符号来呈现一个简单的图形。数学符号被编码为图像的一部分,而不是文本。

下面是一个最小可重现性的例子。

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt

x_list = np.linspace(-10,10,num=128)

y = list(map(lambda x: (x**2 + x + 1), x_list))

plt.plot(y, label="$\\Psi_{example}$")
plt.legend()
plt.xticks(np.linspace(0, 128, num=8),
            map(round, np.linspace(-10, 10, num=8), [0] * 8))

plt.savefig("./example.pdf")

这会产生以下图像。

当将此图像保存为矢量图形时,所有数字以及图例中的“示例”字都可以选择/搜索(即呈现为文本)。但是,Ψ(Psi)字符是不可选择/可搜索的。

有没有办法让数学符号在矢量图形中呈现为文本?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-22 16:20:03

通过首先安装LaTeX发行版(我使用了MikTex,来自这里),然后将matpotlib选项设置为使用LaTeX来呈现符号和文本,我已经能够让它以我想要的方式工作。

注意,在安装MikTex之后,我必须打开命令提示符或代码编辑器的一个新实例,以确保它知道对我的路径的更改以及LaTex的安装位置。

我在示例中添加了导入和mpl.rcParams行:

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rcParams['text.usetex'] = True
x_list = np.linspace(-10, 10, num=128)

y = list(map(lambda x: (x**2 + x + 1), x_list))

plt.plot(y, label="$\\Psi_{example}$")
plt.legend()
plt.xticks(np.linspace(0, 128, num=8),
            map(round, np.linspace(-10, 10, num=8), [0] * 8))

plt.savefig("./example.pdf")

票数 2
EN

Stack Overflow用户

发布于 2022-11-22 18:20:56

这是两件不同的事。字符用代码表示。在这种情况下,您无法选择某些字符,因为用于显示呈现结果的软件没有在其字体库中定义Unicode。因此,它把这个字符当作一个物体或一个空盒子(通常称为“豆腐”)。但是将您的python代码(或TeX文件)转换为PDF/SVG的呈现引擎确实理解这个Unicode,这就是为什么您可以看到这个特定的字符。了解这个问题的根源就这么多了。

解决方案:如果您正在使用该平台查看结果,您可以使用另一个IDE/浏览器。Chrome通常支持大多数Unicodes。除了最近定义的那些。

此外,Ψ(Psi)是一个希腊字母。检查您的操作系统是否在其字体库中安装了希腊字母。如果没有,请转到Unicode 网站并搜索“显示问题”,它将生成一个页面,解释如何根据您的操作系统或浏览器安装字体。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74477713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档