autogpy - AutoGnuplot.py

Automatic generation of gnuplot figures/scripts/data from python.

Author: Alessandro Corbetta, 2019-2020
Documentation: https://acorbe.github.io/autogpy/
Examples Link
Github Link

PyPI build status Downloads PyPI - Downloads

Which problem does it solve? .. image:: https://colab.research.google.com/assets/colab-badge.svg


autogpy eliminates annoying duplications of code and data when employing python for data analysis and gnuplot for figures. Providing a gnuplot-like or a matplotlib-like syntax, autogpy automatically generates gnuplot scripts and dumps suitably the data.

Autogpy-Demo

Links: [Source] [Output]

Main features

  • [Reference] [Example 1 2] anything that be obtained by the gnuplot command plot can be produced

  • output figures are shipped in a folder which includes scripts, data and makefile

  • any gnuplot state modification can be achieved

  • terminals epslatex, tikz/pgfplot and jpg

  • multiplots

  • plt.hist-like gnuplot histogram figures generator

  • jupyter notebook figure preview

  • jupyter notebook gnuplot script inspection

  • easy scp-based synchronization between a machine in which the figures are generated (e.g. from even larger datasets) and the “paper writing” machine.

Requirements

  • Linux/MacOs (could work on Windows, yet it has not been adjusted for)

  • Python 3

  • Working latex distribution

  • Gnuplot, optionally with tikz terminal (tikz terminal requires a working installation of luatex)

  • pdftoppm (via ``poppler-utils` <https://command-not-found.com/pdftoppm>`_) or ``imagemagick` <https://command-not-found.com/convert>`_ to convert the output pdf figures in png format for jupyter notebook preview

  • Note: in case pdftoppm is unavailable, imagemagick offline conversions pdf to png must be enabled (sudo sed -i '/PDF/s/none/read|write/' /etc/ImageMagick-6/policy.xml) [Reference]

Getting autogpy

Via pip

pip install autogpy

On Google Colab

!apt install gnuplot texlive poppler-utils ghostscript texlive-latex-extra
!pip install autogpy

From source

git clone git@github.com:acorbe/autogpy.git
pip install autogpy/

In a nutshell

Please see also the examples and the documentation.

import autogpy
import numpy as np

xx = np.linspace(0,6,100)
yy = np.sin(xx)
zz = np.cos(xx)

with autogpy.AutogpyFigure("test_figure") as figure:

    # gnuplot-like syntax
    figure.plot(r'with lines t "sin"',xx,yy)

    # matplotlib-like syntax
    figure.plot(xx,zz,u='1:2',w='lines',label='cos')

generates the following figure (also appearing in jupyter)

example figure

Most importantly, the following source and data are created in the folder test_figure

$ ls test_figure

.gitignore
Makefile
sync_me.sh
fig__0__.dat
fig__1__.dat
fig__.core.gnu
fig__.jpg.gnu
fig__.pdflatex_compile.sh
fig__.pdflatex.gnu
fig__.tikz_compile.sh
fig__.tikz.gnu

With make one can obtain jpg, epslatex, and tikz/pgfplot versions of the figure. Notice that the input data has been formatted automatically and dumped in the .dat files.

Inspecting the fig__.pdflatex.gnu, responsible of the epslatex version of the figure, one gets:

set terminal epslatex size 9.9cm,8.cm color colortext standalone      'phv,12 '  linewidth 2
set output 'fig.latex.nice/plot_out.tex'

p "fig__0__.dat" with lines t "sin",\
"fig__1__.dat" u 1:2 with lines t "cos"

KWONW ISSUES

  • Certain features require imagemagick and a working gnuplot-tikz.lua. Some versions of these might have bugs. Call figure.display_fixes() to show known fixes.

Contents:

Indices and tables