Skip to content
/ autogpy Public

Gnuplot scripts and figures auto-generated in Python. Production-ready, Latex and Tikz rendering.

License

Notifications You must be signed in to change notification settings

acorbe/autogpy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 DownloadsPyPI - Downloads

Which problem does it solve? Open In Colab

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) or imagemagick 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.