BONGO (Linux)
Franco Zavatti
franco.zavatti@zafzaf.it
An Introduction to Bongo
BONGO COMMANDS: the complete description
(124 active commands)
The last six boldface commands refer only to screen coordinates
(pixels).
The same commands have been listed in
green below, at the end of the command list.
Starting from 27 October 2014, also a brief description of some
applications (APPs) begins:
The APPs are external and indipendent code (executables) which can
be run from within Bongo (e.g. DOS cbm or DOS
afit), giving values or output files useful to Bongo or the user.
Clicking on the corresponding box, an html description of the app can be
read.
ARR
Format: ARR x2 y2 l2 ang
Parameters: xend, yend, length (pixels), angle
(degrees)
Function: Draws an arrow, from the actual current point (command RELOC
must be supplied before ARR) to x2, y2 in user's coordinates. Also given
the length of the head (L2) and the angle between body and
head (α, degrees) as in this plot (arrowbase.png). The
last defined drawing color is used.
See also: SDRAW, MOVE.
For a geometrical description see:
https://math.stackexchange.com/questions/1314006/drawinganarrow.
Bugs: none.
Example: See a plot (png)
and the relative command file testarr.bon
BANDX
Format: BANDX xini xfin
Parameters: xini xfin  start and end x usercoordinates
Function: Draws a vertical rectangle from (xini,y1) to (xfin,y2),
y1,y2 beeing the physical limits of the graph (i.e.,by default
200 and 599 pixels, may be changed by PHYSICAL)
See also: BANDY,PHYSICAL,MACRO
Examples:bandxy.png,.bon, data
file,macro (periods.bmr)
BANDY
Format: BANDY yini yfin
Parameters: yini yfin  start and end y usercoordinates
Function: Draws a horizontal rectangle from (x1,yini) to (x2,yfin),
x1,x2 beeing the physical limits of the graph (i.e.,by default
120 and 519 pixels, may be changed by PHYSICAL)
See also: BANDX,PHYSICAL,MACRO
Examples:bandxy.png,.bon, data
file,macro (periods.bmr)
BBB
Format: BBB
Parameters: None
Function: display on stdout (screen) the first 20 columns of the
vector BBB(7000,50) containg actual data.
Bugs: None
BIN
Format: BIN nbin wbin flag
Parameters: nbin  number of bins. If zero, nbin is computed
from wbin.
On exit nbin will be nbin+1.
wbin  bins width in user units. If zero, wbin is
computed from nbin. flag  if=1 the xvalues in LIMITS
are used as xrange of the histogram; if=0 the xrange is
computed from YV data. (note that joining "xrange" and "YV"
is not a mistake: the xrange is the minmax of the Yvector)
Function: Defines number of bins and their width for an histogram.
After this command, XV and YV remain
unchanged.
BIN calls the routine BIN(YV,KMAX,NB,SB,FLAG): i.e. it bins the YV
vector and produces the output file bin.out
with NBIN, SBIN, MIN, MAX and: Ordinal,
Bincenter abscissa, Bin content (N). So, remember: after BIN you need
to open bin.out and read it (may be 1.st and 3.rd columns) from line 2 to line
nbin (or any number larger than nbin) and run HISTO (or STAIRS) on the
justread XV and YV internal vectors.
The way the data are distributed
within any bin (binning) depends on FLAG: if=1 the user defines the range as
the limits of the plot (command LIMITS) and can build width (and number)
of the bin as he likes; if=0 the range derives from the minmax of the data
vector and then, after setting NBIN, the bin width and the number of data
within any bin could be different. In the same way, the distribution of the
data will be different from the one of FLAG=0.
Examples:
a)reads residuals from a nonlinear fit (line+sine),
distributes
them in 75 bins,FLAG=0, saves ordinal, bincenter abscissa, content of bins
in bin.out file and plots the 1st and 3rd columns of bin.out.
.bon,
bin.out,
.pdf,
.png for 75 bins
and the same for 50 bins
.bon,
bin1.out,
.pdf,
.png.
b)uses the same dataset and bins it with FLAG=1 and FLAG=0, respectively
diff.out (input data);
binisto.bon;
binned with BIN 12 0 1;
binned with BIN 12 0 0;
pdf;
png;
Bugs: None. Max nbin is 100. Note, in binisto.bon, the line
marked by a series of "====": the bin content, with bin 12 0 0, is
correct but the command HISTO plots (bincontent1); so I must add 1 to
bincontent to plot them correctly. Not sure about that, because with bin
12 0 1 the HISTO command works fine (see the top plot).
BOX
Format: BOX p1 p2 p3 p4 or BOX p1 p2 or BOX
Parameters: p1,p2 are flags: if one of them is zero, numerical
values along the corresponding axis are not written.
p1 refers to Xaxis, p2 to Yaxis. If both parameters
are omitted, they are intended to be 1 1.
p3,p4 are also flags: they refer to the drawing of the
last numerical value on axis. If zero, the last value
on the corresponding axis (p3 for x; p4 for y) is not
written. Default values for p3 and p4 are 1 1.
See a graphical Scheme or
the table:
axes  X  Axis  Y  Axis  X  Axis  Y  Axis 
BOX  nums  nums  nums  nums  last  num  last  num 
digits  YES  NO  YES  NO  YES  NO  YES  NO 
code  1  0  1  0  1  0  1  0 
Function: Draws a box according to data limits. If LIMITS
hasn't been given, XCOL and YCOL are needed in order to
compute data limits. Box neither erases the screen, nor
enters
the graphical mode. If interactive mode is used, the command
MODE n must be supplied by the user; offline mode (i.e. PLAYBACK)
includes the MODE n command, were n is the default value or the
last given mode. The values of p1 and/or p2 and p3 and/or p4
should be zero when multiple, joined plots are to be drawn. See
Fig.14 and this more recent plot with its
.bon script,
as examples of such an application.
See also: CLABEL, XLABEL, YLABEL, LABEL, text.png, text.bon
for text orientation.
Bugs: if X/Y/C/LABEL are given before BOX, they will be written at
location (0,0) because the scale of the plot will be known only after BOX.
If a color different from black (21) is given, please note that TEXT
DIM COL must be given before BOX command in order to draw
digits with the desidered color.
After BOX you must give another
TEXT DIM COL (e.g. TEXT 2 13) in order to draw both axis and comment labels
with the preferred color.
Example:
.
.
color 18 !axes drawn in blue
delta 3 3
digits 0 0
text 2 18 !also digits along axes in blue
limits 0 10 0 20
lticks 5 5
sticks 2 4
box
text 2 11 !all the labels in magenta
xlabel XAxis
ylabel YAxis
clabel Comment
.
.  

CIRCLE
Format: CIRCLE p1 p2 p3 or CIRCLE p1
Parameters: p1= radius of the circle, in user coordinates,
p2=startangle (def. 0), p3=endangle (default 360)
Function: draws an arc of circle, centered at the current
point, with
radius p1, from the angle p2 to the angle p3, in the counter clockwise
direction. In the default situation (CIRCLE p1) a complete circle is drawn.
Examples can be seen as a Celestial sphere and as
Circles and ellipses or the
first
and the second respective command files.
An example of arcs of circle are shown in circle.gif, whose listing is cerchio.bon (a 'reloc' commands before any 'circle':
centers are referred to these 'reloc' current points).
Note that 0 (zero) degrees is on the right end of
the arcs.
See also: ELLIPSE
Bugs: none
CLABEL
Format: CLABEL string or CLABEL ?
Parameters: string, a text of 40 characters max or "?".
Function: Writes at the upper left corner of the plot (above the
box) the label string, as a comment or asks for a keyboardsupplied comment.
Examples: only in the case of "?"
echo enter comment:
clabel ?
on the screen will appear:
enter comment:
some comment from the keyboard
See also: BOX, ECHO, LABEL, XLABEL, YLABEL
Bugs: this command must be given after BOX
COLOR
Format: COLOR col
Parameters: drawing color (026).
Function: sets the drawing color to the value col.
Postscript driver changes col to a gray level (10) by
gray = 1. col/24. Note that in Postscript, gray=1
is white and gray=0 is black.
See also:
PostScript
colors,
(pdf), The vertical version of
the palette (if you
need to print it):
(png)
The Bongo color space has been defined (in plotps.f/ONPE) as:
/col00 {1 1 1 setrgbcolor} def  /col15 {.613 .285 .094 setrgbcolor} def

/col01 {1 1 0 setrgbcolor} def  /col16 {.8 .25 .31 setrgbcolor} def

/col02 {1 .75 .8 setrgbcolor} def  /col17 {0 .39 0 setrgbcolor} def

/col03 {.68 .85 .9 setrgbcolor} def  /col18 {0 0 1 setrgbcolor} def

/col04 {1 .84 0 setrgbcolor} def  /col19 {.488 .367 .066 setrgbcolor} def

/col05 {0 1 1 setrgbcolor} def  /col20 {.43 .16 .77 setrgbcolor} def

/col06 {0 .727 1 setrgbcolor} def  /col21 {0.87 0.87 0.87 setrgbcolor} def

/col07 {0.84 0.65 0.32 setrgbcolor} def  /col22 {0.75 0.75 0.75 setrgbcolor} def

/col08 {0 1 0 setrgbcolor} def  /col23 {0.35 0.35 0.35 setrgbcolor} def

/col09 {0 .773 0 setrgbcolor} def  /col24 {0 0 0 setrgbcolor} def

/col10 {1 .51 0 setrgbcolor} def  /col25 {0 0.5 0.5 setrgbcolor} def

/col11 {1 0 1 setrgbcolor} def  /col26 {0.67 0.67 0 setrgbcolor} def

/col12 {.63 .13 .94 setrgbcolor} def  /col27 {.8 1 .388 setrgbcolor} def

/col13 {1 0 0 setrgbcolor} def  /col28 {.710 .299 .452 setrgbcolor} def

/col14 {.781 .07 .07 setrgbcolor} def  /col29 {.299 .452 .710 setrgbcolor} def

Bugs: none, but in view of a change in old Bongoscripts colors, here the oldest color palette and here the older color palette (the last one, before the actual
palette).
COLUMNS
Format: COLUMNS C1 C2
Parameters: first and last column
Function: Defines the first and the last columns of the actually
opened data file.
Internal vectors XV,EXV and YV,EYV will be inizialized by data from C1
to C2, extrema included. If C1 or C2 or both are less than
zero, Bongo asks for the input of C1 and C2 via the
keyboard.
Bugs: maximum allowed number of columns is 50.
The command LINES L1
L2 requires that L2 BE EQUAL to the maximum
column number (i.e. L2=C2C1+1).
Example: plot; .bon and data file. If (L2≠C2C1+1) plot; .bon, the same data file as above.
CONNECT
Format: CONNECT
Parameters: none
Function: Connects data points with the last defined (or default) line
type (LTYPE command).
See also: LTYPE, Fig.17b (2Xzoom)
Bugs: none
CONTINUE
Format: CONTINUE
Parameters: none
Function: nothing. Simply allows the execution of the next command
in the list. Used as terminal of the couple of commands JUMPCONTINUE in
order to change the execution stream in a command buffer. Because of its
"nofunction" quality, it is not necessary to comment or decomment this
command.
See also:
1.st situation (plot); 2.nd
situation (plot),
another example 1.pdf
2.pdf, JUMP
Bugs: none
CONTOUR
Format: CONTOUR
Parameters: none
Function: draw isocontours of the image read by RIMA filename,
according to values listed in the local file levels.dat.
levels.dat contains in its first line the number of levels,
followed by the levels, one per line.
Example: if four levels must be plotted,
4
123
257
333
389
See also: RIMA, contour, levels.dat
Bugs: none. The maximum number of levels is 50
CONVERT
Format: CONVERT P1 P2 P3 or CONVERT P1 P2 or CONVERT P1 or
CONVERT
Parameters: all default parameters are set to zero.
P1 format of the converted image: from bongo.ps to
bongo.xxx, where 'P1=xxx' is:
0=pdf
1=png
2=jpg
3=gif
P2 alpha channel (transparency):
0> alpha channel OFF (no transparency and background color white)
1> alpha channel ON (and no background color)
P3 dotperinch (dpi) image resolution
0> 150x150
1> 200x200
2> 300x300
Function:
Converts the Bongo output file bongo.ps to pdf, png, jpg and gif formats,
with choice for transparency and density. This command can be used in
bongo.inp
Example: the following is a bongo.inp file
re foo.bon
pl
convert !bongo.ps converted to bongo.pdf, no alpha,
150x150 dpi
or
convert 3 1 !bongo.ps > bongo.gif, alpha, 150x150 dpi
or
convert 2 1 2 !bongo.ps > bongo.jpg, alpha, 300x300 dpi
end
and this is a working example:
re oninew ! reads oninew.bon
pl ! runs the Bongo commands
dos cp bongo.ps oninew.ps ! copy bongo.ps to oninew.ps
convert ! converts bongo.ps to bongo.pdf,no alpha,150x150dpi
dos mv bongo.pdf oninew.pdf ! renames bongo.pdf to oninew.pdf
end ! closes actual Bongo run
See also: DOS uses the same CALL SYSTEM (command)
Bugs: none.
CORR
Format: CORR p1 p2 or CORR p1 or CORR
Parameters:
p1 is a flag, so it assumes only two values, 1 and 2
(default).
If p1=1 > the Pearson's correlation
coefficient of the YV and EYV
internal vectors or ρ(YV,EYV) will be computed.
If p1=2 > the
autocorrelation function (acf) is computed when both
YV and EYV contain the same
data vector or the crosscorrelation function (ccf) when YV and EYV
contain different data vectors.
p2 is MAXLAG, i.e. the maximum number of lags computed by this routine.
If p2=0 or p2>kmax1 (# of data 1) then p2 becames 0 (i.e.
MAXLAG=kmax1).
Default values are p1=2 and p2=0 (i.e. CORR=CORR 2 0) BUT no check is made on a MAXLAG value near
or equal to (kmax1), so avoid the default and use [CORR 2 MAXLAG] with
MAXLAG set at small or intermediate values.
Function: depending on the flag p1, computes either the
Auto/CrossCorrelation
Function (acf/ccf) of the internal vectors YV
and EYV with a given number of lags or the Pearson's correlation coefficient
ρ(YV,EYV) of the internal vectors YV and EYV.
 With p1=1 the access=append output file corr.out
is written, containg, in a
onelineperbongorun, the number of data,
ρ(YV,EYV), E(YV), E(EYV), E(YV*EYV), SIG(YV), SIG(EYV), ρ beeing:
 COV(YV,EYV)  
