The function plot() is an easy way to display data which consist of x- and y-pairs.
GQE::plot( x => $x,
y => $y,
start => $x_start, # optional, def. 0
stop => $x_stop, # optional, def. 1
np => $np_max, # optional, def. 1000
xlabel => "x-descr.", # optional, def. Position
ylabel => "y-descr.", # optional, def. Signal
title => "Title", # optional, def. name
comment => "some text", # optional
name => "generic_name", # optional, def. PlotScan
);
$name = GQE::plot( method => "getname"); # returns the GQE name
($max_x, $max_y) =
GQE::plot( method => "maximum"); # returns the coord. of the maximum
GQE::plot( method => "postscript",
printer => "printerName"); # optional, default: $SYM{printer},
# $ENV{PRINTER}, $ENV{LPDEST}
GQE::plot( method => "reset");
GQE::plot( method => "write", # create a fio-file
file_name => "filename", # optional
fio_params => "p1 val1 p2 val2 ...”,
# name/value pairs of fio parameters
hexapod => "yes", # optional, default 'no'
motors => "yes"); # include motor positions, opt., def. 'no'
GQE::plot( x_ptr => \@array_x, # passes arrays instead of scalars
y_ptr => \@array_y, #
...
);
If plot() is used to pass scalars, the user supplies x- and y-values. They are appended to the existing data and displayed. x may start at high or at low values. The plot is resetted, if the x-values change their direction (plot() has been coded to display a signal during the adjustment moves of single motors). The plot can also be resetted, if the corresponding method (reset) is invoked.
Here is an example:
#!/usr/local/perl
use Spectra;
use GQE;
my $y = 0;
my $x = 0;
my $delta = 0.1;
while(1)
{
$y = sin( $x);
GQE::plot( x => $x,
y => $y,
xlabel => "Position");
$let = keyw(); # read keystrokes
last if( $let == 32); # the space bar terminates the loop
$x += $delta if $let == 274 ; # up-arrow
$x -= $delta if $let == 275 ; # down-arrow
}
return;
The following example shows how plot() is used to pass arrays.
#!/usr/local/perl
use Spectra;
use GQE;
@x_arr = ( 1 .. 1000);
@y_arr = ( 1 .. 1000);
foreach my $y (@y_arr)
{
$y = sin($y/10);
}
GQE::plot( x_ptr => \@x_arr,
y_ptr => \@y_arr,
name => "sinus");