(Note: I can't take credit for this. It was forwarded to me from a
friend at JPL, where it has apparently bounced around for a week or two.
The original author said to go ahead and post it to the net, with the
normal disclaimers about accuracy, etc. It does a pretty good job of
summarizing the various possibilities, and at the end there is a
postscript file which apparently charts the various packages against
each other (I haven't looked at it yet)). With all this in mind,
here is the summary of graphics packages. I apologize for taking up so
much bandwidth with this, but since people have expressed an interest,
here it is...)
----- Begin Included Message -----
Newsgroups: jpl.mail.sun-managers
From: don@mars.dgrc.doc.ca (Donald McLachlan)
Subject: SUMMARY: scientific plotiing tools
Organization: Internet
Date: Fri, 1 May 1992 16:42:32 GMT
First, my original request.
----- Begin Included Message -----
We are looking for a scientific plotting tool/package which can be
used stand-alone, or be called from within a C or Fortran program.
It would be nice to use an emerging standard, or a current (de-facto?)
standard.
Please let me know what you use. Do you like it? Good/bad points, etc.
As usual, I will post a summary.
Thanks, Don
----- End Included Message -----
Well, as I expected the responses look a bit like a scatter-graph. Here is
a highly compressed review of the products recommended, and the number of
people who recommended each
Package Replies
Gnuplot 2 - good interactive PD software.
- Supports Postscript
- no programatic interface, but can open a
pipe to it and do it that way. (prog | gnuplot)
IMSL 2 - interactive; C/Fortran callable, free trial avail.
PVWave 1
Figaro from Liant corp 2 - C and Fortran callable
- Phigs based
- Figaro+ is long winded but complete
- FigGraph is a higher level interface.
- sort of like an updated DISSPLA.
Uniras 1
Mongo 1 - PD
- Well written
- easy to use plotting package.
Super Mongo (smongo) 1 - Improved version of Mongo
- better IO device support
- ~$250
{ both Mongo packages have interactive and funtion interfaces and are
quick and easy to learn}
GMT 1 - PD
- clean C code
- lots of documentation
- supports postscript output
xvgr - OpenLook/Sun 2 - PD, described as powerful
xmgr - Motif/HP/DEC/RS6000
NCAR Autograph 1
ACE/gr 1 - PD
- good XY plotting tool for X
- good funtions/options, many std output formats
TempleGraph 1 - good for quick looks and some data manipulation.
ATAPLOT 1 - Very established product developed on HP
- should run on most reasonable UNIX platforms now.
There was one very special reply from hal@mpl.UCSD.EDU, who provided his
results of 4 months of work evaluating many plotting packages. I am includeing
his whole reply for the common benefit on the net. His only request was
"Feel free to post this to the net with a disclaimer about
accuracy (I sure don't guarantee it but I think I have most
of it right)."
----- Begin Included Message -----
>From hal@mpl.UCSD.EDU Tue Apr 28 13:17:57 1992
Return-Path: <hal@mpl.UCSD.EDU>
Received: from ucsd.edu by mars.dgrc.doc.ca (4.1/SMI-4.1)
id AA03011; Tue, 28 Apr 92 13:17:44 EDT
Received: from lambis.ucsd.edu by ucsd.edu; id AA06541
sendmail 5.64/UCSD-2.2-sun via SMTP
Tue, 28 Apr 92 10:23:08 -0700 for don@mars.dgrc.doc.ca
Received: by lambis.UCSD.EDU (4.1/UCSDPSEUDO.3-MPL.1)
id AA05099 for don@mars.dgrc.doc.ca; Tue, 28 Apr 92 10:23:04 PDT
Date: Tue, 28 Apr 92 10:23:04 PDT
From: hal@mpl.UCSD.EDU (Hal Skelly)
Message-Id: <9204281723.AA05099@lambis.UCSD.EDU>
To: don@mars.dgrc.doc.ca
Subject: Re: plotting packages
Content-Type: X-sun-attachment
Status: RO
----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Content-Lines: 14
Dear Don,
I've just spent (and continue to spend) the last 4 months trying out plotting
software for the Marine Physical Lab, Scripps Institution of Oceanography.
I'm enclosing a text summary and graphic table of comparisons. Most of our
data is in a local binary file format know as (suprisingly) SIO data. Most of
our users are concerned with an easy interface between that format and any
package. I have noted however the input options available. Virtually all of
them read raw ascii input. Feel free to post this to the net with a disclaimer
about accuracy (I sure don't guarantee it but I think I have most of it right).
Hal Skelly, System Administrator for the Marine Physical Lab
Scripps Institution of Oceanography, Univ. of Calif. San Diego
Internet: hal@mpl.ucsd.edu, voice (619) 534-5954
----------
X-Sun-Data-Type: postscript-file
X-Sun-Data-Description: postscript-file
X-Sun-Data-Name: graphtable.ps
X-Sun-Content-Lines: 1392
%!
%%BoundingBox: (atend)
%%Pages: (atend)
%%DocumentFonts: (atend)
%%EndComments
%
% FrameMaker PostScript Prolog 3.0, for use with FrameMaker 3.0
% Copyright (c) 1986,87,89,90,91 by Frame Technology Corporation.
% All rights reserved.
%
% Known Problems:
% Due to bugs in Transcript, the 'PS-Adobe-' is omitted from line 1
/FMversion (3.0) def
% Set up Color vs. Black-and-White
/FMPrintInColor systemdict /colorimage known
systemdict /currentcolortransfer known or def
% Uncomment this line to force b&w on color printer
% /FMPrintInColor false def
/FrameDict 195 dict def
systemdict /errordict known not {/errordict 10 dict def
errordict /rangecheck {stop} put} if
% The readline in 23.0 doesn't recognize cr's as nl's on AppleTalk
FrameDict /tmprangecheck errordict /rangecheck get put
errordict /rangecheck {FrameDict /bug true put} put
FrameDict /bug false put
mark
% Some PS machines read past the CR, so keep the following 3 lines together!
currentfile 5 string readline
00
0000000000
cleartomark
errordict /rangecheck FrameDict /tmprangecheck get put
FrameDict /bug get {
/readline {
/gstring exch def
/gfile exch def
/gindex 0 def
{
gfile read pop
dup 10 eq {exit} if
dup 13 eq {exit} if
gstring exch gindex exch put
/gindex gindex 1 add def
} loop
pop
gstring 0 gindex getinterval true
} def
} if
/FMVERSION {
FMversion ne {
/Times-Roman findfont 18 scalefont setfont
100 100 moveto
(FrameMaker version does not match postscript_prolog!)
dup =
show showpage
} if
} def
/FMLOCAL {
FrameDict begin
0 def
end
} def
/gstring FMLOCAL
/gfile FMLOCAL
/gindex FMLOCAL
/orgxfer FMLOCAL
/orgproc FMLOCAL
/organgle FMLOCAL
/orgfreq FMLOCAL
/yscale FMLOCAL
/xscale FMLOCAL
/manualfeed FMLOCAL
/paperheight FMLOCAL
/paperwidth FMLOCAL
/FMDOCUMENT {
array /FMfonts exch def
/#copies exch def
FrameDict begin
0 ne dup {setmanualfeed} if
/manualfeed exch def
/paperheight exch def
/paperwidth exch def
/yscale exch def
/xscale exch def
currenttransfer cvlit /orgxfer exch def
currentscreen cvlit /orgproc exch def
/organgle exch def /orgfreq exch def
setpapername
manualfeed {true} {papersize} ifelse
{manualpapersize} {false} ifelse
{desperatepapersize} if
end
} def
/pagesave FMLOCAL
/orgmatrix FMLOCAL
/landscape FMLOCAL
/FMBEGINPAGE {
FrameDict begin
/pagesave save def
3.86 setmiterlimit
/landscape exch 0 ne def
landscape {
90 rotate 0 exch neg translate pop
}
{pop pop}
ifelse
xscale yscale scale
/orgmatrix matrix def
gsave
} def
/FMENDPAGE {
grestore
pagesave restore
end
showpage
} def
/FMFONTDEFINE {
FrameDict begin
findfont
ReEncode
1 index exch
definefont
FMfonts 3 1 roll
put
end
} def
/FMFILLS {
FrameDict begin
array /fillvals exch def
end
} def
/FMFILL {
FrameDict begin
fillvals 3 1 roll put
end
} def
/FMNORMALIZEGRAPHICS {
newpath
0.0 0.0 moveto
1 setlinewidth
0 setlinecap
0 0 0 sethsbcolor
0 setgray
} bind def
/fx FMLOCAL
/fy FMLOCAL
/fh FMLOCAL
/fw FMLOCAL
/llx FMLOCAL
/lly FMLOCAL
/urx FMLOCAL
/ury FMLOCAL
/FMBEGINEPSF {
end
/FMEPSF save def
/showpage {} def
FMNORMALIZEGRAPHICS
[/fy /fx /fh /fw /ury /urx /lly /llx] {exch def} forall
fx fy translate
rotate
fw urx llx sub div fh ury lly sub div scale
llx neg lly neg translate
} bind def
/FMENDEPSF {
FMEPSF restore
FrameDict begin
} bind def
FrameDict begin
/setmanualfeed {
%%BeginFeature *ManualFeed True
statusdict /manualfeed true put
%%EndFeature
} def
/max {2 copy lt {exch} if pop} bind def
/min {2 copy gt {exch} if pop} bind def
/inch {72 mul} def
/pagedimen {
paperheight sub abs 16 lt exch
paperwidth sub abs 16 lt and
{/papername exch def} {pop} ifelse
} def
/papersizedict FMLOCAL
/setpapername {
/papersizedict 14 dict def
papersizedict begin
/papername /unknown def
/Letter 8.5 inch 11.0 inch pagedimen
/LetterSmall 7.68 inch 10.16 inch pagedimen
/Tabloid 11.0 inch 17.0 inch pagedimen
/Ledger 17.0 inch 11.0 inch pagedimen
/Legal 8.5 inch 14.0 inch pagedimen
/Statement 5.5 inch 8.5 inch pagedimen
/Executive 7.5 inch 10.0 inch pagedimen
/A3 11.69 inch 16.5 inch pagedimen
/A4 8.26 inch 11.69 inch pagedimen
/A4Small 7.47 inch 10.85 inch pagedimen
/B4 10.125 inch 14.33 inch pagedimen
/B5 7.16 inch 10.125 inch pagedimen
end
} def
/papersize {
papersizedict begin
/Letter {lettertray letter} def
/LetterSmall {lettertray lettersmall} def
/Tabloid {11x17tray 11x17} def
/Ledger {ledgertray ledger} def
/Legal {legaltray legal} def
/Statement {statementtray statement} def
/Executive {executivetray executive} def
/A3 {a3tray a3} def
/A4 {a4tray a4} def
/A4Small {a4tray a4small} def
/B4 {b4tray b4} def
/B5 {b5tray b5} def
/unknown {unknown} def
papersizedict dup papername known {papername} {/unknown} ifelse get
end
/FMdicttop countdictstack 1 add def
statusdict begin stopped end
countdictstack -1 FMdicttop {pop end} for
} def
/manualpapersize {
papersizedict begin
/Letter {letter} def
/LetterSmall {lettersmall} def
/Tabloid {11x17} def
/Ledger {ledger} def
/Legal {legal} def
/Statement {statement} def
/Executive {executive} def
/A3 {a3} def
/A4 {a4} def
/A4Small {a4small} def
/B4 {b4} def
/B5 {b5} def
/unknown {unknown} def
papersizedict dup papername known {papername} {/unknown} ifelse get
end
stopped
} def
/desperatepapersize {
statusdict /setpageparams known
{
paperwidth paperheight 0 1
statusdict begin
{setpageparams} stopped pop
end
} if
} def
/savematrix {
orgmatrix currentmatrix pop
} bind def
/restorematrix {
orgmatrix setmatrix
} bind def
/dmatrix matrix def
/dpi 72 0 dmatrix defaultmatrix dtransform
dup mul exch dup mul add sqrt def
/freq dpi 18.75 div 8 div round dup 0 eq {pop 1} if 8 mul dpi exch div def
/sangle 1 0 dmatrix defaultmatrix dtransform exch atan def
/DiacriticEncoding [
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl
/numbersign /dollar /percent /ampersand /quotesingle /parenleft
/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
/two /three /four /five /six /seven /eight /nine /colon /semicolon
/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K
/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash
/bracketright /asciicircum /underscore /grave /a /b /c /d /e /f /g /h
/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar
/braceright /asciitilde /.notdef /Adieresis /Aring /Ccedilla /Eacute
/Ntilde /Odieresis /Udieresis /aacute /agrave /acircumflex /adieresis
/atilde /aring /ccedilla /eacute /egrave /ecircumflex /edieresis
/iacute /igrave /icircumflex /idieresis /ntilde /oacute /ograve
/ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex
/udieresis /dagger /.notdef /cent /sterling /section /bullet
/paragraph /germandbls /registered /copyright /trademark /acute
/dieresis /.notdef /AE /Oslash /.notdef /.notdef /.notdef /.notdef
/yen /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
/ordfeminine /ordmasculine /.notdef /ae /oslash /questiondown
/exclamdown /logicalnot /.notdef /florin /.notdef /.notdef
/guillemotleft /guillemotright /ellipsis /.notdef /Agrave /Atilde
/Otilde /OE /oe /endash /emdash /quotedblleft /quotedblright
/quoteleft /quoteright /.notdef /.notdef /ydieresis /Ydieresis
/fraction /currency /guilsinglleft /guilsinglright /fi /fl /daggerdbl
/periodcentered /quotesinglbase /quotedblbase /perthousand
/Acircumflex /Ecircumflex /Aacute /Edieresis /Egrave /Iacute
/Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex /.notdef /Ograve
/Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde /macron
/breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
] def
/ReEncode {
dup
length
dict begin
{
1 index /FID ne
{def}
{pop pop} ifelse
} forall
0 eq {/Encoding DiacriticEncoding def} if
currentdict
end
} bind def
/graymode true def
/bwidth FMLOCAL
/bpside FMLOCAL
/bstring FMLOCAL
/onbits FMLOCAL
/offbits FMLOCAL
/xindex FMLOCAL
/yindex FMLOCAL
/x FMLOCAL
/y FMLOCAL
/setpattern {
/bwidth exch def
/bpside exch def
/bstring exch def
/onbits 0 def /offbits 0 def
freq sangle landscape {90 add} if
{/y exch def
/x exch def
/xindex x 1 add 2 div bpside mul cvi def
/yindex y 1 add 2 div bpside mul cvi def
bstring yindex bwidth mul xindex 8 idiv add get
1 7 xindex 8 mod sub bitshift and 0 ne
{/onbits onbits 1 add def 1}
{/offbits offbits 1 add def 0}
ifelse
}
setscreen
{} settransfer
offbits offbits onbits add div FMsetgray
/graymode false def
} bind def
/grayness {
FMsetgray
graymode not {
/graymode true def
orgxfer cvx settransfer
orgfreq organgle orgproc cvx setscreen
} if
} bind def
/HUE FMLOCAL
/SAT FMLOCAL
/BRIGHT FMLOCAL
/Colors FMLOCAL
FMPrintInColor
{
/HUE 0 def
/SAT 0 def
/BRIGHT 0 def
% array of arrays Hue and Sat values for the separations [HUE BRIGHT]
/Colors
[[0 0 ] % black
[0 0 ] % white
[0.00 1.0] % red
[0.37 1.0] % green
[0.60 1.0] % blue
[0.50 1.0] % cyan
[0.83 1.0] % magenta
[0.16 1.0] % comment / yellow
] def
/BEGINBITMAPCOLOR {
BITMAPCOLOR} def
/BEGINBITMAPCOLORc {
BITMAPCOLORc} def
/BEGINBITMAPTRUECOLOR {
BITMAPTRUECOLOR } def
/BEGINBITMAPCOLORc {
BITMAPTRUECOLORc } def
/K {
Colors exch get dup
0 get /HUE exch store
1 get /BRIGHT exch store
HUE 0 eq BRIGHT 0 eq and
{1.0 SAT sub setgray}
{HUE SAT BRIGHT sethsbcolor}
ifelse
} def
/FMsetgray {
/SAT exch 1.0 exch sub store
HUE 0 eq BRIGHT 0 eq and
{1.0 SAT sub setgray}
{HUE SAT BRIGHT sethsbcolor}
ifelse
} bind def
}
{
/BEGINBITMAPCOLOR {
BITMAPGRAY} def
/BEGINBITMAPCOLORc {
BITMAPGRAYc} def
/BEGINBITMAPTRUECOLOR {
BITMAPTRUEGRAY } def
/BEGINBITMAPTRUECOLORc {
BITMAPTRUEGRAYc } def
/FMsetgray {setgray} bind def
/K {
pop
} def
}
ifelse
/normalize {
transform round exch round exch itransform
} bind def
/dnormalize {
dtransform round exch round exch idtransform
} bind def
/lnormalize {
0 dtransform exch cvi 2 idiv 2 mul 1 add exch idtransform pop
} bind def
/H {
lnormalize setlinewidth
} bind def
/Z {
setlinecap
} bind def
/fillvals FMLOCAL
/X {
fillvals exch get
dup type /stringtype eq
{8 1 setpattern}
{grayness}
ifelse
} bind def
/V {
gsave eofill grestore
} bind def
/N {
stroke
} bind def
/M {newpath moveto} bind def
/E {lineto} bind def
/D {curveto} bind def
/O {closepath} bind def
/n FMLOCAL
/L {
/n exch def
newpath
normalize
moveto
2 1 n {pop normalize lineto} for
} bind def
/Y {
L
closepath
} bind def
/x1 FMLOCAL
/x2 FMLOCAL
/y1 FMLOCAL
/y2 FMLOCAL
/rad FMLOCAL
/R {
/y2 exch def
/x2 exch def
/y1 exch def
/x1 exch def
x1 y1
x2 y1
x2 y2
x1 y2
4 Y
} bind def
/RR {
/rad exch def
normalize
/y2 exch def
/x2 exch def
normalize
/y1 exch def
/x1 exch def
newpath
x1 y1 rad add moveto
x1 y2 x2 y2 rad arcto
x2 y2 x2 y1 rad arcto
x2 y1 x1 y1 rad arcto
x1 y1 x1 y2 rad arcto
closepath
16 {pop} repeat
} bind def
/C {
grestore
gsave
R
clip
} bind def
/FMpointsize FMLOCAL
/F {
FMfonts exch get
FMpointsize scalefont
setfont
} bind def
/Q {
/FMpointsize exch def
F
} bind def
/T {
moveto show
} bind def
/RF {
rotate
0 ne {-1 1 scale} if
} bind def
/TF {
gsave
moveto
RF
show
grestore
} bind def
/P {
moveto
0 32 3 2 roll widthshow
} bind def
/PF {
gsave
moveto
RF
0 32 3 2 roll widthshow
grestore
} bind def
/S {
moveto
0 exch ashow
} bind def
/SF {
gsave
moveto
RF
0 exch ashow
grestore
} bind def
/B {
moveto
0 32 4 2 roll 0 exch awidthshow
} bind def
/BF {
gsave
moveto
RF
0 32 4 2 roll 0 exch awidthshow
grestore
} bind def
/G {
gsave
newpath
normalize translate 0.0 0.0 moveto
dnormalize scale
0.0 0.0 1.0 5 3 roll arc
closepath fill
grestore
} bind def
/A {
gsave
savematrix
newpath
2 index 2 div add exch 3 index 2 div sub exch
normalize 2 index 2 div sub exch 3 index 2 div add exch
translate
scale
0.0 0.0 1.0 5 3 roll arc
restorematrix
stroke
grestore
} bind def
/x FMLOCAL
/y FMLOCAL
/w FMLOCAL
/h FMLOCAL
/xx FMLOCAL
/yy FMLOCAL
/ww FMLOCAL
/hh FMLOCAL
/FMsaveobject FMLOCAL
/FMoptop FMLOCAL
/FMdicttop FMLOCAL
/BEGINPRINTCODE {
/FMdicttop countdictstack 1 add def
/FMoptop count 4 sub def
/FMsaveobject save def
userdict begin
/showpage {} def
FMNORMALIZEGRAPHICS
3 index neg 3 index neg translate
} bind def
/ENDPRINTCODE {
count -1 FMoptop {pop pop} for
countdictstack -1 FMdicttop {pop end} for
FMsaveobject restore
} bind def
/gn {
0
{ 46 mul
cf read pop
32 sub
dup 46 lt {exit} if
46 sub add
} loop
add
} bind def
/str FMLOCAL
/cfs {
/str sl string def
0 1 sl 1 sub {str exch val put} for
str def
} bind def
/ic [
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0223
0
{0 hx} {1 hx} {2 hx} {3 hx} {4 hx} {5 hx} {6 hx} {7 hx} {8 hx} {9 hx}
{10 hx} {11 hx} {12 hx} {13 hx} {14 hx} {15 hx} {16 hx} {17 hx} {18 hx}
{19 hx} {gn hx} {0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11} {12}
{13} {14} {15} {16} {17} {18} {19} {gn} {0 wh} {1 wh} {2 wh} {3 wh}
{4 wh} {5 wh} {6 wh} {7 wh} {8 wh} {9 wh} {10 wh} {11 wh} {12 wh}
{13 wh} {14 wh} {gn wh} {0 bl} {1 bl} {2 bl} {3 bl} {4 bl} {5 bl} {6 bl}
{7 bl} {8 bl} {9 bl} {10 bl} {11 bl} {12 bl} {13 bl} {14 bl} {gn bl}
{0 fl} {1 fl} {2 fl} {3 fl} {4 fl} {5 fl} {6 fl} {7 fl} {8 fl} {9 fl}
{10 fl} {11 fl} {12 fl} {13 fl} {14 fl} {gn fl}
] def
/sl FMLOCAL
/val FMLOCAL
/ws FMLOCAL
/im FMLOCAL
/bs FMLOCAL
/cs FMLOCAL
/len FMLOCAL
/pos FMLOCAL
/ms {
/sl exch def
/val 255 def
/ws cfs
/im cfs
/val 0 def
/bs cfs
/cs cfs
} bind def
400 ms
/ip {
is
0
cf cs readline pop
{ ic exch get exec
add
} forall
pop
} bind def
/wh {
/len exch def
/pos exch def
ws 0 len getinterval im pos len getinterval copy pop
pos len
} bind def
/bl {
/len exch def
/pos exch def
bs 0 len getinterval im pos len getinterval copy pop
pos len
} bind def
/s1 1 string def
/fl {
/len exch def
/pos exch def
/val cf s1 readhexstring pop 0 get def
pos 1 pos len add 1 sub {im exch val put} for
pos len
} bind def
/hx {
3 copy getinterval
cf exch readhexstring pop pop
} bind def
/h FMLOCAL
/w FMLOCAL
/d FMLOCAL
/lb FMLOCAL
/bitmapsave FMLOCAL
/is FMLOCAL
/cf FMLOCAL
/wbytes {
dup
8 eq {pop} {1 eq {7 add 8 idiv} {3 add 4 idiv} ifelse} ifelse
} bind def
/BEGINBITMAPBWc {
1 {} COMMONBITMAPc
} bind def
/BEGINBITMAPGRAYc {
8 {} COMMONBITMAPc
} bind def
/BEGINBITMAP2BITc {
2 {} COMMONBITMAPc
} bind def
/COMMONBITMAPc {
/r exch def
/d exch def
gsave
translate rotate scale /h exch def /w exch def
/lb w d wbytes def
sl lb lt {lb ms} if
/bitmapsave save def
r
/is im 0 lb getinterval def
ws 0 lb getinterval is copy pop
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{ip} image
bitmapsave restore
grestore
} bind def
/BEGINBITMAPBW {
1 {} COMMONBITMAP
} bind def
/BEGINBITMAPGRAY {
8 {} COMMONBITMAP
} bind def
/BEGINBITMAP2BIT {
2 {} COMMONBITMAP
} bind def
/COMMONBITMAP {
/r exch def
/d exch def
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
r
/is w d wbytes string def
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{cf is readhexstring pop} image
bitmapsave restore
grestore
} bind def
/proc1 FMLOCAL
/proc2 FMLOCAL
/newproc FMLOCAL
/Fmcc {
/proc2 exch cvlit def
/proc1 exch cvlit def
/newproc proc1 length proc2 length add array def
newproc 0 proc1 putinterval
newproc proc1 length proc2 putinterval
newproc cvx
} bind def
/ngrayt 256 array def
/nredt 256 array def
/nbluet 256 array def
/ngreent 256 array def
/gryt FMLOCAL
/blut FMLOCAL
/grnt FMLOCAL
/redt FMLOCAL
/indx FMLOCAL
/cynu FMLOCAL
/magu FMLOCAL
/yelu FMLOCAL
/k FMLOCAL
/u FMLOCAL
/colorsetup {
currentcolortransfer
/gryt exch def
/blut exch def
/grnt exch def
/redt exch def
0 1 255 {
/indx exch def
/cynu 1 red indx get 255 div sub def
/magu 1 green indx get 255 div sub def
/yelu 1 blue indx get 255 div sub def
/k cynu magu min yelu min def
/u k currentundercolorremoval exec def
nredt indx 1 0 cynu u sub max sub redt exec put
ngreent indx 1 0 magu u sub max sub grnt exec put
nbluet indx 1 0 yelu u sub max sub blut exec put
ngrayt indx 1 k currentblackgeneration exec sub gryt exec put
} for
{255 mul cvi nredt exch get}
{255 mul cvi ngreent exch get}
{255 mul cvi nbluet exch get}
{255 mul cvi ngrayt exch get}
setcolortransfer
{pop 0} setundercolorremoval
{} setblackgeneration
} bind def
/tran FMLOCAL
/fakecolorsetup {
/tran 256 string def
0 1 255 {/indx exch def
tran indx
red indx get 77 mul
green indx get 151 mul
blue indx get 28 mul
add add 256 idiv put} for
currenttransfer
{255 mul cvi tran exch get 255.0 div}
exch Fmcc settransfer
} bind def
/BITMAPCOLOR {
/d 8 def
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
colorsetup
/is w d wbytes string def
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{cf is readhexstring pop} {is} {is} true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPCOLORc {
/d 8 def
gsave
translate rotate scale /h exch def /w exch def
/lb w d wbytes def
sl lb lt {lb ms} if
/bitmapsave save def
colorsetup
/is im 0 lb getinterval def
ws 0 lb getinterval is copy pop
/cf currentfile def
w h d [w 0 0 h neg 0 h]
{ip} {is} {is} true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPTRUECOLORc {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
ws 0 w getinterval is copy pop
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ip} {gip} {bip} true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPTRUECOLOR {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
/gis w string def
/bis w string def
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ cf is readhexstring pop }
{ cf gis readhexstring pop }
{ cf bis readhexstring pop }
true 3 colorimage
bitmapsave restore
grestore
} bind def
/BITMAPTRUEGRAYc {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
ws 0 w getinterval is copy pop
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ip gip bip w gray} image
bitmapsave restore
grestore
} bind def
/ww FMLOCAL
/r FMLOCAL
/g FMLOCAL
/b FMLOCAL
/i FMLOCAL
/gray {
/ww exch def
/b exch def
/g exch def
/r exch def
0 1 ww 1 sub { /i exch def r i get .299 mul g i get .587 mul
b i get .114 mul add add r i 3 -1 roll floor cvi put } for
r
} bind def
/BITMAPTRUEGRAY {
gsave
translate rotate scale /h exch def /w exch def
/bitmapsave save def
/is w string def
/gis w string def
/bis w string def
/cf currentfile def
w h 8 [w 0 0 h neg 0 h]
{ cf is readhexstring pop
cf gis readhexstring pop
cf bis readhexstring pop w gray} image
bitmapsave restore
grestore
} bind def
/BITMAPGRAY {
8 {fakecolorsetup} COMMONBITMAP
} bind def
/BITMAPGRAYc {
8 {fakecolorsetup} COMMONBITMAPc
} bind def
/ENDBITMAP {
} bind def
end
/ALDsave FMLOCAL
/ALDmatrix matrix def ALDmatrix currentmatrix pop
/StartALD {
/ALDsave save def
savematrix
ALDmatrix setmatrix
} bind def
/InALD {
restorematrix
} bind def
/DoneALD {
ALDsave restore
} bind def
%%EndProlog
%%BeginSetup
(3.0) FMVERSION
1 1 612 792 0 1 1 FMDOCUMENT
0 0 /Times-Roman FMFONTDEFINE
32 FMFILLS
0 0 FMFILL
1 .1 FMFILL
2 .3 FMFILL
3 .5 FMFILL
4 .7 FMFILL
5 .9 FMFILL
6 .97 FMFILL
7 1 FMFILL
8 <0f1e3c78f0e1c387> FMFILL
9 <0f87c3e1f0783c1e> FMFILL
10 <cccccccccccccccc> FMFILL
11 <ffff0000ffff0000> FMFILL
12 <8142241818244281> FMFILL
13 <03060c183060c081> FMFILL
14 <8040201008040201> FMFILL
16 1 FMFILL
17 .9 FMFILL
18 .7 FMFILL
19 .5 FMFILL
20 .3 FMFILL
21 .1 FMFILL
22 0.03 FMFILL
23 0 FMFILL
24 <f0e1c3870f1e3c78> FMFILL
25 <f0783c1e0f87c3e1> FMFILL
26 <3333333333333333> FMFILL
27 <0000ffff0000ffff> FMFILL
28 <7ebddbe7e7dbbd7e> FMFILL
29 <fcf9f3e7cf9f3f7e> FMFILL
30 <7fbfdfeff7fbfdfe> FMFILL
%%EndSetup
%%Page: "1" 1
%%BeginPaperSize: Letter
%%EndPaperSize
612 792 1 FMBEGINPAGE
0 12 Q
0 X
0 K
(Color) 46.96 626.17 T
(Cut \050overall\051) 46.96 683.16 T
(X1) 46.96 504.32 T
(1/OpenW) 61.18 504.32 T
(indows/Motif) 107.33 504.32 T
(Fonts) 46.96 718.59 T
(-regions) 88.15 652.86 T
(-points) 88.15 668.01 T
(V) 46.96 698.3 T
(alue locator) 54.29 698.3 T
(PostScript output) 46.96 640.81 T
(Easy 2D graph) 46.96 592.26 T
(Magnify area) 46.96 607.41 T
(Input \050overall\051) 46.96 578.49 T
(-SIO data) 46.96 564.5 T
(-ASCII data) 79.82 550.33 T
(-R,theta) 80.65 531.67 T
(Portable) 46.96 519.49 T
(Interactive \050overall\051) 46.96 486.22 T
(-labels) 74.99 471.07 T
(-plot symbols) 74.99 455.92 T
(-line attributes) 74.99 440.77 T
(Scriptable) 46.96 425.62 T
(Create legend) 46.96 410.48 T
(Overlay plots) 46.96 395.33 T
(Axes arbitrary dir) 46.96 380.18 T
(.) 131.57 380.18 T
(Demo available) 46.96 365.03 T
(Polar plots) 46.96 349.88 T
(Polar plots axis labelling) 46.96 334.73 T
(Contour routines) 46.96 319.58 T
(Page composition) 46.96 304.43 T
(Symbols in 3D graph) 46.96 289.29 T
(3D interactive rotations) 46.96 274.14 T
(Exact inch:inch scaling) 46.96 258.99 T
(Licensing) 46.96 243.84 T
(Cost) 46.96 228.69 T
(PV) 253.57 745 T
(-W) 267.79 745 T
(ave) 282.15 745 T
(KHOROS) 314.64 745 T
(XVGR) 379.44 745 T
(Gnuplot) 437.23 745 T
(PlotXY) 497.69 745 T
(DADisp) 556.33 745 T
(Robot) 622.26 745 T
(Package Name) 194.95 767.32 T
35 728 721 728 2 L
0.5 H
2 Z
N
35 712.82 721 712.82 2 L
N
35 697.64 721 697.64 2 L
N
35 682.46 721 682.46 2 L
N
35 667.27 721 667.27 2 L
N
35 652.09 721 652.09 2 L
N
35 635.11 721 635.11 2 L
N
35 621.73 721 621.73 2 L
N
35 606.55 721 606.55 2 L
N
35 589.16 721 589.16 2 L
N
35 573.4 721 573.4 2 L
N
34.17 561 720.17 561 2 L
N
35 545.82 721 545.82 2 L
N
35 530.64 721 530.64 2 L
N
35 513.92 721 513.92 2 L
N
35 498.77 721 498.77 2 L
N
35 485.09 721 485.09 2 L
N
35 469.91 721 469.91 2 L
N
35 454.73 721 454.73 2 L
N
35 439.55 721 439.55 2 L
N
35 424.36 721 424.36 2 L
N
35 409.18 721 409.18 2 L
N
35 394 721 394 2 L
N
35 378.82 721 378.82 2 L
N
35 348.45 721 348.45 2 L
N
35 363.64 721 363.64 2 L
N
35 333.27 721 333.27 2 L
N
35 318.09 721 318.09 2 L
N
35 302.91 721 302.91 2 L
N
32.14 286.3 718.14 286.3 2 L
N
35 272.55 721 272.55 2 L
N
35 257.36 721 257.36 2 L
N
35 240.4 721 240.4 2 L
N
35 227 721 227 2 L
N
36 738.61 722 738.61 2 L
3 H
N
33.12 755.75 722.25 756.85 2 L
N
35 224.86 721 224.86 2 L
N
33 752 32 223 2 L
N
724 757 723 228 2 L
N
187.6 754.95 186.6 225.95 2 L
N
250.63 755.71 250.63 229.71 2 L
1 H
N
309.74 755 309.74 229 2 L
N
368.85 755 368.85 229 2 L
N
427.96 755 427.96 229 2 L
N
487.07 754.05 487.07 229.05 2 L
N
546.17 756.31 546.17 230.31 2 L
N
605.28 755 605.28 229 2 L
N
(Features:) 89.02 744.32 T
(SIOPS) 202.06 745 T
(hershey) 200.63 718.28 T
(++) 273.39 718.28 T
(++) 332.53 718.28 T
(++) 389.7 718.28 T
(+) 453.9 718.28 T
(-) 514.06 716.83 T
(-) 217.28 703.17 T
(+) 214.19 685.17 T
(+) 214.19 656.17 T
(-) 215.58 670 T
(+/-) 210.53 640.81 T
(-) 215.58 626.17 T
(+) 214.19 595.22 T
(+) 214.19 578.49 T
(+) 214.19 564.5 T
(-) 214.75 550.33 T
(+) 213.84 538.35 T
(-) 216.65 519.49 T
(-) 216.65 504.32 T
(-) 216.65 489.78 T
(+) 215.27 476.21 T
(+) 215.27 459.78 T
(+) 215.27 446.21 T
(+) 215.27 429.07 T
(+) 215.27 416.21 T
(+) 215.27 401.21 T
(+) 215.27 385.5 T
(yes) 210.87 367 T
(+) 215.27 355.5 T
(+) 215.27 324.78 T
(+) 215.27 309.78 T
(-) 216.65 279.07 T
(+) 215.27 264.78 T
(none) 206.99 247 T
(0) 216 231.16 T
(-) 455.29 701.29 T
(-) 455.29 688.43 T
(+/-) 450.24 672.71 T
(-) 455.29 656.29 T
(+) 453.9 640.81 T
(++) 450.52 626.17 T
(-) 455.29 611.29 T
(++) 450.52 595.22 T
(+) 453.9 578.49 T
(via siod) 438.94 564.5 T
(+) 453.07 550.33 T
(+) 453.9 535.57 T
(++) 450.52 519.49 T
(+) 440.28 504.32 T
(++) 450.52 489.86 T
(++) 450.52 474.86 T
(++) 450.52 460.57 T
(++) 450.52 442 T
(+) 453.9 429.14 T
(++) 450.52 412.71 T
(+) 453.9 398.43 T
(+) 453.9 383.43 T
(yes) 449.29 367 T
(+/-) 450.24 352 T
(-) 455.29 337.71 T
(yes) 449.29 322.89 T
(+) 453.9 307 T
(-) 455.29 291.28 T
(-) 455.29 278.43 T
(-) 455.29 262.71 T
(none) 445.63 247 T
(0) 452.26 231.16 T
(-) 215 611.17 T
(+) 393.08 702.88 T
(++) 389.7 684.88 T
(++) 389.7 672.95 T
(++) 389.7 657.88 T
(++) 389.7 640.81 T
(++) 389.7 626.17 T
(-) 394.47 612.88 T
(++) 389.7 595.22 T
(++) 389.7 578.49 T
(via siod) 377.64 564.5 T
(++) 388.87 550.33 T
(-) 394.47 535.44 T
(++) 389.7 519.49 T
(++) 389.7 504.32 T
(+++) 386.32 489.5 T
(+++) 386.32 473.67 T
(+++) 386.32 457.83 T
(+++) 386.32 443.67 T
(+++) 386.32 429.5 T
(++) 389.7 415.33 T
(++) 389.7 400.33 T
(-) 394.47 384.5 T
(yes) 388.47 367 T
(-) 394.47 351.17 T
(-) 394.47 337.83 T
(2D only) 376.98 322.89 T
(+) 392.62 308.59 T
(-) 394.47 291.17 T
(-) 394.47 277 T
(-) 394.47 263.66 T
(none) 384.81 247 T
(0) 393.82 231.16 T
(++) 273.39 703 T
(-) 278.15 688 T
(-) 278.15 671 T
(-) 278.15 658 T
(++) 273.39 640.81 T
(+++) 270.01 626.17 T
(+/-) 273.11 612 T
(++) 273.39 595.22 T
(+++) 270.01 578.49 T
(?+++) 267.34 564.5 T
(+++) 269.17 550.33 T
(?-) 275.49 537 T
(+/-) 273.11 519.49 T
(++) 273.39 504.32 T
(+++) 270.01 490.33 T
(++) 273.39 472 T
(++) 273.39 457 T
(+++) 270.01 442.83 T
(++) 273.39 430.33 T
(++) 273.39 415.33 T
(++) 273.39 401.17 T
(++) 273.39 383.67 T
(yes) 272.16 367 T
(?) 277.49 353.26 T
(-) 278.15 340.33 T
(?) 277.49 322.83 T
(?) 277.49 306.17 T
(?) 277.49 292.83 T
(-) 278.15 276.16 T
(?) 277.49 260.33 T
(fix/float) 260.83 247 T
(1800-5330) 254.52 231.16 T
(-) 514.06 702.72 T
(-) 514.06 687.71 T
(-) 514.06 671.29 T
(-) 514.06 656.29 T
(+/-) 509.01 640.81 T
(++) 509.29 626.17 T
(-) 514.06 610.57 T
(+) 512.67 595.22 T
(+) 512.67 578.49 T
(via siod) 497.14 564.5 T
(+) 511.84 550.33 T
(++) 509.29 519.49 T
(+) 512.67 504.32 T
(-) 514.06 490.57 T
(+) 512.67 475.57 T
(+) 512.67 460.57 T
(+) 512.67 444.86 T
(-) 514.06 430.57 T
(+) 512.67 414.86 T
(+) 512.67 398.43 T
(+) 512.67 382 T
(yes) 508.06 367 T
(-) 514.06 352.71 T
(-) 514.06 339.14 T
(-) 514.06 324.86 T
(+) 512.67 306.28 T
(-) 514.06 290.57 T
(-) 514.06 278.43 T
(none) 504.4 247 T
(0) 513.41 231.16 T
(++) 573.22 718.28 T
(+) 576.6 702 T
(-) 577.99 686.17 T
(-) 577.99 672 T
(-) 577.99 657 T
(-) 577.99 640.81 T
(+) 576.6 626.17 T
(++) 573.22 611.17 T
(-) 577.99 595.22 T
(+) 576.6 578.49 T
(via siod) 561.16 564.5 T
(+) 575.77 550.33 T
(+) 576.6 519.49 T
(++) 573.22 504.32 T
(+) 576.6 489.5 T
(+) 576.6 474.5 T
(+) 576.6 459.5 T
(+) 576.6 444.5 T
(-) 577.99 428.67 T
(+) 576.6 412 T
(+) 576.6 398.67 T
(-) 577.99 382.83 T
(yes) 571.99 367 T
(-) 577.99 352.83 T
(-) 577.99 337.83 T
(-) 577.99 323.67 T
(+) 576.6 292 T
(-) 577.99 276.16 T
(per copy) 559.17 247 T
(NCAR) 670.33 745 T
663.89 755 664.89 223 2 L
N
(Other Packages: Xgobi, GMT) 46 199 T
(,IDL) 189.01 199 T
(+) 633.54 716.17 T
(+) 633.54 702 T
(-) 634.92 684.5 T
(-) 634.92 669.5 T
(-) 634.92 655.33 T
(+) 633.54 640.81 T
(+) 633.54 626.17 T
(-) 634.92 610.33 T
(++) 630.16 594.5 T
(+) 633.54 578.49 T
(via siod) 612.5 564.5 T
(++) 629.32 550.33 T
(-) 634.92 536.17 T
(+) 633.54 519.49 T
(+) 633.54 504.32 T
(++) 630.16 491.17 T
(+) 633.54 474.5 T
(+) 633.54 460.33 T
(+) 633.54 444.5 T
(+) 633.54 429.5 T
(+) 633.54 413.67 T
(+) 633.54 398.67 T
(yes) 628.93 366.17 T
(-) 634.92 352.83 T
(-) 634.92 339.5 T
(+/-) 629.88 323.67 T
(++) 630.16 306.17 T
(-) 634.92 289.5 T
(-) 634.92 278.66 T
(-) 634.92 262.83 T
(none) 625.26 247 T
(0) 634.27 231.16 T
(-) 337.3 702 T
(-) 337.3 684 T
(-) 337.3 675 T
(-) 337.3 657 T
(++) 332.53 640.81 T
(++) 332.53 626.17 T
(+) 335.91 612 T
(+) 335.91 594 T
(+) 335.91 578.49 T
(via siod) 320.47 564.5 T
(++) 331.7 550.33 T
(-) 337.3 540 T
(++) 332.53 519.49 T
(++) 332.53 504.32 T
(++) 332.53 486 T
(++) 332.53 459 T
(++) 332.53 477 T
(++) 332.53 441 T
(+++) 329.15 432 T
(++) 332.53 414 T
(++) 332.53 396 T
(-) 337.3 387 T
(-) 337.3 357 T
(yes) 331.3 369 T
(-) 337.3 333 T
(+) 335.91 324 T
(-) 337.3 306 T
(+) 335.91 297 T
(+) 335.91 279 T
(-) 337.3 261 T
(none) 327.64 247 T
(0) 336.65 231.16 T
(hershey) 668.34 718.67 T
(+) 683.6 640.81 T
(+) 683.6 626.17 T
(+) 683.6 596.17 T
(+) 683.6 519.49 T
(+) 683.6 504.32 T
(\337oat) 676.32 247 T
(750) 677.99 231.16 T
FMENDPAGE
%%EndPage: "1" 0
%%Trailer
%%BoundingBox: 0 0 612 792
%%Pages: 1 -1
%%DocumentFonts: Times-Roman
----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: graphics.ascii
X-Sun-Content-Lines: 163
Plotting Graphics
1.0 Packages Reviewed
I've selected 9 packages from a field of about twice that number to
present. They range from the existing SIO plot tools to fully
integrated scientific visualization packages. The commercial packages
are PV-Wave, DADisp, and NCAR. The public domain packages are KHOROS,
XVGR, Gnuplot, PlotXY and Robot. Wherever possible, a demo version of
the program is available. There are further packages arriving that have
yet to be evaluated.
On the attached chart is a summary of some of the properties which
users expressed and interest in having available in each package. In
the following descriptions, a few of the left out parameters are
mentioned as well as specific strengths or weaknesses of the programs.
1.1 SIOPS
These are the standard set of tools used at MPL. They include plot2n,
plot3d, countour, gray, polar, label, cut, paste, symplot, solid, etc..
The impetus to change away from these routines is the complexity of the
plot control file and the lack of interactivity in a workstation
windowing environment. These programs have been optimized to read the
SIO data files and users are generally familiar with the plot control
file functions. There are ways to convert the device independant plot
file output to postscript and then preview them on screen but this is
rarely taken advantage of. Many shell scripts have been developed to
use the programs in data processing streams.
1.2 PV-Wave
The ever-popular PV-Wave comes in 2 flavors now. The first is the
familiar Command Language version (CL) which runs under Sunview and the
new version, Wavepoint, which requires OpenWindows 3. These two
programs have been used here at MPL and do credi- ble jobs with SIO
data. The newer version does not have the extensive capability to
inter- face with C and fortran programs (although it can to a limited
extent). It will also employ some of the existing Command Language
scripts developed here and at NOSC. PV-Wave is a program that is widely
used by NOSC and it would be easy to interface between the 2
institutions. The cost is significant. A single floating point license
is $1800 with a $500 per year maintainence fee. A node locked license
for a 4/490 server is $5330 and $1845/yr. maintainence. The node
locked license runs on one server but any number of users may run it
concurrently. If there was a need to take a copy to sea, it can be
converted to 3 float- ing licenses, one of which can go to sea. This is
handled by the lock managing software and requires a current
maintainence fee.
1.3 KHOROS
This is a highly integrated visualization tool from the University of
New Mexico. The 2 programs of most interest are xprism2 and xprism3
which are 2-D and 3-D plotting respectively. It has very good X11
interface tools to change the attributes of some of the plot elements
(axes, legends, titles, etc.). It will take ASCII input from data-files
which are constructed from sio data files via "siod". It will not work
under sunview. It has no polar plotting capabilities that I can find
and it has no interactive means to edit the data once it is presented
on the screen. In order to put multiple graphs on one page, one must
place them via layout dimensions in the postscript output dialog
boxes. The output files are in a format called viff which all khoros
modules understand. There is a way to convert Matlab files to the viff
format.
1.4 XVGR
Another well thought out, X11 compliant, graphics package, xvgr is
described as "graph- ics for exploratory data analysis". It will plot
up to 10 graphs with 30 sets of data per graph with user defined
scaling, labels, symbols, line styles and colors. It can operate in
batch mode which has the especially interesting capability of acting
within a data stream to dis- play a sort of "live" recording like a
strip chart recorder would. It can cut points and regions from a graph.
Input from sio data files is again via siod. I haven't been able to
define any way to do polar plots and it is not set up to do 3-D
graphics. It also has no way to scale by inches in a straightforward
manner. As a public domain package though, we have access to the source
code and can perhaps form the tools that we need.
1.5 Gnuplot
The same people who brought you emacs and gcc (the Free Software
Foundation) now offer a plotting package, gnuplot. This package is a
command driven plotter (e.g. you are given a prompt, gnuplot>, to which
you feed parameter specifications, input data, and the plot command.)
It displays it's graph to an X11 terminal window or to a file in
various for- mats. The data input is fairly flexible for ASCII formats
and it claims to input r,q but I couldn't get it right. While it will
do contour graphics, it will not do general 3-D graphs. It also fails
on the inch:inch scaling parameter. The manipulation of fonts needs to
be done through the direct manipulation of a postscript output file
1.6 PlotXY
This is a very simple command driven plotter which essentially reads in
ASCII data, plots it and stops. It's latest incarnation includes a
postscript output driver so that the results can be edited directly.
It's default output file is `myplot'. While this package is extremely
easy to use and is fairly adaptable, it's lack of GUI, fonts, polar
plot and 3-D seem to put it in the "also ran" category.
1.7 DADisP
This is a very expensive package whose demo tape totally turned me off.
They had several canned demos of graph types that the package could do.
It can do the normal manipulation of graph attributes and text as in
PV-Wave or XVGR. It has a great adaptability factor in it's ability to
manipulate data once it's in the program's workspace. My problem was
that the demo wouldn't let me input any data into it to try it! I
wasn't able to determine it's capability to edit data points
graphically or to do polar plots. The ability to scale the graph to
inches or other data units was also not apparent. All in all, this
package was a disap- pointment compared to it's vaunted reputation.
1.8 Robot
As a public domain package, Robot is a nice X11 application. It does
lack a lot of the flex- ibility of others. I can't get it to change the
scale of the axes to my specifications. It can place text and change
line attributes easily though and has a good page layout facility
1.9 NCAR graphics
I don't have the demo version yet to give an opinion. I do know it is
limited to hershey, stroked fonts but can make them in severel sizes
and thicknesses. It has postscript output and an X11 interface built on
it. This is the package that is frequently used at SDSC for general
use. The output of NCAR (that's National Center for Atmospheric
Research) is the computer graphics metafile (CGM) which is a "quasi"
standard and is adaptable to other packages.
1.10 IDL
IDL is the company from which PV-Wave developed. The latter specialized
in developing a GUI while the original focused on providing a
development environment. This package is probably more suitable to s/w
developers but the sales-rep claims it's very simple to develop
applications in this language. I've been able to get a canned demo
running on lambis, which give some idea of the range of functions
available. This is basically the same as PV-Wave Command Language.
Martin's programs (sort of) run under it. The cost is $7500 for an
node-locked, multi-user server and $2813 for a floating network
license. These prices are after an educational discount. The advantage
of this program is that it allows one to build one's own application
interface and tools to do just the processing needed. It is probably
more suited to software development environments than ours.
3.0 Feature Comparisons
The attached chart is a ROUGH guide to the difference in features
between programs as best as I could determine. One `+' means this
feature is supported while a `-' means it's not. Multiple pluses imply
a particularly good or easily used feature. `+/-' says that a fea- ture
is there but doesn't work in an intuitive or easy manner. Finally, a
blank means that I wasn't able to determine one way or another.
There is an attached postscript document chart as described in 3.0 above.
I couldn't easily convert it to ascii.
----- End Included Message -----
Many thanks to:
phil@dgbt.doc.ca
ccarpenter@dw3f.ess.harris.com
stefan@centaur.astro.utoronto
era@niwot.scd.ucar.edu
fetro@biostat.washington.edu
pls@pegasus.rice.edu
charest@canr.hydro.qc.ca
ohnielse@ltf.dth.dk
rrichter@ph.gmr.com
djthongs@pheonix.princeton.edu
eckhard@ikarus.ts.go.dlr.de
patti@sse.com
Extra special thanks to hal@mpl.UCSD.EDU
----- End Included Message -----
-- Matt Gertz, mwgertz+@cs.cmu.edu Dept. of ECE, The Robotics Institute at Carnegie Mellon University.
This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:06:43 CDT