E(YV*EYV)E(YV)*E(EYV)   Σ[(YVE(YV))*(EYVE(EYV)] 
ρ(YV,EYV) =    =
   = 
 , 
 SIG(YV)*SIG(EYV)  
SIG(YV)*SIG(EYV)   Σ(YVE(YV))*Σ(EYVE(EYV)) 
E(·) the expectation value (or mean) and SIG(·) the
standard deviation of residual (or σ) of the respective Bongo internal
vectors.
 With
p1=2 the output file fcorr.out is written, containg the lags (0
to N1 or maxlag) and the acf/ccf. In order to plot the acf/ccf, the output file
fcorr.out must be read, starting from line 3 (a 2lines comment is written as
first and second row), lag and acf/ccf beeing the 1.st and the 2.nd column, respectively.
Please note: This command leaves
all the internal vectors unchanged.
Two unnecessary operations, but important in some cases, will be left
to the user:  if required, detrending of the acf/ccf should be made
by the command FIT.
and then by subtracting the original acf/ccf to the fitted one and
 may be
useful to compute a sine function (SIN command) to be compared to the detrended
acf.
 On August 9, 2017 the "persistence, i.e. the long and
short term memory e.g. in some climatic data, has been introduced in the Bongo
autocorrelation function (ACF). The output file fcorr.out include now also
the Hurst coefficient and the effective number of independent data (≤
KMAX, the data file size). Such effective number Neff is computed by both
the Koutsoyannis (2006) and the Nitchka equations. If the acf at lag 1 is
larger than, say, 0.5 the Koutsoyannis formula can give very, very
littlenumber of
indipendent data (as 4 to 12). Nitchka formula gives larger numbers, as one
or two hundred. Some documentation about that can be found in this 00readme.txt file.
Examples:
How to detrend and add a sine function to an acf
fit 2  !parabolic fit to acf

%data detrend 

%reads poly.out 

%computes col4  col3 of poly.out 

data poly.out  !output file after FIT 2

lines 22 122 

xcol 2 

ycol 3 

eycol 4 0 

yoper 21 1  !YVEYV; result stored in YV

%  !in YV the detrended acf

ltype 1 10  !sets line=1 (solid) color=10 (red)

connect  !draws detrended acf

sin 0.2 60 5  !computes SIN function with

%  !amplitude 0.2 (units of acf)

%  !period 60 (units of XV may be years or months)

%  !phase shift 5 (units of XV)

ltype 4 14  !sets line=4 (dotted) color=14 (blue)

connect  !draws sin function

Real Examples:
The ccf of two arrays (array1 and array2): pdf, plot, numerical output, .bon. This is the
manual
page of the NAG routine G13BGF (crosscorrelation): please compare
numerical outputs.
The ccf of the yearly averaged cloudiness of Munich (Munchen,Germany)
and the Usoskin's Cosmic Rays Model, both from 1825 to 2007:
pdf; png;
.bon;
input data (Mun);
input data (CRs);
output data
The ccf of two time series (evolution over 23 months of
Period and Power of a spectral peak
with P=2.87 years) plotted together (plot).
input file; ccf; ccf output (12 lags); .bon
The acf of the power spectrum of average cloudiness of a
place in Austria (Admont): pdf;
png;
.bon;
input data;
output data
The acf of yearly averaged cloudiness of Munich (Germany)
from 1825 to 2007: pdf; png;
.bon;
input data;
output data
The acf of NOAA monthly averaged world temperature anomaly
from 1860 to August 2013: pdf; png;
.bon;
input data;
output data
The acf of the tidal gauge station of San Francisco (Frisco)
with persistence analysis (note Neff K value in the output file).
pdf; png;
.bon;
input data;
output data
See also: SIN to see a detrended acf represented by a sin function
Bugs: none. Remember that no check holds for MAXLAG near or equal to
(kmax1), so don't use default values within the command. Prefer command like
e.g. CORR 2 67 instead of CORR.
Note that the acf/ccf is computed from maxlag to
+maxlag.
Vectors must be provided with the same dimension and the same starting
abscissa. The author, assuming that
such conditions hold, compared data from 1850 (1.st set) with data from 1660
(2.nd set) and the result was not so fine. So, be sure the longer set is truncated
at the same limits of the shorter one ... (use LINES for that).
COS
Format: COS p1 p2 p3 p4 or COS p1 p2 p3 or COS p1 p2
Parameters: p1= amplitude, p2=period, p3=zeropoint (default 0),
p4=Max abscissa (default # of data)
Function: computes the cosine function, given: amplitude, period,
zeropoint(start abscissa) and last abscissa (defaulted to # of data) and
stores the results into the XV and YV internal vectors, i.e.
YV(i)=p1*cos(2π(ip3)/p2).
The abscissae are XV(i)=p3+(i1).
Examples: Common XV data (input);
cos 0.2 60 0; sin 0.2 60 0: plot; .bon; cos 0.2 60 0; sin 0.2 60 80: plot; .bon
A real example: GHCN temperature anomalies Land+Ocean, up to march 2013 have been
fitted by a line, detrended and represented by two cosine with 66 and 60
years periods. plot, Orig. data, Data read by .bon, .bon.
See also: SIN,LINES
Bugs: none, but if you want to extend your actual range use a "fake"
LINES 1 1 to give start and endlines by the keyboard, without any
control on the range.
Also note that SIN and COS are computed at constant
step [T=T0+(I1) so (TT0) is always equal to (I1) and step=1]. If you
try to subtract sincos data from a monthly data (step=0.083) you can
generate differences with a (totally fake) periodicity. In this example
such a fake period is 5 years. The problem rises between b) and
c) plots: b) is the detrended from the line in a) and a cosine is also
plotted. c) is b) detrended from cosine: note the "birth" of spurius
(fake) peaks.
DATA
Format: DATA filename or DATA ?
Parameters: filename and its path, if necessary. Max 40 characters.
Function: Opens the file with the data and inizializes the string variable
which contains the 255 characters max length data columns and comments.
Data are assumed to be organized in columns, separated by
space(s), comma(s) or tabs (ascii 9 dec). If a column contains a nondigits element it will
be transformed to 9999. Any row of such a column
must contain nonnumeric data.
If filename is ?, Bongo asks for filename from
the keyboard. By default DATA saves the first 50 lines of
filename into the character variable XYCOM. Such lines can be
written in the file savenn.sav by the commands WCOMM and SAVE.
DATA also saves the last input file_name into the variable
FILES.
See also: SAVE, WCOMM
Examples: see plot, .bon and data
of a mixed (Tab and spaces  separated) file columns.
Bugs: none
DELETE
Format: DELETE L1,L2 or DELETE L1
Parameters: L1, L2 starting and ending lines, or the only line to be deleted
Function: Deletes from the command buffer the lines L1 to L2 (extrema
included) or the line L1 and reorganizes the command buffer.
Bugs: none
DELTA
Format: DELTA p1,p2,p3,p4 or DELTA
Parameters: p1, p2 percent of the xaxis leftandright length;
p3, p4 percent of the yaxis lowerandupper length.
Default values are 0 0 0 0
Function: Defines the amount, as percent of the axis length, of the
userscale displacement with respect to the axes origin. In
practice it is defined an area, where data are plotted,
smaller than the one given by the command BOX. Note that the
choice of DELTA's include x and y lower and larger limits,
separately.
Example: if PHYSICAL command has not been given (i.e. the default limits
of the
plotting area are X1, X2 = 120, 519 and Y1, Y2 = 200, 599),
DELTA 0 5 0 7 means that the new positions
(X[1 and 2]DX1, DX2
of the first left (and last right) Xtick and
Y[1 and 2] DY1,DY2
of the lower (and upper) Ytick are
X1DX=X1+(X2X1+1)*p1/100 = 120+400*0 = 120 
X2DX=X2(X2X1+1)*p2/100 = 520400*0.05 = 500 
Y1DY=Y1+(Y2Y1+1)*p3/100 = 200+400*0 = 200 
Y2DY=Y2(Y2Y1+1)*p4/100 = 600400*0.07 = 572 
X2DX and Y2DY being the position of the X and Y last
tick.

See also: BOX, PHYSICAL,
Examples:
Fig.16 pdf, png, .bon
DELTA 10 10 10 10 for linear
(.bon)
and logarithmic (loglog)
(.bon) plots
DELTA 10 7 8 5 in .bon and
(pdf), (png)
Bugs: not really a bug, but the author's choice: when DELTA values
are so large that they overcame the space between two main ticks (in
LTICKS), the grid
stops to be drawn. So, you must give a larger/different number of LTICKS/STICKS and use a lower
percent value(s) in DELTA.
See DELTA 15 10 15 10 .bon,
(pdf), (png), where the next leftmost value should be the main
tick labelled "1870", and the suggested changes in DELTA, LTICKS and STICKS. The new plot (pdf), (png) is also shown in both formats.
DERIV
Format: DERIV
Parameters: none
Function: Computes the central
differences (using forward and backward difference for the first and the
last values) of both XV and YV vectors:
DIFF(2)=XV(3)XV(1), ..., DIFF(kmax1)=XV(kmax)XV(kmax2) and
DIFF(1)=XV(2)XV(1) [backward]; DIFF(KMAX)=XV(KMAX)XV(KMAX1)
[forward],
and the same happens for YV. From these differences,
it computes the numerical (approximate) derivative in the form
DER(i)=DIFF(YV(i))/DIFF(XV(i)). This command writes the output file der.out.
The internal vectors remain unchanged.
Examples: Given the original data file, the der.out file is computed via this .bon file (here the name of der.out has been changed
by the command DOS). The .png
and .pdf show the original data
(upper plot) and the derivatives (gray) with 5year (black) and 10year
(red)
smoothing. Compare maxima and minima with the visible break points (where
slope changes) in the data.
Bugs: none, but all is organized for 4digits abscissa. So, if you
have e.g. millions of years, much likely you could have abscissae in the form of
fractions of millions of years and then not corrected in the output file
der.out. In such a case you can use as abscissa the original values and as d
erivatives the output (column 5) of DERIV.
DIG
Format: DIG
Parameters: none
Function: Transforms a digitized file in a userunits one. Reads
XV,YV as xpixels,ypixels and writes the output file dig.txt with
chosen units (e.g.year and temperature or radius and brightness).
The input (digitized) file can be managed with the aid of grafic code
allowing the screen coordinates of a figure. The author uses GIMP for
that and writes a text file with xcoord, ycoord.
dig.txt can be renamed as preferred.
This command asks for X1,X2,Y1,Y2 (in pixels: the extrema of interest for
the plot area) and VX1,VX2,VY1,VY2 (in physical units: the same as above):
VX1,VY2 VX2,VY2 phys. units
X1,Y2 X2,Y2 pixel
++
 ° 
 ° 
 ° ° ° 
++
X1,Y1 X2,Y1 pixel
VX1,VY1 VX2,VY1 phys. units
Examples:
.
.
data mgca.dat !input file
lines 5 64
xcol 1
ycol 2
dig
data dig.txt !output file
lines 5 64
xcol 1
xoper / 1000 !year to kiloyear
ycol 2
ltype 1 24
connect
.
.
an example of the input file for
surface sea temperature in Sicily Channel (mgca.dat) and the plots for X1,X2 and for data the values have been
derived from.
Bugs: none
DIGITS
Format: DIGITS ndx ndy or DIGITS
Parameters: ndx decimal digits on xaxis. ndy decimal digits on yaxis
Function: Sets the number of decimal digits of axes numerical labels.
Default values are 2 decimal digits for both axes.
Default value(s) can be set also with both ndx and ndy less than
zero.
Examples:
DIGITS   !ndx=2, ndy=2

DIGITS  2 2  !as above

DIGITS  3 5  !as above

DIGITS  0 1  !ndx=0 , ndy=1

Bugs: none
DOS
Format: DOS command or DOS
Parameters: Operating System command (without quotes)
Function: Allows Operating System Commands (whatever the OS may
be).
If "command" exists it will be executed.
If "command" doesn't exist, Bongo asks: "give OS command" and executes it.
At the end of the command, the control
returns to the next line of the Bongo command buffer.
A Fortran CALL
SYSTEM(command) is used here.
See also:
Try:
bongo
>dos lsl (or dir for Windows)
>dos
>give OS command
>
Example:
bongo.inp can be:
re oninew  ! reads the command file oninew.bon 
pl  ! executes the command file, linebyline 
dos cp bongo.ps oninew.ps  ! copy bongo.ps to oninew.ps 
end  ! ends bongo execution 
Here a command file where DOS
command has been really applied. The couple of lines %DATA and %DOS
will be decommented onebyone, in order to write a file with normalized data,
starting from unnormalized power spectrum.
Bugs: none. If the command is enclosed by quotes (" or '), an error will be generated.
This command depends *of course* on the OS used.
For example, in Windows DOS, the command
DOS mv a.txt b.txt doesn't work. Use
DOS rename a.txt b.txt. Rename doesn't write over an existing file, giving an error.
So, the command DOS delete b.txt must precede the
DOS rename ...
DOT
Format: DOT
Parameters: none
Function: draws at current point a symbol in the lastdefined (or default)
style. Use PTYPE command to change point style.
See also: DRAW, PTYPE, RELOCATE
Bugs: none
DRAW
Format: DRAW X Y
Parameters: X,Y coordinates of the end of the segment in user coordinates.
Function: draws from the current point to X,Y a line with both the last
defined color and style. Use LTYPE command to change line aspect.
See also: DOT, LTYPE, RELOCATE
Bugs: none
EBAR
Format: EBAR p1 or EBAR
Parameters: p1 flag to write the file ebar.out. If p1=0 (default) the
file is not written; any other number (say 1) allow the writing of the
output file.
Function: Given, as usual, XV,YV,EYV (i.e. the error σ),
computes YV+EYV and YVEYV (i.e. YV±σ) and draws those
values. Using a mild color, a nice and visible error belt can be drawn.
This command modifies original YV and EYV vectors, so reread the input
file (DATA file_name; LINES li lf; XCOL n; YCOL n1) if you want to
plot also the data. Give COLOR color_code and LTYPE
code color BEFORE EBAR (i.e. EBAR
contains the plotting of the errors, so it needs to know the drawing color
and the line style).
Examples: In order to reproduce the plot of global sea level in
the paper by Jevrejeva et al, 2008, the following piece of the bongo command
file gsl.bon has been used. It
gives the plot (pdf) and (png) and the output file ebar.out. Please compare the plots. Part of the above
command file has been used for the macro routine bongo/bmr/ebar.bmr
See also: DATA, COLOR, LTYPE, EYCOL
Bugs: none
ECHO
Format: ECHO string
Parameters: the text you want to be written on the
screen.
Function: writes on screen a text. Used to give some fixed
parameter in commands like LINES 1 1, when start and end lines must be
given by hand. Also useful to give some comment while the Bongo command
file is in execution.
Examples:
ECHO The 1st line must be 3 
ECHO The 2nd line must be 1280 
LINES 1 1 
Enter 1st line 
3 
Enter 2nd line 
1280 

Appears as: 
The 1st line must be 3 
The 2nd line must be 1280 
Enter 1st line 
3 
Enter 2nd line 
1280 

See also: LINES
Bugs: none
ELLIPSE
Format: ELLIPSE p1 p2 p3 p4 p5 or ELLIPSE p1 p2 p3 or ELLIPSE p1 p2
Parameters: p1= semimajor axis; p2=axial ratio; p3=rotation (degrees,
def. 0), p4= startangle( def. 0), p5=endangle (def. 360). p1 is given in user
coordinates, angles in counter clockwise direction.
Function: draws an arc of ellipse, centered at the current point, with
semimajor axis p1, axial ratio p2, turned of p3 degrees, from the angle p4
to the angle p5, in the
counterclock wise direction. If p2=1 a circle is drawn, also if the
command CIRCLE is available.
In the default situation (ELLIPSE p1 p2) a complete, unrotated ellipse
is drawn.
See also: CIRCLE
Bugs: none
END
Format: END
Parameters: none
Function: Exit from Bongo to Linux OS. It does not save the actual command buffer
(use WRITE for that). END terminates also INSERT command. When used
in BONGOPS, END closes the output file bongo.ps and writes on the
screen the message "Bongo.ps written on disk". It also writes
the logo 'BongoLinux 1.4.5' in the bottom right corner of the output
page.
In practice, END exits Bongo and write the logo; OFF closes
bongo.ps and doesn't either write the logo or exit Bongo; QUIT works
like END but doesn't write the logo.
END is for normal use; OFF for 'see, correct, run again' sessions
and QUIT when plots must be inserted in a text, where the logo
can give some problem or force supplementary work.
See also: OFF, QUIT, WRITE
Bugs: none
ERASE
Format: ERASE
Parameters: none
Function: Clears the actual PostScript page.
Bugs: none
EXCOL
Format: EXCOL n flag
Parameters: n number of a column of data file; flag (1 draw;
not 1 not draw, defaulted to zero)
Function: Assigns the column #n of the data file to Bongo internal
vector EXV (errors of XV vector). This command traces the last
read error bars, associated to any next data vector XV, also if
XV does'nt have errors. To avoid that, give again the command with
flag=0 after the right vectors have been drawn. Remember
that EXV is also the 2.nd vector relative to XOPER command and
the first one in EXOPER command.
Example:
DATA  filename  ! reads input data

XCOL  1  ! assigns column #1 to XV

EXCOL  3 1  ! assigns column #3 to EXV

POINTS   ! error bars will be traced (flag=1)

EXCOL  3 0  ! sets off xerror bar drawing(flag=0)

or EXCOL  3  ! as above; p2 will be defaulted to zero

See also: EYCOL
Bugs: if the xscale is reversed (e.g. 20 to 0 instead of 0 to 20),
Bongo cannot draw error bars due to "withinthebox" controls.
Not a bug, but remember that, within a colums, data type must be
homogeneous (eg. all integer or real data, not mixed)
EXDIFF
Format: EXDIFF p1
Parameters: p1 flag. =1 forward differences;
=1 (default) backward differences.
Function: Computes either the differences
DIFF(i)=EXV(i)EXV(i+1) (forward differences, trimming the
last value [kmax]) or the differences DIFF(i)=EXV(i)EXV(i1)
(backward differences, trimming the first value[1]),depending on p1 value. The value
lost (at the beginning or the end) is fixed to 99. The output file
diff.out will be written, with the first or the last line set to 99.
Example: tmaraw.bon reads tmarawy.txt. Outputs are: diff.out and one of diff1.pdf or diff2.pdf.
See also: EYDIFF,XDIFF,YDIFF,DERIV
Bugs: none
EXOPER
Format: EXOPER opcode, constant
Parameters: code of selected operation, constant required by operation
(or 1 or 0 as necessary)
Function: Applies the operation defined by opcode (with a constant if
necessary) to EXV internal vector
use EXOPER BEFORE the corresponding XOPER
Available opcodes are :
Operation  Opcode  Operation  Opcode 
1) vector+constant  (+) or (1)  10) EXP(vector*constant)  (exp,EXP) or
(10) 
2) vector*constant  (*) or (2)  11) vector/(vector
values)  (11) 
3) vector/constant  (/) or (3)  12) vector to hh.mmss
ordd.mmss  (12) 
4) LOG10(vector)*constant  (log,LOG) or (4)  13) (1:i)vector/
(1:N)vector  (13) 
5) LN(vector)*constant  (ln,LN) or (5)  14) const/vector  (14) 
6) vector**constant  (^) or (6)  15) residuals:
(XXm)**constant  (15) 
7) vector/vector(constant)  (7)  16) (1:N)vector  (16) 
8) vectorvector(constant)  (8)  17)  (17) 
9) 10**(vector*constant)  (10^,10**) or (9)  18)  (18) 
21) vector1± (vector2*const)  (21) 
24) vector1=vector2  (24) 
22) vector1*(vector2*const)  (22) 
25) vector2=vector1  (25) 
23)
vector1/(vector2*const)  (23)   
Modifications remain in effect until another EXOPER is given
or command is cancelled. Log of negative number is set to 50.
 Code 3, constant set to 0 (zero) means constant=# of data
(kmax).
 Codes 7 and 8 allow normalization with respect to any element (set
constant to the ordinal of the element) of the EXV vector.
 Code 11 allows normalization with respect to the integral of vector.
The file sum.out, containing the sum of the vector is
also created.
 Code 12 assumes that data are expressed in terms of minor unit
(e.g. in arcsec if degrees.minutesseconds are
required)
 Code 13 computes the empirical distribution function
(cumulative distribution)
of an early binned vector. The file sum.out, containing
the sum of the data vector is also created.

Code 14 computes the inverse of the vector time a
constant. If vector=0 then the inverse will be equal to
9999.

Code 15 computes the residuals from the mean of the
vector, raised to a constant, i.e. (YYm)**const, Ym beeing the vector
mean.The file aver.out, containing the vector mean and the
standard deviation of the sample, is written.
 Code 16 computes the sum of a vector. Constant not used,
so set it to 1 in the command (e.g. XOPER 16 1). Result stored in
sum.out.
Example: if data are D+S, the command EXOPER log 2.5 gives:
A=DS

B=D+S

T=2.5*[LOG(A)LOG(B)]/2

RELOCATE (2.5*LOG(D)T),Y

DRAW [2.5*LOG(D)+T],Y

The same happens for any other operation.
Bugs: In code 14, if vector=0 then 1/vector=9999. Be sure that in code 23 vector2 is not a null vector.
EXP
Format: EXP p1 p2 p3
Parameters: p1=ordinate for xv=0; p2=exponent; p3=#of data (kmax)
Function: Computes the exponential function YV(I)=p1*EXP(XV(I)*p2)
Example:(for the command POW, but both commands have the same
structure). .bon, .png, data
(ordinate), data (abscissa),
fake_file.
See also: POW, SIN, COS
Bugs: none, but the computed data number depends on the last LINES
command. If you have,say, 5 data (and so, LINES 1 5) and want to verify if they follow a
powerlaw (or exp) function, this command computes the power (exp) function
only for the first 5 points. So you need read (DATA fake.dat) a fake file and
give another LINES command in order to allow EXP or POW computes a
suitable number of data. You cannot give only LINES without DATA
command.
EXSAVE
Format: EXSAVE
Parameters: none
Function: Saves the lastdefined EXV vector on the disk file SAVE.NN
(NN=01, 02 ..., 99). This is a working file: SAVE command
saves all SAVE.NN into the file SAVEnn.SAV, in the same order
the working files have been originally written. Only numerical
values are saved, so, if you wish to retain SAVEnn.SAV, add
any comment you need.
Example:
DATA  filename  ! reads input data

XCOL  1  ! assigns the column #1 to XV

XOPER  4 1  ! decimal logarithm of XV

XSAVE   ! writes logarithms to disk file SAVE.01

EXCOL  3  ! assigns the column #3 to EXV

EXOPER  4 1  ! gets logarithm of errors

EXSAVE   ! write log(errors) to disk file SAVE.02

SAVE  1  ! creates SAVE01.SAV with column taken from

  ! SAVE.01 and SAVE.02

Bugs: none
EYCOL
Format: EYCOL n flag
Parameters: n number of a column of data file; flag
(=1 draw; not 1 not draw, defaulted to zero)
Function: Assigns the column #n of the data file to Bongo internal
vector EYV (errors of YV vector). This command traces the last
read error bars, associated to any next data vector YV, also if
YV does'nt have errors. To avoid that, give again the command with
flag=0 after the right vectors have been drawn. Remember
that EXV is also the 2.nd vector relative to YOPER
command and the first one in EYOPER command.
See also: EXCOL
Example:
DATA  filename  ! reads input data

LINES  4 130  ! data between 4th and 130th line,
step 1

YCOL  4  ! assigns column #4 to YV

EYCOL  3 1  ! assigns column #3 to EYV

POINTS   ! error bars will be traced (flag=1)

EYCOL  3 0  ! sets off yerror bars drawing (flag=0)

or EYCOL  3  ! as above: p2 defaulted to zero

Bugs: if the yscale is reversed (e.g. 20 to 0 instead of 0 to 20),
Bongo cannot draw error bars due to "withinthebox" controls.
Not a bug, but remember that, within a colums, data type must be
homogeneous (eg. all integer or real data, not mixed)
EYDIFF
Format: EYDIFF p1
Parameters: p1 flag. =1 forward differences;
=1 (default) backward differences.
Function: Computes either the differences
DIFF(i)=EYV(i)EYV(i+1) (forward differences, trimming the
last value [kmax]) or the differences DIFF(i)=EYV(i)EYV(i1)
(backward differences, trimming the first value[1]),depending on p1 value. The value
lost (at the beginning or the end) is fixed to 99. The output file
diff.out will be written, with the first or the last line set to 99.
This command doesn't change the internal
vectors. So, to use differences, do read diff.out by the command
DATA (only one vector written, the other beeing its last occurrence).
Example: tmaraw.bon reads tmarawy.txt. Outputs are: diff.out and one of diff1.pdf or diff2.pdf.
See also: EXDIFF,XDIFF,YDIFF,DERIV
Bugs: none
EYOPER
Format: EYOPER opcode, constant
Parameters: code of selected operation, constant required by operation
(or 1 or 0 as necessary)
Function: Applies the operation defined by opcode (with a constant if
necessary) to EYV internal vector
use EYOPER BEFORE the corresponding YOPER
Available opcodes are:
Operation  Opcode  Operation  Opcode 
1) vector+constant  (+) or (1)  10) EXP(vector*constant)  (exp,EXP) or
(10) 
2) vector*constant  (*) or (2)  11) vector/(vector
values)  (11) 
3) vector/constant  (/) or (3)  12) vector to hh.mmss
ordd.mmss  (12) 
4) LOG10(vector)*constant  (log,LOG) or (4)  13) (1:i)vector/
(1:N)vector  (13) 
5) LN(vector)*constant  (ln,LN) or (5)  14) const/vector  (14) 
6) vector**constant  (^) or (6)  15) residuals:
(XXm)**constant  (15) 
7) vector/vector(constant)  (7)  16) (1:N)vector  (16) 
8) vectorvector(constant)  (8)  17)  (17) 
9) 10**(vector*constant)  (10^,10**) or (9)  18)  (18) 
21) vector1± (vector2*const)  (21) 
24) vector1=vector2  (24) 
22) vector1*(vector2*const)  (22) 
25) vector2=vector1  (25) 
23)
vector1/(vector2*const)  (23)   
Modifications remain in effect until another
EYOPER is given
or command is cancelled. Log of negative number is set to 50.
 Code 3, constant set to 0 (zero) means constant=# of data
(kmax).
 Codes 7 and 8 allow normalization with respect to any element (set
constant to the ordinal of the element) of the EXV vector.
 Code 11 allows normalization with respect to the integral of vector.
The file sum.out, containing the sum of the vector is
also created.
 Code 12 assumes that data are expressed in terms of minor unit
(e.g. in arcsec if degrees.minutesseconds are
required)
 Code 13 computes the empirical distribution function
(cumulative distribution)
of an early binned vector. The file sum.out, containing
the sum of the data vector is also created.

Code 14 computes the inverse of the vector time a
constant. If vector=0 then the inverse will be equal to
9999.

Code 15 computes the residuals from the mean of the
vector, raised to a constant, i.e. (YYm)**const, Ym beeing the vector
mean. The file aver.out, containing the vector mean and
the standard deviation of the sample, is written.
 Code 16 computes the sum of a vector. Constant not used,
so set it to 1 in the command (e.g. XOPER 16 1). Result stored in
sum.out.
Example: if data are D+S, the command EYOPER log 2.5 gives:
A=DS

B=D+S

T=2.5*[LOG(A)LOG(B)]/2

RELOCATE (2.5*LOG(D)T),Y

DRAW [2.5*LOG(D)+T],Y

The same happens for any other operation.
Bugs: None. Be sure that in code 23 vector2 is not a null vector.
EYSAVE
Format: EYSAVE
Parameters: none
Function: Saves the lastdefined EYV vector on the disk file SAVE.NN
(NN=01, 02 ..., 99). This is a working file: SAVE command
saves all SAVE.NN into the file SAVEnn.SAV, in the same order
the working files have been originally written. Only numerical
values are saved, so, if you wish to retain SAVEnn.SAV, add
any comment you need.
Example:
DATA  filename  ! reads input data

YCOL  1  ! assigns the column #1 to YV

YOPER  4 1  ! decimal logarithm of XV

YSAVE   ! writes logarithms to disk file SAVE.01

EYCOL  3  ! assigns the column #3 to EXV

EYOPER  4 1  ! gets logarithm of errors

EYSAVE   ! write log(errors) to disk file
SAVE.02

SAVE  2  ! creates SAVE02.SAV with column taken from

  ! SAVE.01 and SAVE.02

Bugs: none
FILL
Format: FILL
Parameters: none
Function: Flag; sets to ON the filling capability of Bongo. Any successive
symbol or histogram bin will be filled with the tracing color.
See also: NOFILL
Bugs: none, but the areas (or symbols) exceeding box limits are
not filled at all. Also note: there is no way to fill any closed
area. Only surfaces enclosed by regular geometrical objects can be
filled (i.e. circles, squares, triangles, rectangles, diamonds).
FIT
Format: FIT deg wfl or FIT deg
Parameters: deg is the degree of the polynomial. Max value is 6.
If deg <0 parameters are added to two logfiles.
wfl is a flag : wfl=0 no weights; wfl=1 weighted fit. EVY
contains weights in terms of standard deviatiations. If wfl is not written, its default value
is zero. If wlf=1 but EVY has not been loaded, a warning
message is written and the unweighted fit is computed.
Function: Computes the least squares polynomial fit of XV, YV data by
YC= a+bXV+cXV**2...+gXV**6.
On exit, YV is set to YC (i.e. YV contains the computed
data). User must provide plotting instructions in order to
display (
png,pdf) the fitting function. The output file poly.out is
created. Such file contains the degree of polynomial, the
phrase "weighting vector is EYV" if wfl is not equal to 0,
the standard deviation of residuals, the covariance COV(XV,YV)
and the standard deviations σ(XV)
and σ(YV) of the
data vectors, the correlation coefficient,
if deg=1, the deg+1 parameters of the fitting function with
the respective standard deviations, their covariance and
correlation matrices and a table with
an ordinal, the original abscissae,
the original and the computed ordinates and the limits
of the 1σ and 1.96σ (95%) confidence intervals.
poly.out is overwritten by
the next FIT n command.
If deg <0 the file POLY.APP is opened
with access=append and
the main output parameters (s.d. of fit, coefficients and
their errors) will be added any time FIT is called. Bongo prompts
for a 10characters max label (hit RETURN for nolabel), used to
qualify the relative fit.
If deg <0 the file BAI.DAT is
also opened with ACCESS=APPEND: n, rms, cc, slope, s.d.(slope),
year, R^{2}, i.e. number of data, root mean square of residuals,
correlation coefficient, line slope, its standard deviation, original abscissae and determination
coefficient are appended at any run of FIT.
This is a very, very private
author's application in order to define the breakpoints in a
(climatic) time series by a method which uses successive linear
fits, from the starting point of the series, adding one o more
data to the previous series (i.e. it fits segments of growing
lengths). The file bai.dat (bai refers to Bai&Perron,2003
paper on BreakPoints search) can be simply deleted if not
needed. An example: if a dataset of year and temperature
anomaly is given (here the data refers to Briffa et al., 2013
paper on Dendrology at Yamal Peninsula, West Siberia), using FIT
1 command (within a file like this)
generates the bai.dat file
and the two plots (1) and
(2). Of course, the
"normal" files POLY.APP and POLY.OUT "live" again.
Example:
YCOL  1  ! assigns the column #1 to XV

YCOL  2  ! assigns the column #2 to YV

PTYPE  4 3 2  ! sets point type

POINTS   ! draws observed points

FIT  3  ! computes 3rd degree unweighted fit

  ! poly.out is written

DATA  file.ext  ! YV modified, so reopen data file and

YCOL  2  ! assigns again the column #2 to YV

