SciPlot Demo Programs


Building

Two demo programs are shipped with the source distribution. Both require GTK4, Cairo, and Pango (via pkg-config). Build with the standard autotools sequence:

autoreconf -fi && ./configure && make

The two programs produced are sciplot-xyplot and sciplot-realtime.


sciplot-xyplot — x/y plotter

The sciplot-xyplot program takes a text file (or standard input) as input and plots the data as x/y or polar plots. More than one set of data may appear in a single plot frame, and more than one plot frame may be displayed at once. As shown in the screen shot, many widget features are available as interactive controls before generating a PostScript copy.

Screen Shot

[Picture of demo frame]

Usage

sciplot-xyplot [OPTION...] [FILE...]

sciplot-xyplot accepts one or more input files on the command line, or reads from standard input if none are given. Use --help for a full option list and --version for version information.

Input File Format

There are five commands recognised in the input file. Optional items are enclosed in [square brackets].

Title [title]
Starts a new plot window, optionally setting the plot title.
Xaxis [label]
Sets the x-axis label.
Yaxis [label]
Sets the y-axis label.
Polar [rad]
Switches the current plot to polar mode. Angles are in degrees by default; add the keyword rad for radians.
Line legend-label
Begins a new data series. Data lines follow immediately; the parser continues reading pairs of numbers until it encounters another command or end-of-file. Values are separated by commas, equals signs, or whitespace; both coordinates must appear on the same line.

The keyword skip may appear in place of a data line to break the line into disjoint segments (see SCIPLOT_SKIP_VAL).

Text labels should be enclosed in double-quote characters.

Sample Input File

Title="Crack Growth Comparison"
Xaxis="Number of Cycles (kc)"
Yaxis="Crack Depth (mm)"

Line="25% strain"
0.000000e+00    2.000000e+00
1.373497e+02    2.500000e+00
2.403780e+02    3.000000e+00
skip
3.205736e+02    3.500000e+00
3.845680e+02    4.000000e+00

Line="50% strain"
0.000000e+00    2.000000e+00
3.480081e+01    2.500000e+00
6.082956e+01    3.000000e+00
skip
8.105608e+01    3.500000e+00
9.719518e+01    4.000000e+00

Line="100% strain"
0.000000e+00    2.000000e+00
4.212263e+00    2.500000e+00
6.219232e+00    3.000000e+00
7.458972e+00    3.500000e+00
8.387889e+00    4.000000e+00


sciplot-realtime — Streaming real-time plotter

sciplot-realtime reads whitespace- or comma-separated numeric data from standard input and updates the plot as each line arrives.

Input format

One sample per line. Lines beginning with # are ignored.
Columns per lineInterpretation
1: y Single Y series; X auto-increments from 0
2: x y Explicit X and one Y series
N: x y1 y2 … Explicit X and N−1 Y series

The number of series is fixed by the first data line. When standard input reaches EOF the plot window stays open for interactive use (axis toggles, PostScript export, etc.).

Options

OptionDescription
-t, --title TEXTPlot title (default: "Real-time Data")
-x, --xlabel TEXTX axis label
-y, --ylabel TEXTY axis label
-l, --legend NAME,...Comma-separated series names
-V, --versionShow version and exit
-h, --helpShow help and exit

Usage

sciplot-realtime [OPTION...]

Examples:

# Plot a single sensor channel
sensor-tool | sciplot-realtime --ylabel "Temperature (C)"

# Plot multiple channels with named series
multi-sensor | sciplot-realtime --legend "ch1,ch2,ch3" --xlabel "Sample"

# Non-interactive preview of a data file
sciplot-realtime < data.txt

# Plot ping round-trip times
ping host | awk '/time=/{gsub(/.*time=/,""); gsub(/ .*/,""); print}' \
          | sciplot-realtime --ylabel "RTT (ms)"


SciPlot : Programmer's Reference | Demo Programs

Originally by Rob McMullen. GTK4 port by Barak A. Pearlmutter. Updated: 2 Jun 2026