- My first encounter with computer graphics for data plotting occurred at
MSSL, and was originally limited to the use of a graphic library on the
RAL IBM 360 mainframe, whose result could be played back on a local Tektronix
4010 terminal (and also hardcopied on thermal paper) : plots for publication
had to be handed over to the drawing office to be re-made
- Later at MSSL Paul Lamb et al. developed a very nice library for the PDP 11/70
which featured support to multiple devices in a transparent way, and many other
nice features (like the distinction between world and device coordinates)
which inspired my own further programming. The best device was
a Versatec printer (see the plots in
paper J14 entry 21)
<joke>Oh no Thierry,
this has nothing to do with the course of alpine paleography we used to
organize for you in the Exosat DCR !</joke>
- The next epoch was that of the first IUE system,
which included some adhoc graphics on our IBM mainframe. There were two
separate library, the TCS one for the Tektronix 4010 and 4015 terminal, and
a CALCOMP-style one for the Houston plotter.
Both devices had funny peculiarities. The 4015 had a 4096x4096 pixel screen
which is still unsurpassed (and a long queue of users waiting to use it).
The Houston plotter used a continuous roll of paper, and cutting it to take
away one's plot was quite difficult because of the need to preserve tension
to the paper.
- Besides a short time at Huygens Lab. Leiden where I used a CALCOMP-style
library on a Gould printer (aargh !) and a SIGMA ARGS TV, this was essentialy
an HP era. We had an HP-1000 with HP terminals, a Ramtek 9000 series and later an
HP 7550 plotter (and later an early HP Laserjet) at IFCTR.
We had several HP-1000 with HP terminals, a couple of Ramtek 9000 TVs, a
dreadful Gould printer (later supplemented by a Versatec) and an HP 7221 plotter.
The Gould used a nasty chemical paper, and was terrible to load. Also it used
a "rasterizing" library devised for the Automatic Analysis which operated in
a stripchart recorder way. It was very light in memory usage, but you had to
"think" your plot in 0.5 mm high strips ! Luckily I never had to use it.
- The Ramtek had originally its own library, but I put my hands on it because I
wanted to use it for both image and vector graphics and to preview plots to
be later sent to be plotter (the quality of the thermal hardcopies obtainable
from the Ramtek was very poor, while the Polaroid photographs were expensive
and tricky to obtain).
- HP terminals were rather nice. They had a double memory so that one could show
graphics and text on the same screen and turn one or the other off. They had
also an hardcopy thermal printer attached which could be commanded programmatically.
All graphical 26xx terminals had a common way of programming via escape sequences
(some of them like the 2623 had also colour support).
The 2648 had also an autoplot mode in firmware. If you had some tabular text
on the screen you could plot it just pressing some keys (or using the corresponding
escape sequences) even if the terminal was disconnected from the computer !
Autoplot was used for some dedicated fast and self-contained programs.
- HP plotters used HP-GL and were also rather nice to program. With good pens
one could produce at last nice looking plots. Of course doing image plots by
filling was too time consuming, and so was gray scaling. Some limited gray
scaling plots could ve done on the Laserjet printer (using HP PCL).
- With the exception of some adhoc, device specific programs, most graphics
programs at ESOC (and later at IFCTR) used a CALCOMP-type library derived from
a NATO Saclant one, which hide device-dependent handlers (written in Fortran
or assembler) under a common high level layer. I later put my hand on such
library to customize it for the devices we had in Milan.
- Coming now to high level plotting programs, this was the PABLO
era. PABLO, described in report R8 (entry
92), was developed with my support
by Paolo Giommi (hence the name, "hispanized" to resemble a well known painter
which seemed fit for a plotting program) at ESOC capitalizing on a
former CfA program of his called MOSTRO. The report describes the IFCTR version
of the program.
PABLO allowed to plot data from columns in a tabular ASCII data file (with or
without errors) in Cartesian or Aitoff plots, one column versus another, or
as histogram of a single column, or a predefined analytic function, or a text
One could put many plots in a frame, and many frames in a "page".
The features of the (first) plot were controlled editing a rather long
parameter file and selecting the plotter device and the type of plot.
One then entered a loop by which one could do further types of plot "editing"
the in-memory copy of the parameter file one line at a time (by line number).
As the above might become quite awkward, one could store all the commands
normally given to PABLO on "standard input" into a command file, and "play back"
PABLO from the command file.
There was even a library to write PABLO command file programmatically.
From the programming point of view PABLO was quite a feature, being a 7-segment
segmented programs (on HP 1000s big programs had to be segmented to fit in
the rather small 64k memory partitions).
PABLO had also a number of associated utility programs to manipulate PABLO
- image contouring was not integrated within PABLO, but dealt with by
a separate program MCONT in the Exosat LE Interactive
Analysis (which however shared the graphic library calls and frame layout
- The Labeller, described in reports R5 and R10 (entry
was a program I devised to overcome a limitation of PABLO for publication
quality plots : the CALCOMP-style library used not nice looking vector-drawn
characters for text. The Labeller was used to annotate a posteriori a plot
produced on the HP 7550 plotter, using the native HP-GL fonts which are quite
nicer. Of course provided one did not remove the paper from the plotter.
The program was driven by a command file, composed by a set of human readable
commands used to set up the page, the axes, to draw tics and annotation in
a variety of scales (lin, log) , styles and format (I, F, E formats, also exponential
or log formats or hh:mm:ss), and to draw text.
- The Plot Editor, described in report R11 (entry
was putting everything together. As it was rather awkward to write the correct
Labeller command file matching a PABLO or MCONT plot, I wrote a program to do it.
The Plot Editor allowed to create, edit, or "execute" a "plot description file".
A plot (one page) is defined as consisting of one or more frames and zero
or more text strings. The program (using the form editing facility of
the HP terminals) called up a screenful to add or edit a description for each
frame or string. A frame may imply a particular kind of PABLO or MCONT plot
from a particular data file.
Plot files were saved in a dedicated binary format.
For frames and strings one could specify position in absolute units, type
of plot and lots of other characteristics.
Frames or strings could be added, edited, deleted, resized or global-edited
(which meant that the same edit could be applied automatically to more than
one object). New objects added could be modelled according to a pre-existing
one. Objects could be deleted and undeleted (before the termination of the
current editing session) or also made inactive (remains in the file but is
not used for plotting).
Axes were a further type of objects, since a frame could have different
axes associated to it (for instance not just an x bottom and a y left axis,
but a different x top or y right axis), edited separately.
At the end the Plot Editor could generate command files for PABLO, MCONT and
the Labeller, optionally running such programs in a predefined order, and of
course saving the plot description file.
- The post-PABLO era is an era of better looking plots (mainly due to the
existence of laser printer and Postscript files) but of lesser integration
of the plotting programs. I still miss such a complete plotting environment
as PABLO was.
- I did not make almost any graphics on the VAX (we missed altogether the
MIDAS with Gould-DeAnza era on VAXes) and gained no experience in plotting
on VT terminals.
I only gained some limited experience in playing plots produced by IRAF or
MIDAS on various kind of devices (mainly printers from the LN03 to various
kinds of Postscript printers).
- I personally also missed altogether both the (super)Mongo
or QDP plotting programs. I did some limited use of
the (CALCOMP-style) PGPLOT
library, but did not particularly like
its 4.9 version (particularly the way it used to "keep up" an X window
and discouraged its usage for SAX.
What I currently use for publication quality plots is
(Interactive Data Language). The plots may come
out nice, but I do not quite like the fact that a plot is a program
(an IDL script) and not a file (as with the Plot Editor). Also IDL
is geared to stacks of equal plots in the page, and it's not handy to produce
insets or multiple frames of different dimensions, nor to mix image gray scales
or contours with other plots.. One can do it, but feels like a workaround.
- Otherwise the main stream of my graphics software activities has been in the
definition and coding of the graphic libraries for the X-ray Analysis System
XAS. The design document is
represented by report S38 (entry
133 : see also the
relevant pages in the XAS user manual and
relevant pages in the XAS programmer manual.
The basic idea (simplified with respect to Marco Morini's idea in the "dream book"
i.e. report S22; entry
94) is: no longer support to many
devices, but just to X window graphics (interactive) or Postscript (plots),
definition of a set of basic primitives, deferring of all "device" specific
features to a single server program by mean of a client-server approach.
The axis handling and annotation routines in the higher level XAS graphic
library are derived from previous work (mainly the Labeller).
- In this era also I gained experience in direct Postscript programming (which
I sometimes use for various applications).
- I have no particular "live" plans for graphics in the future except perhaps
completing the coding of missing XAS server and client opcodes, learning some
Java graphics (and perhaps add a Java XAS server), or even reviving something
like the Plot Editor.