EYCOL  9 1  ! assigns the column #9 to EYV
and draws error bars (1)

FIT  4 1  ! computes 4th degree weighted fit

  ! poly.out is overwritten

LTYPE  1 2  ! defines line pattern and color

CONNECT   ! draws line that fits given data

A real example: Northern Hemisphere Temperature (NHT) Anomalies
are fitted with a 1.st order polynomial (they are also smoothed, but that's no
matter here). See plot (png,pdf), bongo command file
(.bon), input data (note 00N90N, i.e. NH, in the
1.st line), and fit output_file.
After the November 26,2014 correction, poly.out and, if any, poly.app
appear as
poly.out and poly.app
Bugs: none
FT
Format: FT p1 p2 p3 p4
Parameters: s1, s2, df1, df2. s1, s2 standard deviations of the
samples; df1, df2 degrees of freedom. No default values allowed.
Function: Fisher test for samples' variances (s1^{2} and
s2^{2}). Computes both the Fstatistic
(F=s1^{2}/s2^{2}) and the pvalue (or
the significativity of the null hypotesis
Ho:s1^{2}s2^{2}=0 for two samples with
degrees of freedom df1 and df2. Writes the output file
ft.out.
See also: you could like to consider the standalone code
fisher.f and its executable (fisher) in bongo/prove/ to
manually compute the Fisher's test. Also the code student.f
(student) is available in the same place for the Student's test between the means of
two samples.
Bugs: none
GAUSS
Format: GAUSS Xm, σ
Parameters: Expectation value (or average) and dispersion (or
square root of the variance) of your data set.
Function: compute a standard normal
distribution whose
parameters are the same of actual data set (derived after XYSTAT, for
example). Remember that "standard" means "with zero average"; if you want a
gaussian centered at a value different from zero, add this value
to the XV vector.
After this command, the vectors XV and YV contain the
normal distribution.
Bugs: none
Example:
..  .. 
gauss 47 9.68  ! define Xm=47 σ=9.68 
xoper 1 47  ! add Xm to XV 
ltype 1 15  ! define a solid, black line 
connect  ! draw the graph 
..  .. 
See Also: gauss.png and gauss.bon
GRID
Format: GRID pattern, color, flag
Parameters: pattern and color of the grid, flag=1 draws also small ticks
Function: Draws a grid superimposed to the plot, corresponding to the
main ticks. If flag=1 the small ticks are also gridded.
The main ticks are always gridded with solid
lines.
if the command DELTA has been given, both small ticks and grid
(if required) are drawn also beforethefirst and afterthelast main
ticks
Available patterns are:
 0  No LINE


 1  ''


 2  '  '


 3  ' '


 4  '    '


 5  '. . . . . .'


 6  '. . . . . . . . '


 7  ' .  .  '


Examples:
GRID  6 3 1  draws a dotted (6) grid in light blue (3), all ticks
(1). See grid 6 3 1 enlarged 4x.

GRID  4 4 2  draws a dashed (not really: main ticks lines are
solid) (4) grid in bold yellow (4), main
ticks (not 1). See grid 4 4 2
enlarged 4x.

GRID  4 4 1  draws a dashed (4) grid in bold yellow (4), all
ticks (1) when
DELTA 10 10 is given, for linear
(.bon)
and logarithmic (loglog)
(.bon) scales

RGB  0  !Black and White. See example png,pdf where (6 3 1), (6 8 1) and (6 15 1) have been
used for GRID. 
GRID  6 3 1  !dotted (6), gray (3) grid, all ticks
(1). 
RGB  1  !Color  
In the last example, the grid strength can be better controlled by using the B/W color
space (from 0=white to 15=black) than with the RGB color space.
See also: XGRID, YGRID
Bugs: none, but use the command before LABEL, so labels can overwrite
the grid. Also, due to solid lines for the main ticks, choose color or gray level so
that the grid does not collide with the graph colors.
HELP
Format: (1) HELP or (2) HELP commandname
Parameters: none or the name of a command for detailed help.
Function: (1) lists all available commands in Bongo; (2) gives the
help of the specific command. Use the COMPLETE name of the
command, no abbreviations.
Example: HELP RELOC is wrong (Help routine cannot find help file);
HELP RELOCATE is correct
Bugs: none
HISTO
Format: HISTO wbin color flag or HISTO wbin color
Parameters: wbin width of bins.
If command BIN has been previously given,
wbin is known and the value read from bin.out must be
used. If the ordinal of the bins is used( 1,2,...,nbin) its
value will be 1.
color drawing (and filling,
if any) color. flag 
controls the histogram kind: if 0 (default), histogram start at
the minimum of box yvalue; if 1, histogram starts at the minimum
of actual y data vector (histograms can be shifted up and down);
if 2, histogram starts at zero (both positive and negative
bins can be traced).
Function: draws an histogram of binned data given both as external file
or after BIN command. Maximum allowed number of bins is
7000.
EXAMPLES: multi histograms plot (png); (.bon);
(1st.dat); (2nd.dat). After the August 29, 2019
update (i.e. max nbin=7000) see the istogram of the monthly NOAA global Temperature
Anomaly as (png), (pdf) or (bon); its dataset is 1907t.txt
From command BIN: reads residuals from a nonlinear fit (line+sine),
distributes
them in 75 bins, saves binstart, # of values in bin.out and plot #of bin,
#of elements
.bon,
bin.out,
.pdf,
.png and the same for 50 bins
.bon,
bin1.out,
.pdf,
.png.
Bugs: filling of bins exceeding box limits doesn't work.
A problem
rose after August 29, 2019 update: if histo is called two times in sequence,
e.g to draw the contour of the histogram with a different color,
apparently also a second histogram is plotted, may be with different bin
width. To overcome such an error, please use, only one time, the fill/nofill
commands.
Due to the error, the above plot has this appearance (png),
(pdf) with the sequence:
 color 11
 fill
 histo 1 11 2
 nofill
 color 24
 histo 1 24 2
It seems this error occours only when nbin is greater than 150.
IDENT
Format: IDENT or IDENT cc
Parameters: none or a 2characters identification
Function: writes, at the upper right corner, date and time of the plot.
Please note that date format is
ddmmyyyy hh:mm:ss. If two characters
'cc' are given, they are added to the above string.
Example: id fz writes this
on the upper right corner of the plot.
Bugs: None
INFO
Format: INFO
Parameters: none
Function: Displays general information on Bongo (author address, references).
Bugs: none
INPUT
Format: INPUT filename
Parameters: file name of data given by the keyboard
Function: Allows data to be entered by the keyboard from within Bongo.
Data are not immediately available: they are written in the
disk file filename and can be plotted by
the normal sequence
of commands (DATA, LINES, LIMITS, XCOL, YCOL, PTYPE, POINTS).
Data couples can be separated by space, comma or tab. Input of data
ends with the couple 999,1.
This command is intended as a purely manual one. It does not
enter in the command buffer (e.g. after LIST) and is not
executed by PLAYBACK, when given from within BONGO. Nevertheless,
if INPUT enters in a command file created before running BONGO,
it will be executed after any PLAYBACK command.
If filename is omitted, the OS warning:
File name missing
or blank  Please enter file name, appears.
Example:
>INPUT myfile.dat

Comment:(enter 80chars max comment)

Data:(enter N couples of data, ending with 999,1)

0.1,23.7

0.87 2.2

2056,0.0003

234.4 (tab) 6.3

999,1 ! this ends input and closes myfile.dat

>

To plot myfile.dat (suppose another data file has been plotted,
so that commands like LIMITS or BOX were already entered):
DATA  myfile.dat

LINES  2 100

XCOL  1

YCOL  2

EXCOL  3 2  ! if above plot included error

EYCOL  3 2  ! bars, set them off

PTYPE  4,4,2

POINTS

Bugs: none
INSERT
Format: INSERT linenumber
Parameters: linenumber, the ordinal which identifies the command
in the command buffer after LIST.
Function: Allows insertion of new command(s) after the command defined
by linenumber. INSERT prompt is I:. END terminates insertion.
Use INS 0 to add a command at the top of the buffer
Bugs: none
JUMP
Format: JUMP
Parameters: none
Function: jumps (i.e. does not execute the next lines up)
to the first occurrence of CONTINUE. Used to organize many graphs in a
unique command file, or to avoid a specific number of lines within the
command file.
It is possible to write in advance many couples of
JUMP  CONTINUE and then
comment (by %) or decomment the JUMP command in order to execute the
desidered subsystems of commands.
The pair of these commands is used
here in Capital letters because the author uses them in such a way, so
that they appear more evident in the flux of commands. These two commands
are the only ones written in Capital letters within a .bon command
file.
Examples:
1.st situation (plot); 2.nd
situation (plot),
another example 1.
pdf.
JUMP is useful also when you need to save elsewhere the results of a
Bongo run (plots, data, code, etc). After the end of the .bon file, a
sequence can be added that looks like the following:
%last block  < above this command the whole .bon file

text 5 24 

sreloc 120 350 

label noaa/ohc/ohcw.bon 

id fz  < end of "normal" bongo file command

%JUMP  < decomment (delete %) if the next lines don't need to be executed

quit  < exits Bongo, close bongo.ps, don't write the logo Bongolinux 1.4.5

dos bongo2pdf ohcw  < convert bongo.ps to ohcw.pdf

dos cropbpdf2png ohcw  < convert ohcw.pdf to ohcw.png and crop
(bkind)

dos mv ohcw.pdf ~/www/noaa/ohc/.  < move .pdf to some directory

dos mv ohcw.png ~/www/noaa/ohc/.  < move .png to some directory

dos cp ohcw.bon ~/www/noaa/ohc/code/.  < save the bongo code in a suitable directory

The complete (.bon) and (pdf) files of the above example.
Bugs: none
See also: CONTINUE
KS
Format: KS
Parameters: none
Function: computes the KolgomorovSmirnov (KS) nonparametric test
between two sets of data with equal dimension (i.e. with the same number of
data points). Produces the output file ks.out.
The last number in ks.out is the significance level of the
null hypotesis Ho:"data sets drawn from the same population",
so small values show that data sets have different distributions.
Bugs: none
Example: given two sets of data (e.g. observed and computed by a
fitting procedure) the plot is
produced and also the output file ks.out.
The Bongo commandfile is also available.
LABEL
Format: LABEL string or LABEL ?
Parameters: string, a text of 40 characters max or a "?".
Function: Writes string at the lastdefined position. Dimension,
color and angle derive by the last TEXT command (or by default values). If
the string is "?", Bongo asks for a keyboardsupplied string.
Examples: only in the case of "?"
echo enter label:
label ?
on the screen will appear:
enter label:
give some label from the keyboard
See also: CLABEL, ECHO, FONT, SRELOCATE, RELOCATE, XLABEL, YLABEL, TEXT and
text.png, text.bon for text orientation.
Example: If the string is longer than 40 characters, you can
RELOC(ate) after the last character and write (i.e. LABEL) another string,
as in the following example:
text 1 10
reloc 1890 15.30
label from: www.earthpolicy.org/Indicators/Temp/20
reloc 1958 15.30
label 08__data.htm#fig1
(second label due to the limit of 40 chars max for a single label)
(compare the result in the upper (red) label here)
Bugs: none
LAST
Format: LAST x1 or LAST
Parameters: number of data lines, starting from the bottom of the
data file, to be managed and plotted. Default value is 300.
Function: plots (and/or manages) the last x1 lines of the data file.
To be used before 'LINES x1,x2'.
Please note that LAST command is used to plot an increasing number
of data (such as in a weather station) without changing the scale of the
abscissa; so the abscissae should be always taken as numbers between 1 and
x1 (change LIMITS to modify this number [i.e. x2]).
The user should approximatively know the real scale of the plot (e.g. in
the plot of the example below, 1300 represent the last 6 days after the date on
the top of the plot or in the data file_name. Here is: December 20, 2009).
See also: LINES, DATA
Bugs: none
Example: see e.g. weatherlast.png, (.bon), (data file)
LIMITS
Format: LIMITS x1 x2 y1 y2
Parameters: first and last abscissa; first and last ordinate, in user
coordinates.
Function: Defines the limits of plotting area in user coordinates. Scaling
depends on these numbers.
Examples:
digits 0 1  ! 0 and 1 decimal digits for xaxis and yaxis labels,
respectively 
delta 5 5 5 5  ! 5% of the axis lenght left after and before lticks,
both axes 
limits 1870 2010 3 3  ! limits of the plot, user coordinates 
lticks 7 6  ! sevenx and sixy large intervals 
sticks 5 5  ! five small intervals in any large interval, both axes 
grid 6 3 1  ! draws the grid 
produces this plot
Bugs: none
LINES
Format: LINES p1 p2 p3 or LINES p1 p2
Parameters: first, last line, step (default value for step is
1)
Function: Defines the first and the last line of the actually open data file
and the step of data.
Internal vectors XV and YV will be inizialized by data from p1
to p2, with step p3, extrema included. If
p1 or p2 or
both, or p3 are less than
zero, Bongo asks for the input of p1, p2 (,p3) via the
keyboard.
Example:
LINES 3 54 ! lines from 3.rd to 54.th, step 1; i.e. reads line 3,4,5,...,54
LINES 3 54 2 ! lines from 3.rd to 54.th, step 2; i.e. reads line 3,5,7,...,53.
LINES 1 1 ! asks for the 1st and the last lines
LIST
Format: LIST lin1 lin2 or LIST
Parameters: first and last line or none
Function: Lists the command buffer between lines lin1 and lin2,
extrema included. No parameter means "all lines".
List stops every 22 lines and shows:
< RET > to continue < ESC> to exit. Hit Escape to stop listing,
or any other key to continue.
See Also: DATA, ECHO
Bugs: none
LOMB
Format: LOMB p1 p2 or LOMB
Parameters: parameters to compute the number of periods e the
confidence level of any peak. Default values 5 and 4 , respectively.
Their real names are OFAC and HIFAC, respectively and the number of periods
to be computed is NP=OFAC*HIFAC*KMAX/2. The significance level is
P(>z)=1(1e^z)^M with M=HIFAC*KMAX.
See Numerical Recipes in Fortran, 2.nd edition,
2009, pag. 569.
Function:
Computes the normalized Lomb periodogram for unevenly spaced data (time
series). Writes the output file LOMB.OUT and, on output, XV and YV contain
periods (in the same units as the input data) and power spectrum.
Example: This Bongo command
file computes the Lomb spectrum of karalaptev.dat time series of % Fe grains in both
Kara and Leptev Seas from about 10000 to 0 years "before present" (BP).
The same spectrum has been computed by:
NASA Exoplanets Service code, with some label added by me
within the plot.
My own LOMB standalone code
Bongo command LOMB with default
parameters (ofac=5; hifac=4), which writes also the output file lomb.out (columns are Period, Frequency,
Power).
Please, compare the plots.
Bugs: none, but Lomb requires data to be detrended. If they show some
trend you can use the MACRO routine detrend.bmr, available in the bongo/bmr directory.
LTICKS
Format: LTICKS nx, ny
Parameters: Number of x and y intervals
Function: Defines the large ticks, i.e. the number of intervals x and y
axes are divided in. In correspondence of such ticks, the axes
are labelled with numerical values.
See also: STICKS, LIMITS
Bugs: none
LTYPE
Format: LTYPE linecode, color
Parameters: numerical code for line pattern, color
Function: Defines line pattern and color. Lines are effectively drawn by the
command CONNECT. Available codes and patterns are:
 0  No LINE


 1  ''


 2  '  '


 3  ' '


 4  '    '


 5  '. . . . . .'


 6  '. . . . . . . . '


 7  ' .  .  '


See also: CONNECT, Fig.17 and a
2Xzoom
Bugs: none
MACRO
Format: MACRO path/file_name (or path/file_name.bmr)
Parameters: file_name (and/or path) of the file containing the
commands of the macro routine
Function: load and execute an external command file. Defaults
file_name extension is .bmr (bongo macro
routine).
The following table lists some of the available macro routines in
Bongo, but the really updated list with code and examples
is macro.html.
begin.bmr  Start block of a command file  Copy into
a new command file and edit 
start.bmr  The same as above  
end.bmr  Ending block of a command file  Copy into
a new command file and edit 
ci.bmr  Confidence intervals  
detrend.bmr  Detrend from a polynomial fit  
eclittica.bmr  Draw Ecliptic and Celestial Sphere  
equatore.bmr  Draw Celestial Sphere with Equator  
events.bmr  Draw ENSO & Volcanic eruptions  
eventsdelta.bmr  The same as above with delta from zero  
detrend.bmr  Compute fit line e detrend from the line (or another curve)  
periods.bmr  Draw periods from Scafetta up to 60 yrs  
periods5.bmr  The same as above up to 14.515 yrs  
periods6.bmr  The same as above up to 30 yrs  
template.bmr  Template for 1plot, 2 kinds (like 1p.bmr)  
template1p.bmr  Template for 1plot, 2 kinds  
template2p.bmr  Template for 2plots per page  
template3p2.bmr  Template for 3plots per page  
xxxnorm.bmr  Normalize data to zeromean and unitvariance  
  
  
See also: plot,.bon file or one of the two .bmr files
Bugs: none, but remember to change, following your needs,
filenames, degree of polynomial, identification (id) name, and so on.
The complete path of the routine (bmr/) as it
appears in the examples, is no more required (set as default).
MASK
Format: MASK p1 p2 (this command has no default form)
Parameters: p1= flag to mask a fixed value; p2=the value to be
masked.
Function:
masks (i.e. deletes at runtime, without modification of the original file)
data (XV and YV) whose value is a given number, and rearranges the file.
The structure of this command is: MASK p1 p2, where p1 is a flag (1, 2 or 3,
really is not_1 and not_2) and p2 a numerical value.
Use MASK after XCOL and YCOL
commands.
MASK modifies the length of internal vectors (XV,
YV, EXV,EYV) (Trivial note because it deletes rows in the
vectors and so must change the number of data).
Its scope is to manage, if p1=1, missing data in e.g. meteo records when
they are changed to some conventional value (99.9, 999, 999.9, and so on: p2 is
set to such a value). If p1=2 a data line
(again XY and YV) will be masked: now p2 is the line number in the data file
(line number computed only from data, not comments). The masked vectors (XV
and YV) can of course be saved in a disk file, following the usual procedure:
.
.
data unmasked_file.dat
lines n1 n2
xcol ncolx
ycol ncoly
mask 1 99.9
xsave !save XV
ysave !save YV
save 1 !save XV and YV into save01.sav
dos mv save01.sav some_masked_file.dat
dos rm save*
.
.
See also: XSAVE, YSAVE, SAVE, DOS
Bugs: none
Examples: given the original (unmasked) file caprimax8.txt, MASK 1 99.9
change it to
caprimax8mask.txt, the masked file. The last file, along with a
control file (in red), has been plotted by
mask.bon in caprimask.png
If a data file is given, that doesn't include xvalues (i.e. XCOL 0 command
is needed) you must use MASK 2 val (e.g. 99) as in this example:
data, .bon, pdf,
png
MEM
Format: MEM p1 p2 or MEM p1 or MEM
Parameters: Number of nodes NOD (max= ndata/2), step of computed
spectrum KR. Default values are #data/2 and 2.
Function: Computes the MEM (Maximum Entropy Method) Spectrum of YV.
Writes the output file mem.out which contains in the 1.st column the
Period, in the 2.nd column the Frequency and in the 3.rd one the Power.
Period and frequency have the same unit as input data (e.g. frequency in
months^{1} and period in months). If periods (P) are required in
years while data are at monthly step (i.e. frequency (F) in
month^{1}), use P=1/F*1/12 or Pyears=Pmonths/12.
This operation is left to the user (e.g. XCOL 1, XOPER / 12).
If data have a 5years step, then Pyears=P5years*5
(e.g. XOPER * 5).
The internal vectors XV and YV remain
unchanged.
Output data can be plotted after reading the output file
mem.out,as:
MEM  !computes the mem power spectrum and writes
mem.out 
DATA mem.out  ! opens the output of MEM 
LINES 3 1000  ! reads lines 31000 
XCOL 1  ! reads the periods in months 
XOPER / 12  ! changes the periods
from months to years (note the spaces among elements) 
YCOL 3  ! read the spectral power 
DOS cp mem.out some_file.out  ! save mem.out to
a more suitable file name 
The sense of p2 (or KR) is the following: after the coefficients have
been computed, the spectrum can be derived at any step within the limits
00.5 of the frequency. So KR is the step and kr=2 means the spectrum
is computed with a doubled number of points with respect to the original
ones (i.e. at half step).
See also: POWER, DOS, XOPER, YOPER, XSAVE, YSAVE, SAVE,
Bugs: None, but note that the maximum number of data is kmax=7000 and
kmax=ndata*kr. So don't use too large kr values (hopefully no
more than 4, but try yourself to see what it does happen). If the number of
data will be greater than 7000, it will be set to 7000 and a warning
message written on screen.
Examples:
You may need not only the correct plot with, say, the periods in years but
also the corresponding numerical file, while Bongo output refers to (say)
periods in months and frequencies in months^{1}. You can produce
such a numerical file  starting from the output file power.out  by using
the commands XSAVE, YSAVE, SAVE nn, as in the following part of a command
file:
DATA mem.out  ! open the output of MEM 
LINES 3 2000  ! read lines 32000 
XCOL 1  ! read the periods in months 
XOPER / 12  ! changes the periods from months to
years 
XSAVE  ! save the periods in years to
save.01 
YCOL 2  ! read the frequency in months^{1} 
YOPER * 12  ! changes it to
yrs^{1} 
YSAVE  ! save the frequency to save.02 
YCOL 3  ! read the power spectrum 
YSAVE  ! save the power spectrum to save.03 
SAVE 1  ! save the file save01.sav (save01.sav=save.01+save.02+save.03). 
DOS mv save01.sav some_file.out  ! rename save01.sav 
MEMO
Format: MEMO ipass
Parameters: The range in X (or "time", also called "window") used to compute the moving
average. Must be an odd number (3,5,7,...)
Function: Computes the moving average of YV at 'times' XV. Averaged
data are saved into the output file memo.out ("MEMO"
stays for MEdia MObile, or Moving Average in italian).
On exit, XV and YV internal vectors contain the averaged data.
See also: memo.png (or memo.pdf),
memo.bon,
memo.dat, memo.out, but remember that X and Y vectors in
memo.out are actually (after October 29,2013) in columns 1 and 2,
respectively and not in cols 2 and 3).
Bugs: none.
Example:
If you need to read memo.out output file
data some_file.dat ! read input data
lines 3 100 ! from line 3 to line 100 (stops at end of data)
xcol 1 ! put column 1 data into xvector
ycol 2 ! put column 2 data into yvector
!
ptype 2 2 15 ! define code, size and color (black) of symbols
points ! draw symbols
% ! comment
memo 3 ! perform moving average over a 3 data points interval
% ! comment
ltype 1 24 ! you can plot directly the average
connect ! from XV and YV vectors or can read the output file
% ! OR
data memo.out ! read output of memo routine (averaged data)
lines 2 30 ! read from line 2 to line 30
xcol 1 ! new abscissae (at the center of ipass interval)
ycol 2 ! averaged ordinates
!
color 13 ! set drawing color
ptype 3 2 13 ! define symbols to draw, in red
ltype 1 13 ! define line aspect and color (red)
connect ! draw line through averaged data
points ! draw symbols for averaged data
If you do use XV and YV internal vectors written by MEMO:
memo 3
ltype 1 17 !full green line
connect !draw line
NOFILL
Format: NOFILL
Parameters: none
Function: Flag; sets to OFF the Bongo filling capability.
See also: FILL
Bugs: none
NOISE
Format: NOISE p1
Parameters: p1 is a flag: p1=1 uniform; p1=2 (default) gaussian;
p1=3 esponential noise
Function: Computes and writes into EYV internal vector a 3kind
noise. The noise can be added (YOPER 21 1) to an existing function or
dataset into YV vector.
Examples: the Bongo command file used to generate the following
plots. Any plot shows in the top frame, the noise (uniform, gaussian,
exp) and the sin function used as test;
the sin function plus the noise, i.e. the noised
function in the bottom frame. noise.bon; noise1.pdf; noise2.pdf;
noise3.pdf.
See also: YOPER, FUNC
Bugs: none
OFF
Format: OFF
Parameters: none
Function: Closes the output file bongo.ps and prepares itself to open
another bongo.ps. It doesn't write the logo ' BongoLinux
1.4.5' in the
bottom right corner of the page. In practice this command
is useful to display bongo.ps via Ghostview without exit from
the actual Bongo session, like a sort of 'interactive' session.
In practice, END exits Bongo and writes the logo; OFF closes
bongo.ps and doesn't either write the logo or exit Bongo; QUIT works
like END but doesn't write the logo.
END is for normal use; OFF for 'see, correct, run again' sessions
and QUIT when plots must be inserted in a text, where the logo
can give some problem and force supplementary work.
See also: END, QUIT, WRITE
Bugs: none
PAUSE
Format: PAUSE
Parameters: none
Function: Stops the execution of the next command until a key is pressed.
An acustic signal outlines the presence of this command. No
message is written to the screen.
Bugs: none
PBOX
Format: PBOX xor yor
Parameters: X and Y screen coordinates in pixels
Function: Defines the origin of BOX. X and Y are the coordinates
of the bottom left corner of the plotting region.
See also: PHYSICAL
Bugs: none
PCOM
Format: PCOM
Parameters: none
Function: displays the values of the variables in the common blocks of
both Plotpe and Bongo
libraries. This command has been written for author's use, so
not all may be clear; nevertheless PCOM can be useful in some
cases, to control input values.
Bugs: none
PHYSICAL
Format: PHYSICAL xstart xend ystart yend
Parameters: screen coordinates (pixels) of the plotting area
Function: defines the physical screen coordinates of the plotting area.
Corresponds to the combination PBOX+XAXIS+YAXIS. Default physical
area is 120,519,200,599: use this command if these values must be
changed.
Examples: plot0, .bon; plot, .bon
See also: PBOX, XAXIS, YAXIS
Bugs: none
PLAYBACK
Format: PLAYBACK
Parameters: none
Function: Executes the command buffer from the first to the last command.
No jump is allowed, apart for the couple JUMPCONTINUE.
See also: JUMP, CONTINUE
Bugs: none
POINTS
Format: POINTS
Parameters: none
Function: Draws a symbol, following the last PTYPE command style or the
default settings, at the x and y user coordinates defined
in the XV and YV internal vectors.
See also: PTYPE
Bugs: none
POW
Format: POW p1 p2 p3
Parameters: p1=ordinate for xv=0; p2=exponent; p3=#of data (kmax)
Function: Computes the powerlaw function YV(I)=p1*XV(I)**p2
Example:(for the command EXP, but both commads have the same
structure). .bon, .png, data
(ordinate), data (abscissa),
fake_file.
See also: EXP, SIN, COS
Bugs: none, but the computed data number depends on the last LINES
command. If you have, say, 5 data (and so, LINES 1 5) and want to verify if
they follow a
powerlaw (or exp) function, this command computes the power (exp) function
only for the first 5 points. So you need to read (DATA fake.dat) a fake file and
to give another LINES command in order to allow EXP or POW compute a
suitable number of data. You cannot give only LINES without DATA command.
PTYPE
Format: PTYPE code,dimension,color
Parameters: numerical code for symbol shape, dimension (side
or radius) in pixels, color.
Function: Defines symbol code, dimension and color. Symbols are
effectively drawn by the command POINTS.
Available codes:
0  No Symbol


1  +


2  x


3  Triangle up


4  Square


5  Diamond


6  Circle


7  Dot (1 pixel)


8  Asterisk


9  Star (minimum dimension: 3 pixels)


10  Triangle down


Ptype remains in effect until another Ptype is
given.
See also: POINTS, fig9
Bugs: none
QUIT
Format: QUIT
Parameters: none
Function: Exits from Bongo to Linux. Does not save the actual command buffer
(use WRITE for that). It closes
the output file bongo.ps. Doesn't write the logo 'BongoLinux
1.4.5'
in the bottom right corner of the page.
In practice, END exits Bongo and writes the logo; OFF closes
bongo.ps and doesn't either write the logo or exit Bongo; QUIT works
like END but doesn't write the logo.
END is for normal use; OFF for 'see, correct, run again' sessions
and QUIT when plots must be inserted in a text, where the logo
can give some problem and force to supplementary work.
See also: END, OFF, WRITE
Bugs: none
READ
Format: READ filename
Parameters: filename, 50 characters max string containing the
name of a list of Bongo commands (a command file).
Function: Reads a list of commands from a disk file and inizializes the
command buffer. The default extension of filename is
.bon.
Examples:
READ cream.xyz  !load the command file cream.xyz

READ cream  !load the command file cream.bon

Bugs: none, but remember to give the full path, if necessary
RECT
Format: RECT p1 p2 p3 p4
Parameters: p1,p2 user coordinates of the left bottom corner;
p3,p4 user coordinates of the right top corner.
Function: Draws a rectangle from user coordinates. The rectangle can
be filled: if so, also the border will be filled. If you need a border of
different color, give again the command RECT after new COLOR and LTYPE
commands.
Examples:
The example refers to a test of both commands, RECT and SLIN.
pdf, png, bon.
Bugs: none, but remember to redraw with another color if you want to
outline the border of the rectangle.
RELOCATE
Format: RELOCATE xuser yuser
Parameters: x and y user coordinates
Function: sets the current point to xuser, yuser, i.e. defines
where the next writing operation begins on the screen.
See also: SMOVE, SRELOCATE to set the current point in screen
coordinates (pixels).
Bugs: none
RGB
Format: RGB p1
Parameters: p1=1 means that the rgb color space will be used in what follows;
if p1=0 the graphs are drawn with a grayscale palette.
Function: makes available the Red, Green, Blue color space. After RGB
1, the color palette shown in fig.18 is used.
RGB 1 and RGB 0 can also be used both in the same command file, so the
number of colors can be extended. Remember to go back to the original color
palette whenever the alternative palette is no more useful.
To write color text, use the command TEXT.
See also: COLOR, LTYPE, PTYPE, TEXT, fig.18
(pdf)
and text.png, text.bon
Bugs: none
RIMA
Format: RIMA filename
Parameters: filename containing an image.
Function: Load the image to be traced by COUNTOUR. The image must
be written as REAL*4 (100x100) max. The first row contains NY
and NX, # of columns and rows, respectively.
Example: fortran code to write the image matrix
.
.
real aa
dimension aa(100,100)
.
open (12,file='matrice.dat')
write(12,*)ny,nx
do i=1,ny
write(12,*) (aa(i,j), j=1,nx)
enddo
close (12)
.
.
See also: CONTOUR, contour, see matrice.dat, WRIMA
Bugs: none
SAVE
Format: SAVE n
Parameters: ordinal to distinguish saved files
Function: Saves all SAVE.NN into the file SAVEnn.SAV, in the same order
the working files have been originally written. Only numerical
values are saved, so, if you wish to retain SAVEnn.SAV, add
any comment you need. Any SAVE command resets to 01 the NN of
SAVE.NN file. If WCOMM l1 l2 has been given, SAVE writes also
l1tol2 lines of comment read from DATA file (kflag=1). If WCOMM
0 0, then kflag=0 and nothing is written.
See also: EXSAVE, XSAVE, EYSAVE, YSAVE, WCOMM, DATA
Examples:
1)
DATA  filename  ! reads input data

