将matplotlib图形转换为tikz/pgfplots
tikzplotlib的Python项目详细描述
这是tikzplotlib,一个用于将matplotlib图形转换为 PGFPlots(PGF/TikZ) 如
用于本地包含到乳胶文档中。
tikzplotlib的输出是 PGFPlots,一个位于 在PGF/TikZ的顶部并用术语描述图 因此,tikzplotlib的输出
- 保留更多信息,
- 更容易理解,并且
- 更易于编辑
而不是raw TikZ output。 例如,matplotlib图
import matplotlib.pyplot as plt import numpy as np plt.style.use("ggplot") t = np.arange(0.0, 2.0, 0.1) s = np.sin(2 * np.pi * t) s2 = np.cos(2 * np.pi * t) plt.plot(t, s, "o-", lw=4.1) plt.plot(t, s2, "o-", lw=4.1) plt.xlabel("time (s)") plt.ylabel("Voltage (mV)") plt.title("Simple plot $\\frac{\\alpha}{2}$") plt.grid(True) import tikzplotlib tikzplotlib.save("test.tex")
(见上文)给出
\begin{tikzpicture}\definecolor{color0}{rgb}{0.886274509803922,0.290196078431373,0.2}\definecolor{color1}{rgb}{0.203921568627451,0.541176470588235,0.741176470588235}\begin{axis}[ axis background/.style={fill=white!89.80392156862746!black}, axis line style={white}, tick align=outside, tick pos=left, title={Simple plot $\frac{\alpha}{2}$}, x grid style={white}, xlabel={time (s)}, xmajorgrids, xmin=-0.095, xmax=1.995, y grid style={white}, ylabel={Voltage (mV)}, ymajorgrids, ymin=-1.1, ymax=1.1 ] \addplot [line width=1.64pt, color0, mark=*, mark size=3, mark options={solid}] table {% 0 0 0.1 0.587785252292473 % [...] 1.9 -0.587785252292473 }; \addplot [line width=1.64pt, color1, mark=*, mark size=3, mark options={solid}] table {% 0 1 0.1 0.809016994374947 % [...] 1.9 0.809016994374947 }; \end{axis}\end{tikzpicture}
(如果希望将代码作为字符串,请使用get_tikz_code()
,而不是save()
。)
调整情节很简单,可以作为乳胶工作流程的一部分来完成。 The fantastic PGFPlots manual包含 如何使你的情节看起来更好的好例子。
当然,并非所有由matplotlib生成的图形都可以无误地转换。 值得注意的是,3D plots don't work。
安装
tikzplotlib是available from the Python Package Index,所以只需键入
pip3 install tikzplotlib --user
安装/更新。
使用量
像往常一样生成matplotlib图。
通过
调用tikzplotlib而不是pyplot.show()
importtikzplotlibtikzplotlib.save("mytikz.tex")
将tikz文件存储为
mytikz.tex
。将
mytikz.tex
的内容添加到乳胶源代码中。方便的方法 这样做是通过\input{/path/to/mytikz.tex}
还要确保pgfplots和适当的unicode支持的包 包含在文档标题中:
\usepackage[utf8]{inputenc}\usepackage{fontspec}% optional\usepackage{pgfplots}\pgfplotsset{compat=newest}\usepgfplotslibrary{groupplots}\usepgfplotslibrary{dateplot}
贡献
如果你遇到了错误,想贡献自己,有什么好例子 tikzplotlib可以,或者如果您只是想了解更多信息,请 访问tikzplotlib's GitHub page。
测试
tikzplotlib有自动的单元测试,以确保软件不会
随着时间的推移不小心变得更糟。在test/
中,指定了许多测试用例。
运行tikzplotlib并将输出与先前存储的
引用tex文件。
要运行测试,只需签出此存储库并键入
pytest
许可证
tikzplotlib在MIT license下发布。