Package: tikzplotlib
The artist formerly known asmatplotlib2tikz.This is tikzplotlib, a Python tool for converting matplotlib figures intoPGFPlots(PGF/TikZ)
figures likefor native inclusion into LaTeX or ConTeXt documents.The output of tikzplotlib is inPGFPlots, a TeX
library that sits on top ofPGF/TikZand
describes graphs in terms of axes, data etc. Consequently, the output of tikzplotlibretains more information,can be more easily understood, andis more easily editablethanraw TikZ output.
For example, the matplotlib figureimportmatplotlib.pyplotaspltimportnumpyasnpplt.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)importtikzplotlibtikzplotlib.save("test.tex")importmatplotlibasmplplt.close()mpl.rcParams.update(mpl.rcParamsDefault)-->
(see above) gives\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.8039215686275!black},
axis line style={white},
tick align=outside,
tick pos=left,
title={Simple plot\(\displaystyle\frac{\alpha}{2}\)},
x grid style={white},
xlabel={time (s)},
xmajorgrids,
xmin=-0.095, xmax=1.995,
xtick style={color=white!33.3333333333333!black},
y grid style={white},
ylabel={Voltage (mV)},
ymajorgrids,
ymin=-1.1, ymax=1.1,
ytick style={color=white!33.3333333333333!black}]\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}(Useget_tikz_code()instead ofsave()if you want the code as a string.)Tweaking the plot is straightforward and can be done as part of your TeX work flow.The fantastic PGFPlots manualcontains
great examples of how to make your plot look even better.Of course, not all figures produced by matplotlib can be converted without error.
Notably,3D plots don't work.Installationtikzplotlib isavailable from the Python Package
Index, so simply dopip install tikzplotlibto install.UsageGenerate your matplotlib plot as usual.Instead ofpyplot.show(), invoke tikzplotlib byimporttikzplotlibtikzplotlib.save("mytikz.tex")# ortikzplotlib.save("mytikz.tex",flavor="context")to store the TikZ file asmytikz.tex.Add the contents ofmytikz.texinto your TeX source code. A convenient way of doing
so is via\input{/path/to/mytikz.tex}Also make sure that the packages for PGFPlots and proper Unicode support and are
included in the header of your document:\usepackage[utf8]{inputenc}\usepackage{pgfplots}\DeclareUnicodeCharacter{2212}{−}\usepgfplotslibrary{groupplots,dateplot}\usetikzlibrary{patterns,shapes.arrows}\pgfplotsset{compat=newest}or:\setupcolors[state=start]\usemodule[tikz]\usemodule[pgfplots]\usepgfplotslibrary[groupplots,dateplot]\usetikzlibrary[patterns,shapes.arrows]\pgfplotsset{compat=newest}\unexpanded\def\startgroupplot{\groupplot}\unexpanded\def\stopgroupplot{\endgroupplot}You can also get the code via:importtikzplotlibtikzplotlib.Flavors.latex.preamble()# ortikzplotlib.Flavors.context.preamble()[Optional] Clean up the figure before exporting to tikz using theclean_figurecommand.importmatplotlib.pyplotaspltimportnumpyasnp# ... do your plottingimporttikzplotlibtikzplotlib.clean_figure()tikzplotlib.save("test.tex")The command will remove points that are outside the axes limits, simplify curves and
reduce point density for the specified target resolution.The feature originated from thematlab2tikzproject and is adapted to
matplotlib.ContributingIf you experience bugs, would like to contribute, have nice examples of what tikzplotlib
can do, or if you are just looking for more information, then please visittikzplotlib's GitHub page.Testingtikzplotlib has automatic unit testing to make sure that the software doesn't
accidentally get worse over time. Intest/, a number of test cases are specified.
Those run through tikzplotlib and compare the output with a previously stored reference
TeX file.To run the tests, just check out this repository and typepytestLicensetikzplotlib is published under theMIT
license.