XCOL  1  ! assigns the column #1 to XV

YCOL  3  ! assigns the column #3 to YV

XSAVE   ! writes XV to disk file SAVE.01

YSAVE   ! writes YV to disk file SAVE.02

SAVE  1  ! creates SAVE01.SAV with columns taken from

  ! SAVE.01 and SAVE.02.

2)
DATA  filename  ! reads input data

WCOMM  1 5  ! sets kflag=1

XCOL  1  ! assigns the column #1 to XV

YCOL  3  ! assigns the column #3 to YV

XSAVE   ! writes XV to disk file SAVE.01

YSAVE   ! writes YV to disk file SAVE.02

SAVE  1  ! creates SAVE01.SAV with columns taken from

  ! SAVE.01 and SAVE.02. Ahead 5 lines of
comment

DATA  filename  ! reads input data

XCOL  1  ! assigns the column #1 to XV

YCOL  3  ! assigns the column #3 to YV

XSAVE   ! writes XV to disk file SAVE.01

YSAVE   ! writes YV to disk file SAVE.02

SAVE  2  ! creates SAVE02.SAV with columns taken from

  ! SAVE.01 and SAVE.02.

3)
DATA  filename1  ! reads input data

XCOL  1  ! assigns the column #1 to XV

YCOL  3  ! assigns the column #3 to YV

XSAVE   ! writes XV to disk file SAVE.01

YSAVE   ! writes YV to disk file SAVE.02

DATA  filename2  ! reads input data

XCOL  1  ! assigns the column #1 to XV

YCOL  3  ! assigns the column #3 to YV

XSAVE   ! writes XV to disk file SAVE.03

YSAVE   ! writes YV to disk file SAVE.04

SAVE  10  ! creates SAVE10.SAV with columns taken from

  ! SAVE.01, SAVE.02, SAVE.03 and SAVE.04

(In any case, the command DOS can be used to change the name(s) of SAVEnn.SAV to a more
suitabe one(s),
e.g DOS mv save10.sav
some_name.dat or DOS rename save10.sav
some_name.dat , in Windows)
Reads a file with years and winter cloudiness anomalies for the station
named "bil"; "sea" means "season". Computes
anomalies normalized to the sum of all data (yoper code 11). Saves xdata
and ydata separately, and writes a new file with both years and
normalized anomalies:
pdf; .bon, save.01, save.02, save01.sav, sumsave.out
Bugs: none
SCALOG
Format: SCALOG lx,ly
Parameters: lx=1 means that the scale on the xaxis will be a
logarithmic one; the same for yaxis if ly=1. Possible couple of values
are: (0,1);(1,0);(1,1). (0,0) is the same as to comment (with %) the
command SCALOG (the command stays for SCAla LOGaritmica or LOGarithmic
SCAle in English).
Function: Defines logarithmic scale(s) on xaxis,
yaxis or both.
Examples: Plot and command file for SCALOG 1 0.This
example uses the command DOT; the next one the commands POINTS and CONNECT.
A real case for SCALOG 1 0 (Plot and command file ) and the same for
SCALOG 1 1 (Plot and command file ).
This is the common data file.
Bugs: none, but note that in logscales small intervals (command
STICKS) are 9 by default and cannot be changed, and that the large ticks
labels are only integer decades (e.g. 10^{1}, 10^{1}, 10^{10},
not 5·10^{3} or 0.2·10^{2}).
SGF
Format: SGF p1 p2 or SGF p1 or SGF
Parameters: p1= window width (odd), p2=Polynomial order (better 2 or
4), default 11 2.
Function: computes the filtered data of the vector YV, smoothed by the
SavitzkyGolay Filter (SGF) coefficients. SGF allows any window, also
an unsymmetrical one and/or with even width, but here it is used ONLY
with ODD width (3,5,7,... points) and SYMMETRICAL around the center of the
window. The output file sgf.out will be written with general
information and abscissa and smoothed ordinate. This command makes use of
the Numerical Recipes routine savgol.f.
Examples: Given as input data the test function funtest0.50.out, an example of the
output file sgf.out and a combined plot, sgftest.png, from various parameter
coupling can
be analysed along with the bongo command file
sgf.bon used to generate output data and plots.
A new support, in some way
connected to SGL (and also to MEMO and SMOOTH), is the creation of a suitable
test function (e.g. funtest0.50.out above). In Bongo, this is generated, in
the subdirectory funtest/,
by the fortran code funtest.f
(executable code is funtest) which implements what is described here,
at the jonsson.eu site. Please read also the 00readme.txt file.
See also: MEMO, SMOOTH
Bugs: none.
SIN
Format: SIN p1 p2 p3 p4 or SIN p1 p2 p3 or SIN p1 p2
Parameters: p1= amplitude, p2=period, p3=zeropoint (start
abscissa, default 0), p4=last abscissa (default # data)
Function: computes the sine function, given: amplitude, period,
zeropoint (first abscissa) and last abscissa, and stores the result into
the XV and YV internal vectors, i.e.
YV(I)=p1*sin(2π(ip3)/p2).
The abscissae are XV(I)=p3+(i1).
Examples: Common XV data (input);
cos 0.2 60 0; sin 0.2 60 0: plot; .bon; cos 0.2 60 0; sin 0.2 60 80: plot; .bon
Real examples:
GHCN temperature anomalies Land+Ocean, up to march 2013 have been
fitted by a line, detrended and represented by two cosine with 66 and 60
years periods. plot, Orig. data, Data read by .bon, .bon.
The acf of NOAA monthly averaged world temperature anomaly
from 1860 to August 2013 compared to
y=0.3 sin(2π(t574)/780) months or y= 0.3 sin(2π(t47.8)/65 years: pdf; png;
.bon;
input data.
See also: COS, LINES
Bugs: none, but if you want to extend your actual range use a
"fake" LINES 1 1 to give start and endlines by the keyboard, without any
control on the range.
Also note that SIN and COS are computed at constant
step [T=T0+(I1) so (TT0) is always equal to (I1) and step=1]. If you
try to subtract sincos data from a monthly data (step=0.083) you can
generate differences with a (totally fake) periodicity. In this example
such a fake period is 5 years. The problem rises between b) and c) plots:
b) is the detrended from the line in a) and a cosine is also plotted. c)
is b) detrended from cosine: note the "birth" of spurius (fake) peaks.
SLIN
Format: SLIN p1 p2 p3 p4
Parameters: p1,p2 parameters (after FIT or, in any case, usergiven)
of the line Y=p1+p2*X, so p2 is the slope; p3,p4 the first and
the last abscissa you are interested to (they could be years).
Function: Computes a line (Straight LINe), given both intercept/slope and wanted
abscissae, i.e. the interval you want compute and draw the line. This
command also writes the output file slin.out.
This command, combined with SIN or COS can plot a trigonometric function
which follows the behaviour the line has (e.g. a growing sin function like
this. The command file (.bon) relative to the plot).
Examples: SLIN 12.5 0.006 1962 2100: here 1962 and 2100 are the
extrema of the time (years) range you want compute the line within.
This example refers to a test of both commands, RECT and SLIN.
pdf, png, bon, out.
Bugs: none, but remember to redraw with another color if you want to
outline the border of the rectangle.
See also: FIT, SIN, COS
SMOOTH
Format: SMOOTH step
Parameters: step  width of smoothing window, in # of data points.
Function: Computes the smoothing function of the last defined YV data vector.
Smoothed values substitute the original YV data. Plotting of
the smoothed data is the same as in FIT and left to the user. The
output file smooth.out is also written in order to save
smoothed data.
Smoothing routine SMOOFT comes from Numerical Recipes
(1986), where one can read: <<The program gives results that are generally
in accord with the notion "draw a smooth curve through these
scattered points", and is at least arguably objective in doing
so.>> and <<... then uses a Fast Fourier
Transform to lowpass filter the data>>.
See also: FIT, MEMO
Example:
DATA  filename  ! reads input data

XCOL  1  ! assigns the column #1 to XV

XOPER  4 1  ! decimal logarithm of XV

YCOL  3  ! assigns the column #3 to YV

PTYPE  3 3 3  ! defines symbol shape and color

POINTS   ! draws symbols for original data

SMOOTH  6  ! smooths YV by a sixpoints window

LTYPE  1 3  ! defines line type

CONNECT   ! draws line through smoothed data

A real example: pdf; .bon; data file;
the same data pdf,smoothed step=6.
Bugs: none
STAIRS
Format: STAIRS color flag or STAIRS color
Parameters:color drawing (and filling, if any) color.
flag 
controls the histogram kind: if 0 (default), histogram start at
the minimum of box yvalue; if 1, histogram starts at the minimum
of actual y data vector (histograms can be shifted up and down);
if 2, histogram starts at zero (both positive and negative
bins can be traced).
Function: draws a stairshaped (i.e. without the internal bin
limits) histogram of binned data given both as
external file or after BIN command. Maximum allowed number
of bins is 100.
See also: HISTO
Examples:
Old example: bon, gif.
New example: bon, png
(unfilled). bon, png (filled).
Bugs: filling doesn't work. In order to have a filled
stairshistogram the command HISTO should be used as first step between
FILLNOFILL commands and bins
will be filled. Then the command STAIRS with a different drawing color
gives the stair shape. See above Examples.
STICKS
Format: STICKS nx ny
Parameters: Number of x and y intervals
Function: Defines the small ticks, i.e. the number of intervals large
ticks are divided in.
See also: LTICKS
Bugs: none
TEXT
Format: TEXT dim col angle or TEXT dim col or TEXT
Parameters: text dimension, color, angle
Function: Defines dimension of text characters, in units
of actually loaded font, their color and drawing direction.
Please note that orientation is clockwise.
Three font faces are actually available: TimesRoman, Helvetica
and Courier, 6, 9, 15 and 24 pixels high along with their boldfaces.
Text dimension and face are defined by dim parameter as listed in
the following tables:
dim=  TimesRoman (fontx)  Helvetica (fonthx)  Courier (fontcx)  Symbol (fontxg) 
0  6       
1  9      9 
2  15      15 
3  24      24 
4    6     
5    9    9 
6    15    15 
7    24    24 
8     6   
9     9  9 
10     15  15 
11     24  24 

dim  BOLD 
20  Times06 
21  Times09 
22  Times15 
23  Times24 
24  Helvetica06 
25  Helvetica09 
26  Helvetica15 
27  Helvetica24 
28  Courier06 
29  Courier09 
30  Courier15 
31  Courier24 

These settings
remain in effect until another TEXT command is given.
If TEXT is entered with only two parameters or without at all,
the default values (actually dim=1) are set. Parameter dim can
be only an integer ≥0.
Example:
Colors refer to RGB 1 command; if RGB 0 refers to gray scale (fig.18);
font faces are Times Roman, Helvetica and Courier, respectively.
TEXT  2 4 45  15pts chars, avana color, 45 degrees

TEXT  3 18 76  24pts chars, dark blue color, 76 degrees

TEXT  1 1  dim 1 (9pts), yellow(1) color, 0 degrees (default)

TEXT  21 1  dim 21 (9pts, bold) color 1, 0 degrees (default)

TEXT   dim 1, black(24) color, 0 degrees(defaults)

TEXT  0 24  draws in black color 6pixel Times Roman font

    

TEXT  6 4 45  15pts chars, avana color, 45 degrees

TEXT  7 18 76  24pixel chars, dark blue color, 76 degrees

TEXT  5 1  dim 5, yellow(1) color, 0 degrees (default)

TEXT  25 1  dim 25 (9pts, bold) color 1, 0 degrees (default)

TEXT   dim 1 (Times), black(15) color, 0 degrees(defaults)

TEXT  4 15  draws in black color 6pixel
Helvetica font

    

TEXT  10 4 45  15pts chars, avana color, 45 degrees

TEXT  11 18 76  24pts chars, dark blue color, 76 degrees

TEXT  9 1  9pts (Courier), yellow(1) color, 0 degrees (default)

TEXT  29 1  9pts (9ptsbold) color 1, 0 degrees (default)

TEXT   dim 1 (06pts Times), black(24) color, 0 degrees(defaults)

TEXT  5 24  draws in black color, 9pts Helvetica
Courier font

Text example: text.png, text.pdf, text.bon
See also: textor.png, textor.pdf, textor.bon for text
orientation. Please note: on March 7, 2015 the TEXT angle is
changed! See the old angles in textold.png and compare to the new ones. Now the vertical labels are at 90°.
Bugs: none, but if in the Xaxix 4digits or more must be used,
like in the case of the years, TEXT 2, TEXT 6 or TEXT 10 (i.e. 15 pixel high
characters) can give this unpleasant
result. For a better result, the choice is among a lower number of
large ticks, a smaller text size (e.g.
TEXT 1, TEXT 5 or TEXT 9) or an enlargement of the physical dimension of the box
via the command PHYSICAL (see the
Bongo command file).
Note: I've learned that the /font definition in PostScript allows
max 7 character (and the /). So my old definition of e.g HelveticaBold
15pts was /fontbh15 (8 characters) and gave error. So the new definition has
become /fontbh1 and anything has gone well.
VERSION
Format: VERSION
Parameters: none
Function: displays on the screen the version number of the Bongo
actually in use.
Bugs: none
VWRITE
Format: VWRITE p1,p2 or VWRITE
Parameters: p1 first line and p2 last line
of the data vectors to be displayed. Default values are 1 and max number
of lines
Function: Vectors WRITE. Display on the screen the lastdefined XV,
YV and EXV, EYV internal vectors from line p1 to line
p2
Bugs: none, but the listing may be continous. Use Ctrl~S and CtrlQ
codes to stopandgo the list.
WCOMM
Format: WCOMM p1 p2 or WCOMM 99 or WCOMM
Parameters: 1.st and last line of the comments read from the last DATA file.
Default parameters are p1=1, p2=3.
If p1=99, then p2=1 by
default and a dialog opens: one (out of 50) of the comment lines stored
in the XYCOM vector can be changed with a (225 characters max) text given
by the user via the keybord. Of course multiple WCOMM 99 commands can change
several comment lines. The dialog asks for the number of the line (out of
50) to be changed and for the new text.
If p1 or p2 are equal to zero, kflag=0 and
the comment not written on savenn.sav.
Function: writes comment(s)  taken from the last DATA filename  from line
p1 to line p2 (max 50 lines) on the file written by SAVE. Sets to 1 the flag
KFLAG which allows the writing of the comment(s). Use WCOMM 0 0 to set
KFLAG=0 and avoid comment writing.
Note that, by default, the command DATA filename also stores the
first 50 lines of the input file in the common.bgo character variable XYCOM,
so WCOMM command only allows the writing of XYCOM (from p1 to p2) into the
files savenn.sav (e.g. save01.sav  save99.sav).
Examples:
Use WCOMM command as in the following lines
data ....
lines .....
echo change 2nd line with
echo year JFM AMJ JAS OND
wcomm 99
wcomm 1 2
====> This writes on savenn.sav 2_comment_lines (wcomm 1 2)read from the data
file by command "data..." and the second of such lines has been changed by
wcomm 99, with the text, given by the 2nd "echo", you perhaps want "cut and
past" from the echo line.
WCOMM  1 4  ! writes on savenn.sav the first 4 lines 
  ! of the last file read by DATA. Sets KFLAG=1.

