[comp.sys.amiga.reviews] REVIEW: Multiplot XLNd

honp9@menudo.uh.edu (Jason L. Tibbitts III) (02/07/91)

Multiplot XLNd (beta) is a quick-look plotting package, capable of
producing publication quality plots. It's intuitive enough to just
run with little instruction, and powerful enough for those wanting
extra features. It's one I recommend to my co-workers around the
observatory here. In short, an excellent product, and even better: PD

                         -------

I should add that I posted this review to the Amiga-scientific mailing 
list for discussion, and with the exception of the author, had no
comments either way. Some of the comments made by Alan are included
near the end [I don't think I misquoted you too much, Alan :-)].
Furthermore - this is still a beta release, so no conclusions can be drawn
regarding the final product. Note that the version has come a long way though
(since at least FF#231), and keeps getting better, with more features. 

Multiplot XLN needs to be distinguished from Multiplot which is Tim 
Mooney's program which has evolved along diferent lines.

----------------------------------------------------------------------------

Review of: Multiplot XLNd beta
Authors  : Alan Baxter, Tim Mooney
Status   : Freely distributable (subject to constraints - see documentation)
Requires : WB 1.3 or higher (yes, 2.0 is possible, according to the Docs)
           1/2M RAM.

Runs from Hard Disk (quite well!), and runs from CLI or WorkBench. Data files
can be saved having Multiplot as the tool for their icon.

A loong time ago I tried a plotting package called Multiplot, I can't remember
the version number. I didn't like it. It was chunky, clunky and uncomfortable
to use. Recently however I saw an update notice with a whole bunch of
fixes and new features. Being the sporting type, I decided to give it another
go :-). I was more than pleasantly surprised. This is now a useful package,
i.e. one I consider using in my work.

MP is an x-y plotting package that reads in plain text files, containing
columns of numbers representing your data + errors. It can also contain some
keywords that tell MP how to plot the data, but the main use I feel is to just
read in the data, then interactively clean up the presentation before printing
it.

It runs on an interlaced screen, with number of bitplanes and overscan 
optional settings. I don't have a flicker fixer, so interlace can be 
irritating - but the default colours aren't too bad, so I can live with it
for the time being. Anyway, the colours are adjustable from within the program.

Having loaded your data file, MP defaults to a 'draw each point as a box and
connect the points' setting. Now is where the elegance of MP becomes evident.
Click once on any point and it selects the data-set that point belongs to,
highlighting it. You can have an unlimited number of distinct data-sets in MP.
If you double-click on a data-set you get a requestor, which allows you to
adjust everything about the way it is represented, point-type, size-of-points,
line-type, colour, how the data is presented (only line,only points, both
line/points, step, impulse) or to get rid of/hide a data-set away from the
plot. Every time you finish with that requester, the plot is redrawn. Even my
plots with >1200 points are redrawn very quickly. 

If you double click alongside the x or y axes (and you're not near one of 
the labels) you get an axis requestor. This allows you to change the length
of the axis (min/max values) if the default is no good, invert the axes, 
change to log or linear scales (so lin/lin,log/lin,lin/log,log/log plots are
all possible) and to lock the axes - which basically stops it changing the axes
if you make further adjustments, like zooms etc. More on that later. 

You can select an individual point/set of points, as opposed to the whole
data-set, and edit the points individually ('Hmmm, that 6 sigma point would
look better hidden over here...':-) )

Double-clicking above the plot gives you a requestor for the plot title, 
written in a fairly large font. This title is immovable, unlike almost
any other piece of text on the plot. You can pick up axes labels, 
numeric labels, and move them or edit them. You can also add a label
anywhere on the page by selecting a menu-item.

This leads me to the menu-options. The easiest way to discuss these is
to just read them off and briefly list/discuss the more interesting ones.
Here is where the real power of MP is hidden, as opposed to the elegance :-)

PROJECT: 
Save As: This allows you to save the plot in any of the following formats: 
         ILBM, HPGL, Draw, mCAD, IntroCAD, PostScript, EPSF and a raw data 
         file. I only use the PS options so I can't comment on the others.
         The PS is quite good, and happily read into Andrew Aylward's POST
         PostScript interpreter.

Print Preview: for those of you with printers (unlike me :-( )

Print Setup: A nice requester pops up, allowing you to change from
             Landscape to Portrait mode, to adjust the overall scale of the
             plot in %ile units. There's also a graphic representation
             of how much of the page is covered by the plot, which adjusts
             as you change the scaling/orientation. You can move this around
             to determine where on the page the plot will appear. Very Nice !

EDIT:
This interfaces MP with the clipboard. Cut/Paste/Undelete/Copy/Delete are
all available.

Add Text:  What it says. Your string will appear somewhere on the page, and
           you can then pick it up and put it wherever you want it. You can
           do this at any stage.

ACTIONS:

Mouse Action: Select/Zoom/Slide
              The Mouse can be used in 3 ways. In select mode you can do
              all the stuff above. In Zoom, you can drag-select a region of
              the plot, which is then plotted with the same characteristics
              as the original plot. The axes adjust - unless you've locked
              them. The Slide mode = Pan mode. You can slide the plot around
              the plot box. The axes slide in this case -unless you've locked
              them.

Axes locks can also be set via the menu here.

OPTIONS:
Crosshairs: Turns the cursor, in whatever action-mode, into a crosshair.
Grid      : Toggles: Draw a grid on the plot.
Axes      : Can be just x/y or complete box, or none. (One could do diagrams
             with this mode)
Sign.fig. : Let's you limit the number of sign. figures used on numbers on
             axes and formulae.
Errorbars : Toggles error bar drawing on and off. Note that error bars can
            now be asymmetric with this new release ! At this stage Y-dirn
            error-bars only, but I believe Errors in X will be supported
            in an upcoming version.

FUNCTIONS:
Sort Data Set : Sorts the data-set by x values.
Smooth        : Smooths the data by filtering or by interpolation
Linear Fit    : Fits a straight line in current coord system, i.e. takes
                lin/log axes into account to fit exponentials or whatever.
Polynomial Fit: As above, but to higher orders.

The equation of the fit is written into the right hand margin as a legend,
along with a section of line representing it there. Both smoothing and fitting
generate a new data set with points, so you can edit them the same way that you
can edit your own data. You could smooth the data first, then fit a line to the
equispaced points of the smoothed data-set. 


So, that covers in a very quick fashion, most of the major features of MP.
It is very intuitive and quick to learn. The documentation is quite good,
although once you get to know MP, I found that it could be organised a bit
better.

---------------------------------------------------------------------------
What follows is a list of things I would like to see/see fixed, I'm just
intrigued by, or I can't see what I'm doing wrong. No particular order, just
the order I came across them. I include here (in an edited form) some of
Alan's comments via the ami-sci mailing list and also personal E-mail.

- Line thickness: You can set point size, but not line thickness.
[Alan: Not too dificult to implement. Never been previously requested. Can be 
added if others want.]

- Line types: We need more ! Perhaps user definable ones ?
[Alan: Restrained here by those available in HPGL.]

- Adding a legend: This wasn't documented in the manual, but Alan pointed
  me in the right direction. Select a data-set in the usual-way, then
  select 'Add-Text' from the Menu.

- Histograms: yet to come, according to the docs. The sooner the better !
[Alan: Okay, okay!!]

- The number of major tics (axis labels) is out by one in the requester
  I discussed this with Alan somewhat, and it appears to be a choice-of-
  -nomenclature problem only. He'll look into it.

- Freehand drawing of straight lines, arrows and similar. This is seen
  quite often on scientific plots, to allow points/lines to be clearly
  labelled and also for baselines/division lines.
[Alan: I've been thinking about that sort of thing, also freehand addition of
spline curves.]
 
- If eqn of fit is too long for the legend, it never tells you the eqn..
[Alan: adjust the number of sign.figures with the menu-option]

- If there's only one data-set, why prompt 'no set selected' ? Should default.
[Alan: To keep the user-interface consistant, regardless of number of 
  data-sets.] Ok - I can agree with that.

- The Aspect ratio of the plot changes as you add titles/labels/legends.
  If you start out with a square plot, it mightn't be square at print-time.
  I'd rather have this setable by the user - something like a rubber-box ?

[Alan: The way it is now, the plot fills the maximum number of pixels available.
It has to shrink to include other things like axis labels, etc. Obviously
the code is virtually in place for "rubber box" bounding. Not there because
noone's asked for it before. Please note that the "maximum pixel" concept
deliberately differs from the Mac "tiny poky picky in the middle of the 
screen" concept.] I agree with that - the plot fills as much of the screen as
is reasonably possible. Very nice to look at - no neck-strain :-)

- The title is immovable - sometimes it is useful to have it move.
[Alan: On its way...]

- The sideways y-label problem. Alan has had this problem for a long time.
  The y-axis label has to be written with horizontal text, in a single
  column of characters. If anyone knows how to rotate Amiga fonts on 
  screen, please let him know .... On the printout they come out Ok.

- Font additions: subscripts/superscripts and Greek characters are needed.
[Alan: Yes. This is getting to be a problem. I will probably have to create
a special Multiplot font for the Fonts: directory which coincides with
the HPGL output, and maintains font changes in parallel with the two
PLT fonts.]

- 0.0 comes out as 1e-17 or similar on a fairly regular basis. Due to
  personal aesthetics, this can't always be fixed by using significant 
  figures. I've discussed this with Alan, and at this stage appears to be 
  a pain to fix. For now, once you've finished all the scaling, just edit 
  the numeric label (trivial) and lock the axes. May be fixed in an upcoming 
  version...

- Reading new data sets in from a file - At this stage, the only way I can
  see that multiple data sets can be plotted is to have them all in one file
  (with flags separating them) or by shuffling them onto the clipboard and
  back again. It'd be nicer if the file requester had a 'data-set number'
  option..
[Alan: Fair enough.]

- It is sometimes useful to have an 'upper limit' type of error bar, i.e.
  a dot with an arrow. This was a new one to Alan, and he said he'd look
  into it - but not too soon :-) (Other features come first)

- If thou requests the opening of a new file by accident, thou cannotst
  cancel this - start again from the beginning. Alan doesn't like (read: hates)
  the concept of 'Did You Really Want Me To Do That?' requesters, but in this
  case he may add one.

- I've found at least once that the y axis labels on a shrunken plot were
  geometrically displaced from where they should be..
[Alan: found and fixed]

- If you gratuitously lock the axes before putting a label on them, the
  axes occassionally misbehave (text in the middle of the numbers, the labels
  going past the end of the axes)

[Alan: Hmm... If you take a chain saw and wave it through your leg... 
Powerful features can be misused. I considered but decided against a 
requester reminding the user of the locks every time the plot was redrawn.]

------------------------------------------------------------------------------

Some of the above are minor nuisances only, some are already fixed or will be
in an upcoming version. At this stage, I'd rate MP as 75% useful for my
purposes. With the above changed/fixed I'd go up to 85%. (mind you - 
90% = essentially perfect in my book, 100% I've never seen) 

I could suggest further features (for future versions?) . These include
(i) 3D plots
(ii) Histograms
(iii) Statistical analysis
(iv) Doing multiple plots at once and arranging them on a page

however, these are fairly major (:-) ) This is something I'd expect to 
see in a commercial version. 

