Package: matplotlib-pgfutils
pgfutilsThePortable Graphics Format (PGF)is a language for producing vector
graphics within TeX documents. There is also a higher-level language TikZ (TikZ
ist kein Zeichenprogramm -- TikZ is not a drawing program) which uses PGF.Since version 1.2, the Python plotting libraryMatplotlibhas included a
PGF backend to generate figures ready for inclusion in a TeX document. In order
to get consistent figures that fit with the style of the document, this
requires some configuration. The aim of pgfutils is to simplify this
configuration and allow figures to be easily generated from a Python script.The module provides two functions which set up and then save the figure. The
actual plotting is performed by standard Matplotlib functions. For example, to
generate a plot showing the 1st, 3rd, 5th, 7th, 9th and 11th harmonics of an
ideal square wave and the resulting sum:# Set up the figure environment.frompgfutilsimportsetup_figure,savesetup_figure(width=0.9,height=0.4)importnumpyasnpfrommatplotlibimportpyplotasplt# Generate a square wave from a few terms of its Fourier series.f=3t=np.linspace(0,1,501)square=np.zeros(t.shape)forninrange(1,12,2):# Create this harmonic and plot it as a dashed# partially-transparent line.component=np.sin(2*n*np.pi*f*t)/nplt.plot(t,component,'--',alpha=0.4)# Add it to the overall signal.square+=component# Scale the final sum.square*=4/np.pi# Plot and label the figure.plt.plot(t,square,'C0')plt.xlim(0,1)plt.ylim(-1.2,1.2)plt.xlabel("Time (s)")plt.ylabel("Amplitude (V)")# Save as a PGF image.save()Requirementspgfutils followsNEP29when determining supported Python versions. Any
minor version of Python released within the 42 months prior to a pgfutils
release is supported.The only required external dependency is Matplotlib. Any minor version of
Matplotlib released within the 24 months prior to a pgfutils release is
supported.Examplespgfutils comes with some examples which demonstrate its usage and integration
into a build system. Depending on your installation method, these may be
present somewhere in your filesystem (e.g., on a Linux system, they might be at/usr/share/matplotlib-pgfutils/examples). They can also be found in theextras/examples directory.DocumentationDocumentation for pgfutils can be found online athttps://matplotlib-pgfutils.readthedocs.io/Alternatively, you can find the source of this documentation in Markdown format
in the doc/ directory of the source:UsageConfigurationInteractive modeFile trackingLatexmk integrationAn example configuration file showing the default settings is given inextras/pgfutils.cfg.Unit testingExtensive unit tests are included in the tests/ directory of the source. Each
commit to the source repository is automatically tested using GitHub actions.
The test coverage (that is, how many of the lines of code in the source were
executed during the tests) is monitored byCodecov. The badges above show
the status of the last commit made to the source.You can also run the tests on a local copy of the code. They are designed to be
run with thepytestframework and employ theCoverage.pypackage via
thepytest-covplugin to measure the coverage. If you have these packages
installed, runpytestfrom the top-level directory to execute the tests. A
basic test coverage report will be printed on the terminal, and the full report
can be viewed by opening thehtmlcov/index.htmlfile in your web browser.Licensepgfutils is released under the three-clause BSD license. The terms of this
license can be found in the LICENSE file in the source, or online athttps://opensource.org/licenses/BSD-3-ClauseThe Cotham Sans font used in some unit tests is copyright (c) 2015 Sebastien
Sanfilippo and is licensed under the SIL Open Font License, Version 1.1. The
license can be found in the source at tests/sources/fonts/Cotham/OFL.txt or
online athttps://scripts.sil.org/OFLand the font itself can be found athttps://github.com/sebsan/Cotham