将matplotlib图形转换为tikz/pgfplots

tikzplotlib的Python项目详细描述


tikzplotlib

CircleCIcodecovCode style: blackDocumentation StatusawesomePyPi VersionDOIGitHub starsPyPi downloads

这是tikzplotlib,一个用于将matplotlib图形转换为 PGFPlotsPGF/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

安装/更新。

使用量

  1. 像往常一样生成matplotlib图。

  2. 通过

    调用tikzplotlib而不是pyplot.show()
    importtikzplotlibtikzplotlib.save("mytikz.tex")

    将tikz文件存储为mytikz.tex

  3. 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下发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java创建一个数组和一个函数,允许从数组中删除零   java仅为一个函数使用后台   java为什么我看不到Android应用程序的布局?   如何使用Java通过重定向到SAML登录   java从列表中获取连续对   java在spring的构造函数中使用自动连线依赖项   java Libgdx如何设置复选框和文本标签之间的空间   xml-java。util。日期至xmlgoriancalendar   用ddlutils转换数据库的java问题   java我能在main方法中写“public int I=0”吗?   java JPA模拟hibernate的LobCreator?   使用本地变量的单例java安全发布   java videoview未在设备上显示,也未进行xml设计,   spring boot测试如何使用java api将Ldif文件中的默认数据添加到Ldap服务器?   如何在java中获取XML文件中节点的完整路径?   java只使用不同ArrayList中的一个字段搜索具有多个字段的ArrayList