将matplotlib图形转换为tikz/pgfplots

matplotlib2tikz的Python项目详细描述


matplotlib2tikz已重命名为tikzplotlibmatplotlib2tikz将不再受支持。


matplotlib2tikz

CircleCIcodecovCode style: blackDocumentation StatusawesomePyPi VersionDOIGitHub starsPyPi downloads

这是matplotlib2tikz,一个用于将matplotlib图形转换为 PGFPlotsPGF/TikZ) 如

用于本地包含到乳胶文档中。

matplotlib2tikz的输出是 PGFPlots,一个位于 在PGF/TikZ的顶部并用术语描述图 因此,matplotlib2tikz的输出

  • 保留更多信息,
  • 更容易理解,并且
  • 更易于编辑

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 matplotlib2tikz

matplotlib2tikz.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

安装

matplotlib2tikz是available from the Python Package Index,所以只需键入

pip3 install matplotlib2tikz --user

安装/更新

使用量

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

  2. 调用matplotlib2tikz而不是pyplot.show()

    importmatplotlib2tikzmatplotlib2tikz.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}

贡献

如果你遇到了错误,想贡献自己,有什么好例子 matplotlib2tikz可以,或者如果您只是想了解更多信息,请 访问matplotlib2tikz's GitHub page

测试

matplotlib2tikz具有自动单元测试功能,以确保软件不会 随着时间的推移不小心变得更糟。在test/中,指定了许多测试用例。 运行matplotlib2tikz并将输出与以前存储的 引用tex文件。

要运行测试,只需签出此存储库并键入

pytest

分布

创建新版本

  1. __version__号撞一下,

  2. 发布到pypi和github:

    $ make publish
    

许可证

matplotlib2tikz在MIT license下发布。

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

推荐PyPI第三方库


热门话题
java如何从旧的ArrayList<ArrayList<Integer>>创建新的ArrayList而不更改旧的?   java JBoss 7 |从随机线程写入jndi   java如何在数据库中有空值的JPA实体中迭代联接列   java Android应用程序在setContentView上崩溃   java如何在表单中预先填充文本字段,其中包含数据库中的信息。jsp?   来自R.raw的java Android文件阅读器。文件   如何将多个WAR(或Java Web应用程序,特别是使用Spring MVC)嵌入到一个承载另一个WAR的网页中?   java动态更新Jlist   gwt分页大结果集Java的最佳方式是什么   JavaCDI:为什么我的瞬态字段被序列化?   使用JAXB更新java XML模板文件   java getGraphics()返回空值   扩展javax的java类。ws。rs.core。无法将应用程序强制转换为Servlet   java方法可能无法在异常时关闭流   公共类的表达式的java非法开始   java年轻一代GC在EXT根扫描上花费了太多时间   使用CXF和具有未发布元数据的WSDL的java