WCOMM   ! writes on savenn.sav lines 13 
  ! of the last file read by DATA. Sets KFLAG=1.

WCOMM  99  ! asks for commenttobechanged line number and
text 
  !of one out of 50 comment lines. Sets KFLAG=1.

WCOMM  0 0  ! sets KFLAG=0, i.e. doesn't write any comment

  ! on savenn.sav

wcomm.txt or the way SAVEnn.SAV can
be changed
before 2) and after 3), 4) or 5) WCOMM, given the original file 1).
A video flv (44MB) shows how to use
the WCOMM 99 command, running this
.bon with this
data_file and this output_file (for both '0814' means
'august 2014', i.e. mmyy). The video makes use of
'bongon' instead of 'bongo' because the new command was not
"official" yet; 'gsbgo', the alias
to show the plot on screen (alias gsbgo='gv bongo.ps&') and
'joe'
is the author's preferred Linux text editor; at the end the video shows
both the input file and the plot.
See also: DATA, SAVE, ECHO
Bugs: none. But ... Use
WCOMM before SAVE! (see, e.g., this). Also, the user can give the new string
via the command ECHO and then copy it (paste) in the dialog. If the string needs
spaces (e.g. '
year
anomaly'), the spaces appear to be reduced
to 2 or 3 (i.e. the blanks, if greater than 2, will be compressed). Use tabs
(or any other character) instead of spaces and all will go fine.
WLINE
Format: WLINE line width
Parameters: linewidth (real numbers, e.g. 0.5, 0.7, 1.0, 1.5 ...,
3.6 ...)
Function: Defines the width of the drawing line. This value remains in
effect until another WL command is given.
Examples:
WLINE  0.7  ! a common value to draw the box of the plot

WL  1.5  ! well visible lines or symbols

See also code,color,width, the same at 2X zoom and the .bon command file.
Bugs: none
WRIMA
Format: WRIMA
Parameters: None
Function: Writes on stdout (on the screen) the real matrix stored by
RIMA. This is mainly a service command, to verify if the matrix AMAT
(100,100) has changed in any way.
See also: RIMA
Bugs: none
WRITE
Format: WRITE filename
Parameters: [path]output file name
Function: Saves on the disk file filename.bon the actual
command buffer. The extension [e.g. .bon] has no default and must be supplied by the
user.
If filename exists, it
will be overwritten without warning.
Bugs: none
XAXIS
Format: XAXIS axislength
Parameters: xaxis length in pixels
Function: Sets Xaxis length. If length overcomes the limits of actual
graphic mode the plot is truncated. String from IDENT is
written in the left side (wraparound).
Bugs: none
XCOLUMN
Format: XCOLUMN n
Parameters: number of a column in the data file. If n=0, the
abscissa XCOL contains a cardinal (1,2,3 ...,kmax).
Function: Assigns the column #n of the data file to Bongo internal
vector XV. If LIMITS is not in effect, this command also computes
max and min of the vector. Use XCOL 0 if you want, as abscissa, a
progressive number from 1 to the number of lines (LINES x1 x2).
Example: Use of XCOL 0. Plot (png, pdf), bon,
input file
Bugs: none.
Not a bug, but remember that, within a colums, data type must be
homogeneous (eg. all integer or real data, not mixed)
XDIFF
Format: XDIFF p1
Parameters: p1 flag. =1 forward differences;
=1 (default) backward differences.
Function: Computes either the differences
DIFF(i)=XV(i)XV(i+1) (forward differences, trimming the
last value [kmax]) or the differences DIFF(i)=XV(i)XV(i1)
(backward differences, trimming the first value[1]),depending on p1 value. The value
lost (at the beginning or the end) is fixed to 99. The output file
diff.out will be written, with the first or the last line set to 99.
This command doesn't change the internal
vectors. So, to use differences, do read diff.out by the command
DATA (only one vector written, the other beeing its last occurrence).
Example: tmaraw.bon reads tmarawy.txt. Outputs are: diff.out and one of diff1.pdf or diff2.pdf.
See also: EXDIFF,EYDIFF,YDIFF,DERIV
Bugs: none
XGRID
Format: XGRID pattern, color, flag
Parameters: pattern and color of the grid, flag=1 draws also small ticks
Function: Draws a vertical (Xaxis) grid superimposed to the plot,
corresponding to the
main ticks. If flag=1 the small ticks are also gridded.
The main ticks are always gridded with solid line.
if the command DELTA has been given, both small ticks and grid
(if required) are drawn also beforethefirst and afterthelast main
ticks
Available patterns are:
 0  No LINE


 1  ''


 2  '  '


 3  ' '


 4  '    '


 5  '. . . . . .'


 6  '. . . . . . . . '


 7  ' .  .  '


Examples:
XGRID  6 3 1  draws a dotted (6) grid in gray (3), all ticks
(1). See example and command file

XGRID  4 4 2  draws a dashed (4) grid in bold yellow (4), main
ticks (not 1).

XGRID  4 4 0  draws a dashed (4) grid in bold yellow (4),
main ticks (not 1).

XGRID  4 4 1  draws a dashed (4) grid in bold yellow (4), all
ticks (1)

See also: GRID, YGRID
Bugs: none, but use the command before LABEL, so labels can overwrite
the grid. Also, choose color or gray level so
that the grid does not collide with the graph colors.
XLABEL
Format: XLABEL string or XLABEL ?
Parameters: string, a text of 40 characters max or "?".
Function: Writes string centered below the Xaxis of the plot. No fixed
angle is given, so do control the last given TEXT command and give a new TEXT with
angle=0, if necessary. Or it asks for a keyboardsupplied string.
Examples: only in the case of "?"
echo enter xlabel:
xlabel ?
on the screen will appear:
enter xlabel:
give some string from the keyboard
See also: BOX, CLABEL, ECHO, LABEL, YLABEL
Bugs: This command must be given after BOX
XOPER
Format: XOPER opcode, constant
Parameters: code of selected operation, constant required by operation
(or 1 or 0 as necessary)
Function: Applies the operation defined by opcode to the XV internal vector.
Available opcodes are:
Operation  Opcode  Operation  Opcode 
1) vector+constant  (+) or (1)  10) EXP(vector*constant)  (exp,EXP) or
(10) 
2) vector*constant  (*) or (2)  11) vector/(vector
values)  (11) 
3) vector/constant  (/) or (3)  12) vector to hh.mmss
ordd.mmss  (12) 
4) LOG10(vector)*constant  (log,LOG) or (4)  13) (1:i)vector/
(1:N)vector  (13) 
5) LN(vector)*constant  (ln,LN) or (5)  14) const/vector  (14) 
6) vector**constant  (^) or (6)  15) residuals:
(XXm)**constant  (15) 
7) vector/vector(constant)  (7)  16) (1:N)vector  (16) 
8) vectorvector(constant)  (8)  17)  (17) 
9) 10**(vector*constant)  (10^,10**) or (9)  18)  (18) 
21) vector1± (vector2*const)  (21) 
24) vector1=vector2  (24) 
22) vector1*(vector2*const)  (22) 
25) vector2=vector1  (25) 
23)
vector1/(vector2*const)  (23)   
Original data vector will be modified by
ANY of the above operations.
Modifications remain in effect until
another XOPER is given
or command is cancelled.
Log of negative number is set to
50.
Code 3: constant=0 (zero) means constant=# of data (N or
KMAX).
Codes 7 and 8 allow normalization with respect to any element (set
constant to the ordinal of the element) of the YV vector.
Code 11 allows normalization with respect to the integral of vector.
The file sum.out, containing the sum of the vector is
also created.
Code 12 assumes that data are expressed in terms of minor unit
(e.g. in arcsec if degrees.minutesseconds are
required)
Code 13 computes the empirical distribution function
(cumulative distribution)
of an early binned vector. The file sum.out, containing
the sum of the data vector is also created.
Code 14 computes the inverse of the vector time a
constant. If vector=0 then the inverse will be equal to
9999.
Code 15 computes the residuals from the mean of the
vector, raised to a constant. i.e. (YYm)**const, Ym beeing the vector
mean.The file aver.out, containing the vector mean and the
standard deviation of the sample, is written.
Code 16 computes the sum of a vector. Constant not used,
so set it to 1 in the command (e.g. XOPER 16 1). Result stored in
sum.out.
Codes above 20 allow operations between XV and EXV and/or
between
YV and EYV vectors. Results are copied into XV and YV
vectors respectively (i.e. into vector1).
Code 25 copies YV value into EYV vector (i.e. saves YV
into EYV). On the contrary,Code 24 saves EYV into
YV.
See also: EXOPER,EYOPER,YOPER
Example:
only an example referred to 2125 codes is presented. Two files
must be read and three vectors extracted: one abscissa (common to
both data vectors) and two ordinates (o1 and o2 from the files
file1.dat and file2.dat, respectively). Ordinates must
be arranged in order to give a new ordinate o3=log (o1)log(o2).
The command file is:
LIMITS  x1 x2 y1 y2  ! limits in user coords

BOX   ! draw axes and ticks

DATA  [path]file2.dat  ! note: the first one is 2.nd file

LINES  12 200 

XCOL  1  ! load abscissa into XV

YCOL  2  ! second ordinate o2 into YV

YOPER  log 1  ! log (o2)

YOPER  25 1  ! put log(o2) into EYV (i.e. vect2=vect1)

DATA  [path]file1.dat  ! read first file

LINES  12 200 

YCOL  2  ! first ordinate o1 into YV

YOPER  log 1  ! log (o1)

YOPER  21 1  ! subtract: YV=YV+(1*EYV)

LTYPE  1 15  ! set black, solid line

CONNECT   ! draw line

Bugs: Due to some unknown reason, a command like:
xoper +
1880.0833333333333 gives the error: XOPER needs 2 parameters, not
3,
while
a command like:
xoper + 1880.0833333333 works fine. Apparently, the
maximum number of decimal digits must be 10.
Be sure that in code 23, vector2 is not a null vector.
XROW
Format: XROW n
Parameters: number of a row in the data file
Function: Assigns the row #n of the data file to Bongo internal
vector XV. If LIMITS is not in effect, this command also computes
max and min of the vector.
Example: plot; command
file .bon and data file.
Bugs: none.
XSAVE
Format: XSAVE
Parameters: none
Function: Saves the lastdefined XV vector on the disk file SAVE.NN
(NN=01, 02 ..., 99). This is a working file: SAVE command
saves all SAVE.NN into the file SAVEnn.SAV, in the same order
the working files have been originally written. Only numerical
values are saved, so, if you wish to retain SAVEnn.SAV, add
any comment you need (use DOS command to do that).
Example:
DATA  filename  ! reads input data

XCOL  1  ! assigns the column #1 to XV

XOPER  4 1  ! decimal logarithm of XV

XSAVE   ! writes logarithms to disk file SAVE.01

YCOL  3  ! assigns the column #3 to YV

YOPER  7 1  ! gets YV(I)=YV(I)/YV(1)

YSAVE   ! write normalized data to disk file SAVE.02

SAVE  3  ! creates SAVE03.SAV with column taken from

  ! SAVE.01 and SAVE.02

Reads a file with years and winter cloudiness anomalies. Computes
anomalies normalized to the sum of all data (yoper code 11). Saves x data
and
ydata separately, and writes a new file with both years and normalized anomalies:
pdf;
.bon,
save.01,
save.02,
save01.sav,
sumsave.out
Bugs: sometime a zerolength file SAVE.NN is created. Delete the file
and try againg PL.
XSORT
Format: XSORT
Parameters: none
Function: sorts XV vector in ascending order and
consequently rearranges YV. Original XV and YV are modified.
The output
file sort.out is written, containing XV and YV as 1.st and 2.nd column.
Example:
See also: YSORT (note that here, in sort.out, the vectors are exchanged).
Bugs: EXV and EYV vectors are not sorted.
XSTAT
Format: XSTAT
Parameters: none
Function: Computes and saves to the disk file stat.out the number
of data, mean value, standard deviation, variance, third
moment (skewness), fourth moment (kurtosis),
Max,
Min, Range (=MaxMin) of the XV data
vector. Third and fourth moments are the adimensional ones. This
means that:
skewness=(x X)^{3} /
(N1)^{3}
kurtosis=(xX)^{4} /
(N1) ^{4}
N beeing the number of data, X the mean value
of XV and σ the standard deviation of residuals.
stat.out is a file with access=append, so new data are
appended to an existing file or a new one is created.
The first line of any stat.out file indicates what the
following colums contain.
No other written information is present in the output file:
a new row with the above data is added any time XSTAT
command is given.
XYSTAT
Format: XYSTAT
Parameters: none
Function: Computes and saves to the disk file stat.out (actually from this example) number of data, their sum,
mean value, standard deviation, variance,
skewness, kurtosis, Max, Min, Range (=MaxMin) of the XV data
vector, if its probability (or frequency)
distribution is known and contained into the vector YV.
Skewness and kurtosis derive from:
skewness=(x X)^{3}*p/^{3}
kurtosis=(xX)^{4}*p/^{4}
N beeing the number of data, X the mean value
of XV, p its probability and σ the standard deviation of residuals.
stat.out is a file with access=append, so new data are
appended to an existing file or a new one is created.
The first line of any stat.out file indicates what the
following colums contain.The last column shows that XYSTAT has
been called (not XSTAT or YSTAT).
No other written information is present in the output file:
a new row with the above data is added any time XSTAT
command is given.
See also: XSTAT, YSTAT
Example:
DATA  filename  ! reads input data

XCOL  1  ! assigns the column #1 to XV

XYSTAT   ! a new row of stat.out is added, for XV

  ! if YV is its probability distribution

Bugs: none
XZERO
Format: XZERO val1 val2 or XZERO val1 or XZERO
Parameters: x user coordinate, line type (1 to 7)
Function: draws a line (shape as val2) at user coordinate x=val1,
from YMIN to YMAX
(i.e. a vertical line), with the lastdefined color.
Val1 is defaulted to zero and val2 to 1. Use LTYPE command to
change drawing color.
Example: XZERO 4 3 and
.bon file.
See also: provazero.png,
provazero.pdf and
(.bon). The available line shapes
Bugs: none
YAXIS
Format: YAXIS axislength
Parameters: y axis length in pixels
Function: Sets Yaxis length. If length overcomes ydimension of actual
graphic mode the plot is truncated.
Bugs: none
YCOLUMN
Format: YCOLUMN n
Parameters: number of a column in the data file. If n=0 the
ordinate is set to cardinal numbers from 1 to # of data.
Function: Assigns the column #n of the data file to Bongo internal
vector YV. If LIMITS is not in effect, this command also computes
max and min of the vector. Use YCOL 0 if you want, as ordinate, a
progressive number from 1 to the # of lines (LINES x1
x2).
Bugs: none.
Not a bug, but remember that, within a colums, data type must be
homogeneous (eg. all integer or real data, not mixed)
YDIFF
Format: YDIFF p1
Parameters: p1 flag. =1 forward differences;
=1 (default) backward differences.
Function: Computes either the differences
DIFF(i)=YV(i)YV(i+1) (forward differences, trimming the
last value [kmax]) or the differences DIFF(i)=YV(i)YV(i1)
(backward differences, trimming the first
value[1]), depending on p1 value. The value
lost (at the beginning or the end) is fixed to 99. The output file
diff.out will be written, with the first or the last line set to 99.
This command doesn't change the internal
vectors. So, to use differences, do read diff.out by the command
DATA (only one vector written, the other beeing its last occurrence).
Example: tmaraw.bon reads tmarawy.txt. Outputs are: diff.out and one of diff1.pdf or diff2.pdf.
See also: EXDIFF,XDIFF,EYDIFF,DERIV
Bugs: none, but if you need to save in the same file both
Xvalues (e.g year) and Yvalues (differences) you can do the
following:
 assume Xvalues are in the 1st column of the file input.txt
 assume you have already computed the difference [e.g. by the command
ydiff 1], so you have the file diff.out.
 in your bongo file, after the command ydiff, add the
