Skip to content

Tool for quickly plotting things from terminal.

Notifications You must be signed in to change notification settings

JaakkoAnnala/pplot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pplot

Tool for quickly plotting things from commandline to matplotlib.

Quick start

$pplot.py data.txt 0 1 2

Plots columns 0 1 2 from file data.txt, assumes the file contains data separated by white spaces and contains atleast 3 columns.

$pplot.py data*.txt -c 0 1 2

Plots columns 0 1 2 from all files matched by data*.txt.

One file can be piped in through stdin (use -p to select which columns to plot from piped data):

$ cat data.txt | pplot.py -p 1 2 3

Possible to plot error bars -e, histograms -hist, 3d surfaces -surf, subplots -subf, etc.. See help for all possible commands:

$pplot.py -h

Plot Expressions:

Plot expressions from the read in data. The ith column of nth file is denoted as f[n]_[i] in the expressions. All numpy array functions and constants should be usable. More than one expression can be given at the same time.

$pplot.py file0.txt file1.txt -expr "( f0_0 - mean(f0_0) )/pi"  "sin(f1_1) - cos(f0_1)"

If expressions contain different file numbers file columns are assumed to have the same length.

Using in scripts

Can be used in scripts to edit a figure further. See pp_script_example.py.

Custom data reader:

It is possible to write a custom data reader method. The method should be put into data_readers/ folder with the following format: The file containing the code for the reader [reader_name].py should contain a function with the same name as the file and with the signature def [reader_name](pp: pplot, fname: str). The function is expected to return a tuple ( data: numpy.ndarray , labels: list\[str\] ). The data is expected to be 2d array with shape (num_rows, num_cols). Labels can be an empty list [], if not it is expected to be a list of strings with length num_cols containing the labels. You can do what ever in the method even read a custom binary format.

Then to use a specific reader use the command -rf [reader_name].

See data_readers/data_reader_example.py.

$pplot.py data.txt 1 -x0 -rf data_reader_example

Dependencies:

Python3:

  • numpy (tested on v1.22.3)
  • sympy (tested on v1.9)
  • matplotlib (tested on v3.5.1)

Optional:

GNU utils:

  • grep
  • wc
  • sed

Should be installed and in your $PATH. For now, used in default data reader for finding tag_data_start tag_data_end and tag_header tags. Can be disabled by setting defaults as tag_data_start=None, tag_data_end=None, tag_header=None.

Warning:

The script does not do much of error handling. For example, if you pass a column that does not exist the script will just crash and print python stack trace.

There are bound to be bugs.

About

Tool for quickly plotting things from terminal.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages