GraphDraw
=========

Introduction
------------
What does GraphDraw do?

GraphDraw allows the entry, and editing, of x,y values, and the data
may then be fit to

* best straight line (linear and log axes)
* best parabola
* cubic spline curve
* polynomial of order up to six.

and the results displayed graphically.

A number of options for obtaining hard copy exist (saving as a !Draw
file, or printing via any standard RISCOS printer driver), and the
drawfiles can be exported into any other application that is able to
load such files. The fitted line may also be exported to MultiPlot,
which allows the combination of a number of graphs.  GraphDraw
provides interactive help in conjunction with !Help or !Bubblehelp.

GraphDraw is freely available, and is undergoing continual
development. The latest version can be obtained from the author's web
site, at http://www.chris-johnson.org/software/. The author is always
ready to listen to bug reports, comments and suggestions and will try
to implement such suggestions where feasable.

Installation
------------
For a new installation, simply drag and drop the GraphDraw application
into the directory of your choice.

If you have a previous copy of GraphDraw you have two choices.

* Move the old version of GraphDraw somewhere safe and replace it with
the new version

* Simply copy the new version over the old version

Using GraphDraw
---------------
GraphDraw can be run from the desktop in all the standard ways. Double
clicking on the !GraphDraw icon in a directory viewer will install its
icon on the icon bar.

The application may also be started by double clicking on any
!GraphDraw data file in a directory viewer. This will only work if the
!GraphDraw application has been 'seen' by the filer, so that the filer
knows to run !GraphDraw before loading the file. If the application is
started in this way, besides the icon appearing on the icon bar, the
edit window will be opened with the contents of the data file
displayed, for further editing if necessary.

The iconbar menu
----------------
The iconbar icon menu offers the following options.

Infothis leads to the standard information window, which also
contains a web button, allowing a quick way of accessing the download
site.

Help...will launch the documentation (this file) in the default
browser.

Newwill open a new data input window, assuming the limit to open
windows has not been reached (currently four input windows). The same
action can be achieved by simply clicking with SELECT (the left mouse
button) on the GraphDraw iconbar icon.

See the page Data input for more details on data input.

Choices...will open the application choices dialogue, A full
description of the features available is given in the Choices page.

Quitwill remove GraphDraw from the iconbar and terminate the
program. If there is any unsaved data then a warning will be issued,
and the data can be saved or discarded as appropriate. Screenshots

All the screen shots in these pages were obtained using Snapper, a
versatile screen capture application.

Snapper is available from
http://www.chris-johnson.org.uk/software/snap.html


Choices
+++++++

The choices... dialogue
-----------------------
The choices dialogue has a number of sections, accessed via the Tabs
at the top of the window, and a set of action buttons at the bottom of
the window.

The actions available are:
Set
~~~
This will store the new settings, which will be used for all future
operations. Note that graphs already displayed necessarily may not be
changed, since the local settings for each graph display will override
the choices settings.

Save
~~~~
This will store the new settings, as in Set above, and will also save
the settings to disc, so they will be used when GraphDraw is run in
the future.

Cancel
~~~~~~
Close the dialogue and ignore any changes made since it was opened.

Reload
~~~~~~
Restore the settings to those pertaining when they were last saved.

Fonts tab
---------
This tab allows a number of font details to be set.

For the data input window, you can change the font face, using the
popup menu button to the right of the font name. To change the font
face, click on the menu icon. A standard font menu will result, from
which the new font is chosen. The text size (in pt) can be adjusted
using the bump icons to the right of the displayed size.

For the graph display, you can choose which font GraphDraw will use
for each of it's styles when labelling and annotating the graph. The
font face can be changed using the font menu, and the text sizes (in
pt) used for the various graph annotations can also be changed, as
described above.

If any data input and graph windows are showing when these options are
changed, the change will be reflected in all the open windows as soon
as the Set or Save buttons are pressed.

Graph tab
---------
This section contains general settings for the graph display.

Default size
~~~~~~~~~~~~
This determines the size of the window used to display a graph.
Current sizes available are

* 640  480
* 800  600
* 1024  768
* 1280  1024
* A4 landscape
* A4 portrait

Background colour
~~~~~~~~~~~~~~~~~
Pressing the menu button to the right of the field showing the colour
used for the graph background will result in a standard colour picker
dialogue being shown. A new colour can be chosen, or the background
set to 'None'. In this case the colour block will show a 'crosshatch'
pattern to indicate 'transparent'.

Lines tab
---------

Graph line widths
~~~~~~~~~~~~~~~~~
In this dialogue it is possible to set the line widths used when
plotting the graph. The widths for the graph axes, the fitted data
line, and the grid lines, can be set independently, using the
appropriate bump icons to the right of the width values.

Use thin lines on vdu
~~~~~~~~~~~~~~~~~~~~~
Thin lines, as understood by the draw module are not supported
directly, since the use of such lines can cause problems with e.g.
high resolution printers, when the 1 pixel wide line effectively
becomes invisible.

When using line widths of a fraction of a pt, the VDU display can
sometimes look a little uneven, particularly with lines at an angle to
the horizontal/vertical. In some cases, lines can completely
disappear. This is where the option Use thin lines on vdu comes in. If
this is selected, then the screen display will use 1 pixel wide lines
for all the lines on the graph, but when saving draw files and
printing will revert to the actual line widths as set in this
dialogue. If this is not set, then GraphDraw will make the assumption
that lines of less than about 0.80 pt should be displayed on screen as
'thin' lines, and thicker lines will be displayed at their configured
thickness. (Why 0.8 pt? There are 72 pt to the inch, and the vdu
display is nominally 90 pixels to the inch. Thus 1 px is about 0.8
pt).

Curved line segments
~~~~~~~~~~~~~~~~~~~~
Since GraphDraw uses a sequence of straight line segments to
approximate a curve, this section is used to set the number of line
segments the program will use when drawing the fitted curves
(polynomial, parabola, spline). The actual number used for vdu
display, draw files, printer, or MultiPlot files can be set
independently. I have found over the years that 100 segments is more
than adequate for the screen display. The more segments, the slower is
the screen update, but the smoother the curve. For higher resolution
printers, more segments are often necessary, although even here,
200-300 segments gives a reasonbly smooth curve for most purposes.

Axes tab
--------

Axis pip type
~~~~~~~~~~~~~
You can set the pips to be inside, outside or straddle the axes. Make
your selection from the popup menu button to the right of the display
field.

Axis pip size
~~~~~~~~~~~~~
The length of the axis pips can be set in os units by means of the
up/down bump arrows.

Boxed graph
~~~~~~~~~~~
This group of settings control whether a bounding box is put around
the graph, and whether grid lines are placed on the graph.

Full box outline
~~~~~~~~~~~~~~~~
When ticked, a box is drawn around the graph. If a box is chosen, then
the other options become available.

With axis pips
~~~~~~~~~~~~~~
When ticked, pips will be drawn on the box outline as well as on the
axes.

X axis grid
~~~~~~~~~~~
When ticked, the x axis pips will be extended across the graph
(vertically) between top and bottom of the box.

Y axis grid
~~~~~~~~~~~
When ticked, the y axis pips will be extended across the graph
(horizontally) between the left and right of the box.

Dashed grid
~~~~~~~~~~~
When ticked, the grid lines (if present) will be drawn dotted. If
unticked, a solid line will be drawn.

Axes through origin
~~~~~~~~~~~~~~~~~~~
The graph axes are normally drawn at the left and bottom of the graph.
If either the x or y data (or both) has both positive and negative
values, then if this is ticked, the graph axis wi be drawn through the
zero point. If unticked then the axes will always be put at
left/bottom even if there are positive and negative values.

See the graph layout options section for a fuller description and
example images showing these settings.

Symbols tab
-----------

This tab allows the type of symbols used on the graph to be defined.
The type, or shape, of the symbol, its size, and its colour can all be
set. The type of symbol (e.g. square, circle) is chosen from the popup
menu. The size (specified in OS units) can be set using the bump
icons. The colour is chosen from a standard colour picker dialogue,
accessed from the popup menu button. The line width applies to symbols
that are not filled shapes, but are drawn as lines, e.g. a cross or
plus symbol. In this case the line width in pts used to draw the
symbol can be set using the bump icons.

Printing tab
------------

Print format
~~~~~~~~~~~~
GraphDraw assumes that the printer uses A4 paper. Print format
controls how GraphDraw arranges the print out. You are offered three
options, accessed via the popup menu button.

A4 landscape
~~~~~~~~~~~~
The printed graph will be formatted always to A4 landscape, whatever
the format of the screen display.

A4 portrait
~~~~~~~~~~~
The printed graph will be formatted always to A4 portrait, whatever
the format of the screen display.

Auto
~~~~
With this setting, GraphDraw will attempt to print the graph in the
format of the actual screen display, printing the graph in landscape
or portrait mode as appropriate, and scaling down to fit the A4 size
if necessary. Smaller sizes (e.g. 640  480) will be printed at a size
determined by the setting Scale up small size graphs (see below).

Show printer margins on graph display
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Most printers are not able to print to the edge of the paper. When the
screen display is set to A4 portrait or landscape, GraphDraw will
attempt to take account of the printer margins, and will not use the
whole of the A4 sized display. If a printer driver is active,
GraphDraw will read the configured printer margins from the printer
driver. If there is no driver active, default values will be used
until !Printers is loaded.

This option, when selected, will show the printer margins on the
display in a mid grey colour. Note that the printer margins are reread
whenever the active printer is changed, so the graph margins will
immediately reflect these changes.

Scale up small size graphs
~~~~~~~~~~~~~~~~~~~~~~~~~~
If this option is unticked, any graph which is smaller than an A4 page
will be printed without any scaling when the print format is set to
Auto. If ticked, then small graphs (e.g. 640  480) will be scaled up
to fit the A4 page when printed.

Other tab
---------

Drag to existing edit window appends data
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
When you drag a GraphDraw data file to the iconbar icon, or double
click on such a file, the data is loaded into a new edit window. This
option controls what happens when a GraphDraw datafile is dragged and
dropped on to an existing edit window. If this option is ticked, then
the new data is added to that already present. If it is unticked, then
the new data is loaded into a new edit window.

Additional note
+++++++++++++++
Note that some of the above settings can be changed for individual
graphs once they are being displayed (see the graph display options
section for a fuller description and example images). Changes made in
the Choices dialogue while one or more graph windows are already
showing will not affect those windows, excluding font style changes.
The graph options are inherited by a data set when that data set is
first created or loaded, thus these changes will only affect new data
sets.

The options that can be changed for individual graphs are
* Everything under the Graph tab
* The graph line widths under the Lines tab
* Everything under the Axes tab
* Everything under the Symbols tab


Data input
==========

Data input and edit
-------------------
Clicking with SELECT on the iconbar icon, or on the New option in the
iconbar menu, will open a new data input window. GraphDraw can have
several of these windows active at any one time. The window is shown
below.

The window as opened will have two columns for the x and y values.
Clicking the mouse in an appropriate cell will set the caret ready for
text input. Tab will move from one cell to the next. Return will do
the same, but in addition, when in the rightmost cell, a new row will
be added when Return is pressed. The result of entering data may be as
shown below.

For general editing of the data most of the expected special
keypresses for navigation, etc., are available. To clear a cell, use
Ctrl-U. To delete a complete row, use Ctrl-Shift-Delete. To insert a
new blank row, use Ctrl-Shift-Insert. The full set of keypresses are
described below.

Loading data
------------
Double clicking a previously saved data file will load it into a new
data input window (assuming the limit of open windows has not been
reached). A previously saved data file may also be dragged to the
iconbar icon, whereupon the data will be loaded into a new input
window.

The behaviour on dragging a file into an already open edit window
depends upon whether you have the option "Drag to edit window appends
data" ticked. This option can be found in Choices... from the iconbar
menu. If the option is ticked (selected) then dragging a data file to
the edit window will add the data to that which is already present.
This allows you to combine two or more sets of data into one dataset.
If the option is not ticked, then the new data will be loaded into a
new input window as above.

Other data formats
~~~~~~~~~~~~~~~~~~
!GraphDraw can load files of comma, TAB, or space separated ASCII
data, as long as the filetype is either text, data, or CSV, and so it
is possible to set up other applications to produce data files of the
correct form. Contact the author if you need any advice on integrating
your own applications with GraphDraw or MultiPlot.


Input window menu
-----------------

The options available are

Save as
~~~~~~~
This leads, via a submenu offering the save either in GraphDraw or CSV
format, to a standard 'save as' dialogue box. Drag the icon to a filer
window, or a suitable application, or enter the path manually to
complete the save.

Once a GraphDraw data file has been saved, then double clicking on it
in a filer window will reload it in to GraphDraw. If the application
has been seen by the filer, or been filer_booted, then GraphDraw will
be launched if not already running. The saved data file can also be
reloaded into GraphDraw by dragging its file icon from a filer window
to the iconbar icon.
 
Plot points, Join points
~~~~~~~~~~~~~~~~~~~~~~~~
Clicking on these options will simply plot a scaled graph of the data
using linear x axis and y axis scales. Following the submenu allows
you to plot the data on semi-log or log-log axes, as well as linear
axes. If the data contains values that are zero or negative, and you
attempt to use a logarithmic axis, then an error message will be
displayed, and only the normal plot will be allowed.

In the case of joined points, each point is joined to the next point
by a straight line. While this is not the usual "scientific" way of
doing things, it can be useful under certain circumstances.
 
Least squares fit
~~~~~~~~~~~~~~~~~
This will carry out a standard linear regression by the least squares
method to calculate the best fit straight line through the data. A
window will open displaying the slope, intercept on y axis,
correlation coefficient and the standard errors of the slope and
intercept.

A submenu is also available which allows the further options of
 * Force line through the origin
 * Semi-log x
 * Semi-log y
 * Log x - log y
In the latter cases, an error will be generated if one or more of the
values to be logged is zero or negative.

When the chosen fit has been completed, a window will open in which is
shown the results of the fitting procedure.

Parabola
~~~~~~~~
This will carry out a least squares fit of the data to the equation of
a parabola
    y = u + vx + wx2
This is a useful technique for fitting data to a simple curve. A
window will open showing the calculated values of the coefficients u,
v and w.

Polynomial
~~~~~~~~~~
Clicking on this item will carry out a standard polynomial fit for
orders 2 to 6, and choose the best fit.
    y = a + bx + cx2
    y = a + bx + cx2 + dx3
    y = a + bx + cx2 + dx3 + ex4
    y = a + bx + cx2 + dx3 + ex4 + fx5
    y = a + bx + cx2 + dx3 + ex4 + fx5 + gx6
It also leads to a submenu which allows you to select a particular
order to force the program to calculate that specific order
polynomial. The option 'All' is also available, which has the same
action as selecting the polynomial option in the root menu, i.e. the
program will try all possible orders (2 to 6) and report the one which
gives the smallest deviation. Some of the higher order options may be
greyed out if there are not enough data points to allow the fit to be
calculated. A scrollable window will open showing the results of the
calculation.

Cubic spline
~~~~~~~~~~~~
This option leads to a writable icon which allows you to specify the
closeness of fit of the cubic spline to the data points.

A value of almost 1.0 (e.g. 0.9999) will try to force the line to pass
through every point. A very small value, e.g. 0.0001, will produce
something approaching a straight line through the data points. Note
that the program will not allow you to enter a value of exactly 0.0 or
1.0, since this would create a "divide by zero error" during the
calculation. Pressing the RETURN key or clicking on the Calculate
button will carry out the calculation and a graph window will open to
display a graph of the cubic spline curve through the data points. For
this plot, it requires the data to be sorted in increasing order of x.
The program automatically sorts the data in ascending order of x
values before carrying out the spline routine (note that it will not
change the order of the data in the data edit window).

Transform X, Transform Y
~~~~~~~~~~~~~~~~~~~~~~~~
A number of common transformations can be carried out on either the x
or the y values of the data independently. Both these options lead to
a sub-menu listing the options available. These include LOG, LN, EXP,
square, square root, reciprocal, and may change with different
versions of this software. The operations are cumulative, but only the
last operation can be undone directly. You can, of course, use the
corresponding inverse function (if available) to undo an operation,
but since these operations are subject to rounding errors, there is no
guarantee that the original data will be exactly reproduced.

Swap x and y
~~~~~~~~~~~~
Note that when you plot "function 1 against function 2", by
convention, function 1 is on the y-axis (vertical) and function 2 is
on the x-axis (horizontal). If you get it wrong, use this option to
interchange the x and y data!

Sort data
~~~~~~~~~
While the Spline routine is the only one to require the data to be
sorted in order, and the spline routine sorts the data automatically
anyway, this option is perhaps superfluous. However, it is sometimes
useful to sort the data (in ascending order on X) before saving for
example.

Keyboard shortcuts and special keys
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Many of the standard key actions are available in the input window.

Left arrow              Move caret left by one character within the
                        current field.
Shift left arrow        Move caret to left of data in current cell,
                        unless already at left, when caret moves to
                        previous cell in row.
Control left arrow or Home  Move caret to end of data in leftmost
                        cell of current row.
Right arrow             Move caret right by one character within the
                        current field.
Shift right arrow       Move caret to right of data in current cell,
                        unless already at right, when caret moves to
                        next cell in row.
Control right arrow or End   Move caret to end of data in rightmost
                        cell of current row.
Down arrow              Move caret down one row.
Up arrow                Move caret up one row.
Page down or Shift down arrow   Move caret down by 10 lines, or to
                        bottom line if less than ten lines from bottom.
Page up or Shift up arrow   Move caret up by 10 lines, or to top line
                        if less than ten lines from top.
Control down arrow      Move caret to bottom line.
Control up arrow        Move caret to top line.
Tab                     Move caret to next field. If at end of row,
                        move to left field of next row.
Shift Tab               Caret moves to previous cell in row.
Return                  Move caret to next field. If at end of row,
                        move to left field of next row. If at end of
                        bottom row, create a new row and move to left
                        field.
Control U               Clear the contents of the current cell.
Backspace               Delete character to left of caret.
Delete                  Delete character to right of caret.
Control shift Delete    Delete the complete row of data and close up
                        the rows.
Control shift Insert    Insert a new blank row above the current caret
                        row.



Results of fitting
==================

Results windows
---------------
When a fit process is chosen from the data input menu, e.g. polynomial
or linear least squares, then a new window will open showing the
results of the fit.

Whichever fit is chosen, the corresponding window will open showing
the calculated parameters for the fitted equation.

All these windows have one thing in common - the buttons at the foot
of the window labelled Graph and Save.

Graph
~~~~~
Clicking on Graph will open a graph window showing the data points and
the line calculated from the fitted equation on suitably scaled axes.
The style of the graph will follow the settings in Choices, but can be
modified easily if necessary. See the Graph and Graph layout options
pages for more information.

Save
~~~~
Clicking on Save will produce a Save as dialogue, from which a text
file can be saved (or loaded into a suitable application). This text
file contains the information produced by the fitting process. In
addition, depending on the actual fit carried out, it may also list
the point data as entered and as calculated from the fit equation,
etc.

An example from a linear fit is shown below (some data points have
been omitted from the full data set).

    Results of best line fit
    ========================
    
                          Slope = 3.54402
            Intercept on y axis = -48.4203
        Correlation coefficient = 0.99944
        Standard error of slope = 0.0395555
    Standard error of intercept = 1.39883
          Sum of errors squared = 18.0605
    
           Error in Y value for each point
           ===============================
    
           X obs       Y obs      Y calc       Error
           ----        -----      ------       -----
    
              16           9     8.28402    0.715977
              19          18     18.9161   -0.916076
              29          53     54.3563    -1.35625
              33          69     68.5323    0.467678
              36          80     79.1644    0.835625
              41          97     96.8845    0.115537
              45         113     111.061     1.93947
              48         123     121.693     1.30741
              52         133     135.869    -2.86866


The Graph window
================

Graphs
------
The data can be plotted in several different formats.


The format of the Graph can be changed at any time, and the layout
fine tuned, using the Graph window menu, described below.

The Graph window menu
---------------------
Layout...
~~~~~~~~~
This opens a dialogue that allows a range of layout options to be
changed. Any changes will apply only to that specific graph (or any
subsequent graphs plotted for that particular dataset), any other
graphs displaying will be unchanged. The range of options available is
described on a separate page.

Annotate...
~~~~~~~~~~~
This opens a dialogue that allows the graph annotation to be added and
edited. The window is shown below.

An overall graph title, and titles for the x and y axis can be added.
The six text effect buttons facilitate the inclusion of effects, such
as italic or bold, and greek or symbol characters. These effect styles
are set up in the choices font section. Text can also be moved up and
down to create superscript and subscript text.

The axis text is normally placed centrally on the appropriate axis.
The option Right justify legends will place the text at the right or
top of the axis. The images below demonstrate these settings.

The four buttons at the foot of the window control the display
action. Display is used to show the text on the graph. Delete will
clear the writable fields and remove the text from the graph. Hide
will temporarily remove the text but not delete it. Hidden text can be
recovered using the Display button. Cancel will simply close the
window without making any change.

Once text has been added for graph annotation, it will be saved with
the data, and will be reloaded when the data is reloaded into
GraphDraw.

Interpolate...
~~~~~~~~~~~~~~
This will present you with a dialogue containing two tabs.
Single values
~~~~~~~~~~~~~
This allows you to enter an X value, and either entering RETURN or
clicking Calculate will calculate the corresponding Y value using the
fitted equation as plotted in the graph. Note that you are only
allowed to interpolate values, you cannot extrapolate beyond the
limits of the data fitted.

Range of values
~~~~~~~~~~~~~~~
This allows you to enter a start value, an end value, and an increment
which will be used in the calculation. No extrapolation is allowed.
Clicking Save or pressing RETURN will result in a Save as dialogue.
The text file, containing the results of the calculation can then be
saved to disc or transferred to a suitable application. The options
Verbose output and Comma separate values control how the output is
formatted, and what is included. Comma separated gives the simplest
output - the x and y values with a comma separator, otherwise the
values are tabbed into fields padded with spaces. Verbose output
includes additional information such as the equation fitted and the
parameters found.

Here is an example of verbose output.
Interpolation of data from parabola fit
---------------------------------------
Equation fitted: Y = a + bx + cx^2
a = -43.6253
b = 3.91748
c = -0.0110847

     X value      Y value
     -------      -------
          20       30.29
          30      63.923
          40      95.338
          50      124.54
          60      151.52
          70      176.28
          80      198.83
Save as
~~~~~~~
This leads to a small submenu offering the options to save as a draw
file or as a multiplot file. The graph can be saved as a drawfile to
disc or directly to another suitable application. Alternatively, the
data for the points and the line (if plotted) can be saved in
MultiPlot format, either to disc or direct into MultiPlot.

Print...
~~~~~~~~
This leads to a small dialogue.

This will show the currently active printer in the window title, and
allows the number of copies to be selected. Clicking Print will print
the Graph, using the print format setting in the print tab of choices.
If there is not an active printer, the Print button will be shaded,
and the window title will include 'no printer'.


The graph window layout options
===============================

Layout options
--------------
When a new data set is created or loaded, it will inherit settings for
any graph attached to it from the global choices settings. The graph
display options window allows these settings to be overridden for an
individual graph.

At the bottom of the graph options window are two buttons.

Apply
~~~~~
This will store and use the new settings only for the graph from which
the menu was opened. It will not change any other graph that is
currently showing, or any other graph attached to a new or different
data set. If the changes are to affect all subsequently plotted
graphs, then use the application wide Choices dialogue.

Cancel
~~~~~~
Close the dialogue and ignore any changes made since it was opened.

The options that can be changed are grouped under tabs in the window.

The groups of settings are as follows.
 * Graph
 * Lines
 * Axes
 * Symbols
These are described in detail below.

Graph tab
---------

This section contains settings for the graph display, in general.

Graph size
~~~~~~~~~~
This determines the size of the window used to display a graph.
Current sizes available are

 * 640  480
 * 800  600
 * 1024  768
 * 1280  1024
 * A4 landscape
 * A4 portrait

Background colour
~~~~~~~~~~~~~~~~~
Pressing the menu button to the right of the field showing the colour
used for the graph background will result in a standard colour picker
dialogue being shown. A new colour can be chosen, or the background
set to 'None'. In this case the colour block will show a 'crosshatch'
pattern to indicate 'transparent'. 

Lines tab
---------

Graph line widths
~~~~~~~~~~~~~~~~~
In this section it is possible to set the line widths used when
plotting the graph. The widths for the graph axes, the fitted data
line, and the grid lines, can be set independently, using the
appropriate bump icons to the right of the width values.

Use thin lines on vdu
~~~~~~~~~~~~~~~~~~~~~
Thin lines, as understood by the draw module are not supported
directly, since the use of such lines can cause problems with e.g.
high resolution printers, when the 1 pixel wide line effectively
becomes invisible.

When using line widths of a fraction of a pt, the VDU display can
sometimes look a little uneven, particularly with lines at an angle to
the horizontal/vertical. In some cases, lines can completely
disappear. This is where the option Use thin lines on vdu comes in. If
this is selected, then the screen display will use 1 pixel wide lines
for all the lines on the graph, but when saving draw files and
printing will revert to the actual line widths as set in this
dialogue. If this is not set, then GraphDraw will make the assumption
that lines of less than about 0.80 pt should be displayed on screen as
'thin' lines, and thicker lines will be displayed at their configured
thickness. (Why 0.8 pt? There are 72 pt to the inch, and the vdu
display is nominally 90 pixels to the inch. Thus 1 px is about 0.8
pt).

Axes tab
--------

Axis pip type
~~~~~~~~~~~~~
You can set the pips to be inside, outside or straddle the axes. Make
your selection from the popup menu button to the right of the display
field.

Axis pip size
~~~~~~~~~~~~~
The length of the axis pips can be set in os units by means of the
up/down bump arrows. The range allowed is 10 - 40 os units. The images
below show the two extremes of size.

Boxed graph
~~~~~~~~~~~
This group of settings control whether a bounding box is put around
the graph, and whether grid lines are placed on the graph.

Full box outline
~~~~~~~~~~~~~~~~
When ticked, a box is drawn around the graph. If a box is chosen, then
the other options become available.

With axis pips
~~~~~~~~~~~~~~
Pips are always drawn on the axes themselves. When ticked, pips will
be drawn on the box outline as well as on the axes.

X axis grid
~~~~~~~~~~~
When ticked, the x axis pips will be extended across the graph
(vertically) between top and bottom of the box.

Y axis grid
~~~~~~~~~~~
When ticked, the y axis pips will be extended across the graph
(horizontally) between the left and right of the box.

Dashed grid
~~~~~~~~~~~
When ticked, the grid lines (if present) will be drawn dotted. If
unticked, a solid line will be drawn.

Axes through origin
~~~~~~~~~~~~~~~~~~~
The graph axes are normally drawn at the left and bottom of the graph.
If either the x or y data (or both) has both positive and negative
values, then if this is ticked, the graph axis will be drawn through
the zero point. If unticked then the axes will always be put at
left/bottom even if there are positive and negative values.

Offset x-axis from origin  Offset y-axis from origin
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This allows the position of the axis to be offset from its default
position. It can only be used when the bottom left of the graph is the
point (0,0). The images below show this option off and on.

Offset x-axis labels   Offset y-axis labels
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
It is sometimes the case that, when full boxed axes is set, and the
data spans zero, the box or axes pass through the axis text, giving an
untidy look. This option moves the axis text to the side of the
box/axis and can improve matters. The images below show the option off
and on. 

Symbols tab
-----------

This tab allows the type of symbols used on the graph to be defined.
The type, or shape, of the symbol, its size, and its colour can all be
set. The type of symbol (e.g. square, circle) is chosen from the popup
menu. The size (specified in OS units) can be set using the bump
icons. The colour is chosen from a standard colour picker dialogue,
accessed from the popup menu button. The line width applies to symbols
that are not filled shapes, but are drawn as lines, e.g. a cross or
plus symbol. In this case the line width in pts used to draw the
symbol can be set using the bump icons.



Contact
=======

All communication about GraphDraw should be directed to Chris Johnson
(Email:chris@chris-johnson.org.uk). Suggestions for new features are
always welcome.

Web sites
---------
Chris Johnson's web site is at
http://www.chris-johnson.org.uk/index.html, with his RISC OS software
at http://www.chris-johnson.org.uk/software/index.html.


Licence
=======

Copyright (c) 2014, Chris Johnson
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:

 * Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.

 * Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.

 * Neither the name of the copyright holder nor the names of their
   contributors may be used to endorse or promote products derived
   from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.