following lines:
data input.txt !access Xvalues file
lines 3 130 !read lines from 3 to 130, extrema included
xcol 1 !Xvalues in XV
xsave !save Xvalues
data diff.out !access differences file
lines 1 130 !or your line numbers
ycol 1 !difference in YV
ysave !save differences
save 1 ! or 2, 3,... save XV and YV into the same file save01.sav
dos mv save01.sav your_file.ext !rename savenn.sav
dos rm save* !delete all the "housekeeping" save files
 use your_file.ext for next operations
YGRID
Format: YGRID pattern, color, flag
Parameters: pattern and color of the horizontal (yaxis) grid, flag=1 draws also small ticks
Function: Draws a horizontal (yaxis) grid superimposed to the plot,
corresponding to the
main ticks. If flag=1 the small ticks are also gridded.
The main ticks are always gridded with solid line.
if the command DELTA has been given, both small ticks and grid
(if required) are drawn also beforethefirst and afterthelast main
ticks
Available patterns are:
 0  No LINE


 1  ''


 2  '  '


 3  ' '


 4  '    '


 5  '. . . . . .'


 6  '. . . . . . . . '


 7  ' .  .  '


Examples:
YGRID  6 7 1  draws a dotted (6) grid in orange (7), all ticks
(1). See example and command file.

YGRID  4 4 2  draws a dashed (4) grid in bold yellow (4), main
ticks (not 1).

YGRID  4 4 0  draws a dashed (4) grid in bold yellow (4),
main ticks (not 1).

YGRID  4 4 1  draws a dashed (4) grid in bold yellow (4), all
ticks (1)

See also: GRID, XGRID
Bugs: none, but use the command before LABEL, so labels can overwrite
the grid. Also, due to solid lines for the main ticks, choose color or gray level
so that the grid does not collide with the graph colors.
YLABEL
Format: YLABEL string or YLABEL ?
Parameters: string, a text of 40 characters max or "?"
Function: Writes string centered on the left side of the Yaxis of the plot.
Angle has the value of 270 degrees or asks for a
keyboardsupplied string.
Examples: only in the case of "?"
echo enter ylabel:
ylabel ?
on the screen will appear:
enter ylabel:
give some string from the keyboard
See also: BOX, CLABEL, ECHO, LABEL, XLABEL
Bugs: This commando must be given after BOX
YOPER
Format: YOPER opcode, constant
Parameters: code of selected operation, constant required by operation
(or 1 or 0 as necessary)
Function: Applies the operation defined by opcode to the YV internal vector.
Available opcodes are:
Operation  Opcode  Operation  Opcode 
1) vector+constant  (+) or (1)  10) EXP(vector*constant)  (exp,EXP) or
(10) 
2) vector*constant  (*) or (2)  11) vector/(vector
values)  (11) 
3) vector/constant  (/) or (3)  12) vector to hh.mmss
ordd.mmss  (12) 
4) LOG10(vector)*constant  (log,LOG) or (4)  13) (1:i)vector/
(1:N)vector  (13) 
5) LN(vector)*constant  (ln,LN) or (5)  14) const/vector  (14) 
6) vector**constant  (^) or (6)  15) residuals:
(XXm)**constant  (15) 
7) vector/vector(constant)  (7)  16) (1:N)vector  (16) 
8) vectorvector(constant)  (8)  17)  (17) 
9) 10**(vector*constant)  (10^,10**) or (9)  18)  (18) 
21) vector1± (vector2*const)  (21) 
24) vector1=vector2  (24) 
22) vector1*(vector2*const)  (22) 
25) vector2=vector1  (25) 
23)
vector1/(vector2*const)  (23)   
Original data vector will be modified by
ANY of the above operations.
Modifications remain in effect until another YOPER is given
or command is cancelled.
Log of negative number is set to
50.
Code 3: constant=0 (zero) means constant=# of data (N or
KMAX).
Codes 7 and 8 allow normalization with respect to any element (set
constant to the ordinal of the element) of the YV vector.
Code 11 allows normalization with respect to the integral of vector.
The file sum.out, containing the sum of the vector is
also created.
Code 12 assumes that data are expressed in terms of minor unit
(e.g. in arcsec if degrees.minutesseconds are required)
Code 13 computes the empirical distribution function
(cumulative distribution)
of an early binned vector. The file sum.out, containing
the sum of the data vector is also created.
Code 14 computes the inverse of the vector time a
constant. If vector=0 then the inverse will be equal to
9999.
Code 15 computes the residuals from the mean of the
vector, raised to a constant. i.e. (YYm)**const, Ym being the vector
mean. The file aver.out, containing the vector mean and
the standard deviation of the sample, is written.
Code 16 computes the sum of a vector. Constant not used,
so set it to 1 in the command (e.g. XOPER 16 1). Result stored in
sum.out.
Codes above 20 allow operations between XV and EXV and/or
between
YV and EYV vectors. Results are copied into XV and YV
vectors respectively (i.e. into vector1).
Code 25 copies YV value into EYV vector (i.e. saves YV
into EYV). On the contrary,Code 24 saves EYV into
YV.
See also: EXOPER,EYOPER,YOPER
Examples:
A dataset (i.e. a YCOL content or YV) can be standardized
[std=(YYm)/σ(Y)] by the sequence:
XCOL  1  ! xvalues in XV

YCOL  2  ! yvalues in YV

MASK  1 99.9  ! (or so, if necessary)

YOPER  15 1  !(YYm), residuals, Ym being the average value
of YV

DOS  joe aver.out  !I use joe as text editor and copy σ(YV) into the .bon
file

  !(in the next command line) for a new run. Use your own
editor.

YOPER  / sigma value  ! now YV contains standardized values.
Note space(s) before and after the "/" symbol.

XV and standardized YV can be saved by the sequence:
XSAVE
YSAVE
SAVE
1
DOS mv save01.sav some filename.ext
Another example refers to 2125 codes. Two files
must be read and three vectors extracted: one abscissa (common to
both data vectors) and two ordinates (o1 and o2 from the files
file1.dat and file2.dat, respectively). Ordinates must
be arranged in order to give a new ordinate o3=log (o1)log(o2).
The command file is:
LIMITS  x1 x2 y1 y2  ! limits in user coords

BOX   ! draw axes and ticks

DATA  [path]file2.dat  ! note: the first one is 2.nd file

LINES  12 200 

XCOL  1  ! load abscissa into XV

YCOL  2  ! second ordinate o2 into YV

YOPER  log 1  ! log (o2)

YOPER  25 1  ! put log(o2) into EYV (i.e.
vect2=vect1)

DATA  [path]file1.dat  ! read first file

LINES  12 200 

YCOL  2  ! first ordinate o1 into YV

YOPER  log 1  ! log (o1)

YOPER  21 1  ! subtract: YV=YV+(1*EYV)

LTYPE  1 15  ! set black, solid line

CONNECT   ! draw line

See also: EYOPER, EXOPER, XOPER
Bugs: Due to some unknown reason, a command like:
yoper +
1880.0833333333333 gives the error: YOPER needs 2 parameters, not
3,
while a command like:
yoper + 1880.0833333333 works fine.
Apparently, the maximum number of decimal digits must be 10.
Be sure that in code 23 vector2 is not a null vector.
YROW
Format: YROW n
Parameters: number of a row in the data file
Function: Assigns the row #n of the data file to Bongo internal
vector YV. If LIMITS is not in effect, this command also computes
max and min of the vector.
Example: plot; command
file .bon and data file.
Bugs: none.
YSAVE
Format: YSAVE
Parameters: none
Function: Saves the lastdefined Y vector on the disk file SAVE.NN
(NN=01, 02 ..., 99). This is a working file: SAVE command
saves all SAVE.NN into the file SAVEnn.SAV, in the same order
the working files have been originally written. Only numerical
values are saved, so, if you wish to retain SAVEnn.SAV, add
any comment you need (use DOS command to do that).
Example:
DATA  filename  ! reads input data

XCOL  1  ! assigns the column #1 to XV

XOPER  4 1  ! decimal logarithm of XV

XSAVE   ! writes logarithms to disk file SAVE.01

YCOL  3  ! assigns the column #3 to YV

YOPER  7 1  ! gets YV(I)=YV(I)/YV(1)

YSAVE   ! write normalized data to disk file SAVE.02

SAVE  3  ! creates SAVE03.SAV with column taken from

  ! SAVE.01 and SAVE.02

Reads a file with years and winter cloudiness anomalies. Computes
anomalies normalized to the sum of all data (yoper code 11). Saves x data
and ydata separately, and writes a new file with both years and normalized anomalies:
pdf; .bon, save.01, save.02, save01.sav, sumsave.out
Bugs: sometime a zerolength file SAVE.NN is created. Delete the file
and try againg PL.
YSORT
Format: YSORT
Parameters: none
Function: sorts YV vector in ascending order and consequently
rearranges XV. Original XV and YV are modified.
The output file
sort.out is written, containing YV and XV as 1.st and 2.nd column.
Example: The fifth colums (YV, called "Derivatives") of this file is sorted here and the first column (XV) rearranged.
See also: XSORT (note that here, in sort.out, the vectors are
exchanged).
Bugs: EXV and EYV vectors are not sorted.
YSTAT
Format: YSTAT
Parameters: none
Function: Computes and saves to the disk file
stat.out the number
of data, mean value, standard deviation,
variance, third
moment (skewness), fourth moment (kurtosis),
Max,
Min, Range (=MaxMin) of the YV data
vector. Third and fourth moments are the adimensional ones. This
means that:
skewness=(y Y)^{3} / (N1) ^{3}
kurtosis=(yY)^{4} / (N1) ^{4}
N beeing the number of data, Y the mean value
of YV and σ the standard deviation of residuals.
stat.out is a file with access=append, so new data are
appended to an existing file or a new one is created.
The first line of any stat.out file indicates what the
following colums contain.
No other written information is present in the output file:
a new row with the above data is added any time YSTAT
command is given.
See also: XSTAT
Example:
DATA  filename  ! reads input data

XCOL  1  ! assigns the column #1 to XV

XSTAT   ! a new row of stat.out is added, for XV

XOPER  4 1  ! decimal logarithm of XV

XSTAT   ! a new row of stat.out is added, for new XV

YCOL  3  ! assigns the column #3 to YV

YSTAT   ! a new row of stat.out is added, for YV

YOPER  7 1  ! gets YV(I)=YV(I)/YV(1)

YSTAT   ! a new row of stat.out is added, for new YV

Bugs: none
YZERO
Format: YZERO val1 val2 or YZERO val1 or YZERO
Parameters: val1=y user coordinate, val2=line type (1 to 7)
Function: draws a line (shape as val2) at user coordinate y=val1,
from XMIN to XMAX
(i.e. a horizontal line), with the lastdefined color.
Val1 is defaulted to zero and val2 to 1. Use LTYPE command to change drawing color.
Example: XZERO 4 3 and
.bon
file.
See also: provazero.png, provazero.pdf and
(.bon). The available line shapes
Bugs: none
SARR
Format: SARR x1 y1 x2 y2 l2 ang
Parameters: xstart, ystart, xend, yend, length (pixels), angle
(degrees)
Function: Draws an arrow, given the SCREEN COORDINATES of start and
end points of the body (x1,y1,x2,y2), the length of the head
(L2) and the angle between body and head (θ, degrees) as in this plot (arrowbase.png). Uses the last defined
drawing color.
See also: SDRAW.
For a geometrical description see:
https://math.stackexchange.com/questions/1314006/drawinganarrow.
The sixth command using screencoordinates
is PHYSICAL. Remember that the default screenlimits of the plotting area i.e.
the BOX are 120,519,200,599 (400x400 pixels). Actually I prefer the use of
PHYSICAL 120 520 400 600 (401x201 pixels).
Bugs: none, but actually this command does not make use of the
line width (command WLINE or WL). The arrow is plotted with the same line width of the box.
Example: See a plot (png)
and the relative command file testarrow.bon.
Here an example of a double arrow (an
arrow with two heads): plot
(png) and the command file twoarrows.bon.
SCIRC
Format: SCIRC ir
Parameters: Circle radius (ir,pixels)
Function: Draws a circle, at the last defined current point, with
radius ir, all in SCREEN COORDINATES. Uses the last defined
filling color. The
filling covers also the external border of the circle so,
in order to have a border give again the command SCIRC
after the command COLOR xx, where xx is the preferred
color.
See also: SRECT, SRELOCATE. The sixth command using screencoordinates
is PHYSICAL. Remember that the default screenlimits of the plotting area i.e.
the BOX are 120,519,200,599 (400x400 pixels). Actually I prefer the use of
PHYSICAL 120 520 400 600 (401x201 pixels).
Bugs: none
Example: See a plot (png)
and the relative command file testscreen.bon
SDRAW
Format: SDRAW x1,y1,x2,y2
Parameters: first, last screen (pixel) coordinates
Function: Draws a line, from x1,y1 to x2,y2 in SCREEN COORDINATES.
Use COLOR x, LTYPE y x to change line color to x and
shape to y.
See also: SRECT, SRELOCATE, SMOVE. The sixth command doing use of screencoordinates
is PHYSICAL.
Bugs: none. Not sure but the line width should be the default
one, without any capability to change it.
Example: See a plot (png)
and the relative command file picchi2.bon for an enlargement defined by a dashedline.
SMOVE
Format: SMOVE ix,iy
Parameters: Screen coordinates x,y
Function: Defines the current point at ix,iy pixels. The same as
SRELOCATE
See also: SCIRC, SRECT, SRELOCATE. The sixth command using screencoordinates
is PHYSICAL. Remember that the default screenlimits of the plotting area
i.e. the BOX are 120,519,200,599 (400x400 pixels box). Actually I prefer the use of
PHYSICAL 120 520 400 600 (401x201 pixels).
Bugs: none
SRECT
Format: SRECT ix,iy
Parameters: screen coordinates (ix,iy in pixels) of the opposite
corner of the rectangle, with respect to the current point.
Function: Draws a rectangle from the last defined current point to
the present coordinates.
Uses the last defined filling color. The filling covers
also the external border of the rectangle so, in order to have
a border with a different color give again the command SRECT
after the command COLOR xx, where xx is the preferred color
and after the command NOFILL.
See also: SCIRC, SRELOCATE. The sixth command using screencoordinates
is PHYSICAL. Remember that the default screenlimits of the
plotting area i.e. the BOX are 120,519,200,599 (400x400 pixels).
Actually I prefer the use of PHYSICAL 120 520 400 600 (401x201 pixels).
Bugs: none
Example: See a plot
(png)
and the relative command file testscreen.bon
SRELOCATE
Format: SRELOCATE ix,iy
Parameters: Screen coordinates x,y
Function: Defines the current point at ix,iy pixels.
See also: SCIRC, SRECT. The sixth command using screencoordinates
is PHYSICAL. Remember that the default screenlimits of the plotting area
i.e. the BOX are 120,519,200,599 (400x400 pixels box). Actually I prefer the use of
PHYSICAL 120 520 400 600 (401x201 pixels).
Bugs: none
Example: See a plot
(png) and the relative command file testscreen.bon
Last Updated:
Back to HomePage