#gnuplot #script #command #figure #wait #live #mode

yanked gnuplot-wrapper

A small wrapper for working with gnuplot

1 unstable release

0.0.4 Oct 26, 2024
0.0.3 Oct 20, 2024
0.0.2 Oct 19, 2024
0.0.1 Oct 19, 2024

#4 in #figure

Download history 314/week @ 2024-10-18 92/week @ 2024-10-25 10/week @ 2024-11-01 2/week @ 2024-11-08 3/week @ 2024-11-15

109 downloads per month

MIT license

19KB
436 lines

gnuplot-wrapper

Gnuplot - to get started with gnuplot.

GnuplotLiveProcess - for working with gnuplot in interactive mode.

GnuplorScriptProcess - for working with gnuplot in script launch mode.

Script - script for gnuplot.


Gnuplot::execute(script).wait().unwrap();

How to use

Start gnuplot

First of all we need to start gnuplot. There are three ways to do this.

Gnuplot::new(); // equals to Gnuplot::new_with_path_str("gnuplot")
Gnuplot::new_with_path_str("gnuplot");
Gnuplot::new_with_path(&String::from("gnuplot"));

Select mode

Then you need to decide in which mode you want to work with gnuplot and create an instance of gnuplot.

Scripting mode:

let script: Script = ...;
let mut gnuplot_process: GnuplorScriptProcess = gnuplot.execute_script(script);

Live mode:

let mut gnuplot_process: GnuplotLiveProcess = gnuplot.run_live();

Wait for gnuplot to complete

Wait for gnuplot to complete.

gnuplot_process.wait();

How to create a script

let mut script = Script::new();
script.add_raw_command("set term qt 0");
script.add_raw_command("plot sin(x)");
script.add_raw_command("set term qt 1");
script.add_raw_command("plot cos(x)");
script.save("/tmp/wk.plt");

How to send a command to a live gnuplot

gnuplot_process.write("set term qt 1");

How to wait for gnuplot to complete in live mode?

gnuplot_process.write("pause mouse close");    
gnuplot_process.wait();

Figure

You can use figure

let mut g: Gnuplot = Gnuplot::new();
let mut gp: GnuplotLiveProcess = g.run_live();

let mut fig = Figure::new(0, "/tmp/d.dat");

let data: Vec<f64> = vec![0.0, 0.2, 0.4, 0.3];
let time: Vec<f64> = vec![1.1, 2.1, 3.1, 4.1];

fig.plot(&data, &time);

let data: Vec<f64> = vec![1.0, 1.2, 1.4, 1.3];
let time: Vec<f64> = vec![1.0, 2.0, 3.0, 4.0];

fig.plot(&data, &time);
fig.title("Test figure");
gp.plot_figure(fig);

gp.wait();

No runtime deps