LaTeX在matplotlib图例中的引用

11

我使用Python和Matplotlib为技术论文生成图表。是否有办法在图例文本中包含Latex/Bibtex引用?理想情况下,我希望有类似以下的解决方案,但是我没有找到任何有效的方法:

import numpy as np
import matplotlib as mp
import matplotlib.pyplot as plt

x = np.linspace(0., 1., num=100)
y = x**2

plt.plot(x, y, label=r'Data \cite{<key>}')
plt.legend(loc=0)
plt.show()

你需要手动输入引用,那为什么不直接标记为“'Data Ref. [#]'”呢? - wflynny
us psfrag https://en.wikipedia.org/wiki/PSfrag - tacaswell
哦,你想自动化更新数字的过程。明白了。 - wflynny
2
一个包含bib文件的自定义latex前言是另一个选项(如果您在rc参数中指定了text.usetex=True或使用PGF后端,则可以使用自定义latex前言)。不知道那是否有效,但值得一试。如果您选择这条路线,您可能希望为您的图表选择PGF后端。我目前无法测试它,但请看这里:http://matplotlib.org/users/pgf.html和这里:http://matplotlib.org/users/usetex.html。 - Joe Kington
@JoeKington 感谢您建议使用matplotlib和pgf。您带领我找到了解决方案。 - LWhitson2
显示剩余4条评论
2个回答

10

可以使用Python的matplotlib pgf后端来完成此操作。用于生成图形的Python文件如下所示:

import numpy as np
import matplotlib as mpl
mpl.use('pgf')
import matplotlib.pyplot as plt

x = np.linspace(0., 1., num=100)
y = x**2

plt.plot(x, y, label=r'Data \cite{<key>}')
plt.legend(loc=0)
plt.savefig('fig.pgf')

然后,可以将pgf文件用于latex论文,如下所示:

\documentclass[letterpaper,10pt]{article}
\usepackage[utf8x]{inputenc}
\usepackage{pgf}

\begin{document}

  \begin{figure}
    \centering
    \input{fig.pgf}
    \caption{Test Figure}
  \end{figure}

\end{document}

每当编译LaTeX文件时,图例中的引用将自动更新。


1
不错!很好知道它能工作!我想将来我会用到那个技巧... - Joe Kington

2

请查看tikzplotlib(我的一个项目)。您可以使用它将matplotlib图保存为保留大量信息且易于编辑的TikZ / Pgfplots。添加BibTeX引用作为图例非常容易。


从matplotlib将绘图导入Latex时,使用这个模块真是一件愉悦的事情!感谢你的贡献。 - spideyonthego

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接