python - matplotlib/python 的 Latex 实现问题:RuntimeError: Latex command not found
问题描述
我想在我的 matplotlib 图形中使用乳胶作为我的标签。我正在使用 Mac OS X 和 thonny。我下载了一个测试程序,但每次我得到错误:
RuntimeError: Latex 命令未找到。安装 'xelatex' 或将 pgf.texsystem 更改为所需的命令。
我认为是路径错误...
我也尝试改变路径
os.environ["PATH"] += os.pathsep + '/usr/local/texlive/2018/bin/x86_64-darwin'
我收到了这个错误:
kpathsea:make_tex:无效文件名“DejaVu Serif”,包含“”/Users/Marten/Library/Python/3.7/lib/python/site-packages/matplotlib/init .py :886:MatplotlibDeprecationWarning:不推荐使用示例目录;将来,将在“datapath”目录中找到示例。“相对于'datapath'目录找到。”.format(key))/Users /Marten/Library/Python/3.7/lib/python/site-packages/matplotlib/ init .py:886:MatplotlibDeprecationWarning:examples.directory是已弃用;将来,将在“datapath”目录中找到示例。“相对于'datapath'目录找到。”.format(key))/Users/Marten/Library/Python/3.7/lib/python/site-packages/matplotlib/ init.py:886:MatplotlibDeprecationWarning:examples.directory 已弃用;将来,将在“datapath”目录中找到示例。“相对于'datapath'目录找到。”.format(key))/Users /Marten/Library/Python/3.7/lib/python/site-packages/matplotlib/ init .py:886:MatplotlibDeprecationWarning:examples.directory是已弃用;将来,将在“datapath”目录中找到示例。“相对于'datapath'目录找到。”.format(key))/Users/Marten/Library/Python/3.7/lib/python/site-packages/matplotlib/ init.py:886:MatplotlibDeprecationWarning:examples.directory 已弃用;将来,将在“datapath”目录中找到示例。“相对于'datapath'目录找到。”.format(key))/Users /Marten/Library/Python/3.7/lib/python/site-packages/matplotlib/ init .py:886:MatplotlibDeprecationWarning:examples.directory是已弃用;将来,将在“datapath”目录中找到示例。“相对于'datapath'目录找到。”.format(key))/Users/Marten/Library/Python/3.7/lib/python/site-packages/matplotlib/ init.py:886:MatplotlibDeprecationWarning:examples.directory 已弃用;将来,将在“datapath”目录中找到示例。“相对于'datapath'目录找到。”.format(key))/Users /Marten/Library/Python/3.7/lib/python/site-packages/matplotlib/ init .py:886:MatplotlibDeprecationWarning:examples.directory是已弃用;将来,将在“datapath”目录中找到示例。“相对于'datapath'目录找到。”.format(key))/Users/Marten/Library/Python/3.7/lib/python/site-packages/matplotlib/ init.py:886:MatplotlibDeprecationWarning:examples.directory 已弃用;将来,将在“datapath”目录中找到示例。“找到相对于‘数据路径’目录。”.format(key)) 回溯(最近一次调用):文件“/Users/Marten/Downloads/pgf_preamble_sgskip.py”,第 33 行,在 plt.tight_layout(.5)文件“/Users/Marten/Library/Python/3.7/lib/python/site-packages/matplotlib/pyplot.py”,第 1382 行,tight_layout gcf().tight_layout(pad=pad, h_pad=h_pad, w_pad=w_pad , rect=rect) 文件“/Users/Marten/Library/Python/3.7/lib/python/site-packages/matplotlib/figure.py”,第 2370 行,tight_layout 渲染器 = get_renderer(self) 文件“/Users/Marten /Library/Python/3.7/lib/python/site-packages/matplotlib/tight_layout.py",init self.latexManager = LatexManagerFactory.get_latex_manager() 文件“/Users/Marten/Library/Python/3.7/lib/python/site-packages/matplotlib/backends/backend_pgf.py”,第 208 行,在 get_latex_manager new_inst = LatexManager()文件“/Users/Marten/Library/Python/3.7/lib/python/site-packages/matplotlib/backends/backend_pgf.py”,第 290 行,在init !!!!!!\n!\n!字体规范错误:“未找到字体”\n!\n!找不到字体“DejaVu Serif”。\n! \n!有关详细信息,请参阅 fontspec 文档。\n! \n!如需即时帮助,请键入 H .\n!................................................. ...... \n \n<*> \setmainfont{DejaVu Serif}\n \n没有输出页面。\n写在 texput.log 上的文字记录。\n'
测试程序:
import matplotlib as mpl
mpl.use("pgf")
import matplotlib.pyplot as plt
import os
os.environ["PATH"] += os.pathsep + '/usr/local/texlive/2018/bin/x86_64-darwin'
plt.rcParams.update({
"font.family": "serif", # use serif/main font for text elements
"text.usetex": True, # use inline math for ticks
"pgf.rcfonts": False, # don't setup fonts from rc parameters
"pgf.texsystem" : "xelatex",
"pgf.preamble": [
"\\usepackage{units}", # load additional packages
"\\usepackage{metalogo}",
"\\usepackage{unicode-math}", # unicode math setup
r"\setmathfont{xits-math.otf}",
r"\setmainfont{DejaVu Serif}", # serif font via preamble
]
})
plt.figure(figsize=(4.5, 2.5))
plt.plot(range(5))
plt.xlabel("unicode text: я, ψ, €, ü, \\unitfrac[10]{°}{µm}")
plt.ylabel("\\XeLaTeX")
plt.legend(["unicode math: $λ=∑_i^∞ μ_i^2$"])
plt.tight_layout(.5)
plt.savefig("pgf_preamble.pdf")
plt.savefig("pgf_preamble.png")
解决方案
所以我尝试了一个不同的测试程序,有plt.rc('text', usetex=True)
和plt.rc('font', family='serif')
没有额外的序言。这在我添加路径时有效os.environ["PATH"] += os.pathsep + '/usr/local/texlive/2018/bin/x86_64-darwin'
。所以问题以不同的方式解决。– madden994 刚刚编辑
推荐阅读
- html - 如何在彼此之上显示div?
- python - 使用 python 脚本在记事本中进行算术运算
- postgresql - Postgres 触发器以避免在列中更新
- list - 使用列表作为变量的 Powershell 命令
- nlp - Gensim doc2vec,如何获取每一步损失函数的值
- azure - Azure AD B2C 自定义工作流 UI,除验证外的所有工作始终显示错误
- javascript - 在 typescript/javascript 中使用 fetch 读取 JSON
- php - 计算保持在 0.6 到 3.0 范围内的数字
- javascript - 用 Jest 模拟依赖关系中的依赖关系?
- html - 即使左 div 有更多数据,也希望左 div 与内容 div 匹配大小