[Alan: (i) No way, (ii) Yes, soon, (iii) may provide a separate utility for
this, and (iv)... well, Multiplot XLN(future) will allow for multiple pages of
plots in memory, if not necessarily on display.] I was thinking more of the
presentation of multiple plots on a page, via the Print Setup. Alan is
thinking about this, but first reaction is 'too hard... unless you pay me :-)'

As you can see from the above, the program has many features for the
power-user, and is intuitive enough for beginners. Alan is a responsive
author, quite happy to discuss features/problems.

This is an excellent plotting package, in terms of intuitiveness and what
it can do. Of the packages I've seen, this is the one giving most bang/effort.
Other packages require writing scripts or programmes to produce plots. They
may be more powerful in the end, but for quick-look problems, and quite
respectable output (publication quality) it would be hard to go past
Multiplot. Congrats Alan and Tim.


===============================================================================
 Markus Buchhorn                                           ///  | This space
 Mt Stromlo and Siding Spring Observatories, Canberra     ///   | 
 PMB Weston Ck. P.O. A.C.T. 2611, Australia           \\\///    | intentionally
 markus@mso.anu.edu.au  -or-  markus@merlin.anu.edu.au \XX/     | left blank
-------------------------------------------------------------------------------
 Phone donations: AUS-6-249-0283 Flames: alt.dev.null  Disclaimer: standard
===============================================================================


-- 
Jason L. Tibbitts III  | Moderator: comp.sys.amiga.reviews
"Blob Shop Programmers:| Send submissions to HONP9@menudo.uh.edu
 Because We're Bored!" | Check comp.sys.amiga.reviews for submissions
Disclaimer: Opinions...| guide, disclaimers, etc.               Fnord.