From: Jason L. Tibbitts III Organization: Blob Shop Programmers Subject: REVIEW: Multiplot XLNd (beta) Followup-To: comp.sys.amiga.applications Keywords: application, scientific, data processing Reply-To: Markus Buchhorn Followup-To: comp.sys.amiga.applications 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 ===============================================================================