home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume31 / jgraph / part01 < prev    next >
Encoding:
Text File  |  1992-07-13  |  57.8 KB  |  1,943 lines

  1. Newsgroups: comp.sources.misc
  2. From: jsp@Princeton.EDU (James Plank)
  3. Subject:  v31i031:  jgraph - A filter for plotting postscript graphs v8.0, Part01/07
  4. Message-ID: <csm-v31i031=jgraph.101354@sparky.IMD.Sterling.COM>
  5. X-Md4-Signature: f652ce4bfac2b966406e883b894c4f07
  6. Date: Tue, 14 Jul 1992 15:14:37 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: jsp@Princeton.EDU (James Plank)
  10. Posting-number: Volume 31, Issue 31
  11. Archive-name: jgraph/part01
  12. Environment: UNIX, VMS, postscript
  13. Supersedes: jgraph: Volume 16, Issue 20
  14.  
  15. Jgraph version 8.0: Fri Jul  3 15:15:54 EDT 1992
  16.  
  17. This is a complete reposting of jgraph.  For those of you who don't know what
  18. jgraph is, the description is below.  Those who do, please skip to 
  19. the CHANGES line...
  20.  
  21.     Jgraph takes the description of a graph or graphs in the standard
  22.     input, and produces a postscript file on the standard output.  Jgraph
  23.     is ideal for plotting any mixture of scatter point graphs, line
  24.     graphs, and/or bar graphs, and embedding the output into LaTeX, or
  25.     any other text processing system which can read postscript.
  26.     
  27.     The graph description language is simple enough to get nice looking
  28.     graphs with a minimum of effort, yet powerful enough to give the user
  29.     the flexibility to tailor the appearance of the graph to his or her
  30.     individual preferences.  This includes plotting multiple graphs and
  31.     laying them out separately on the page (or pages). 
  32.     
  33.     The program is written in C, and shouldn't take anything too fancy
  34.     or machine-dependent.  It has been tested on DECstations, 
  35.     sun3's, and sparc's (and is being used on many other types
  36.     of machines, including those running VMS and DOS).
  37.     
  38.     There is a makefile, a man page (in jgraph.1), source code, and 
  39.     example graphs.
  40.     
  41.     Jgraph is available via anonymous ftp to princeton.edu, in the
  42.     file jgraph.Z.  This file is a compressed shell bundle file.
  43.     
  44.     Jgraph is also available from netlib, a mail archive server.
  45.     To acquire jgraph from netlib, send a mail message to
  46.     netlib@ornl.gov with nothing but the text:
  47.     
  48.     send jgraph.shar from jgraph  
  49.     
  50.     It will respond by mailing you messages which comprise
  51.     the file jgraph.shar.  To extract jgraph.shar from these 
  52.     messages, first save each one into a file.  Then for each
  53.     of these files, strip off all the lines up to but not including
  54.     the '#!/bin/sh' line.  Then run /bin/sh on each file.  When
  55.     you're done, you should be left with the file jgraph.shar, upon
  56.     which you then run /bin/sh -- this will produce all the jgraph
  57.     source files.
  58.     
  59.     There is also a mailing list in which I inform users directly 
  60.     about bug fixes.  This is for those who don't read comp.sources.misc,
  61.     or those who would like to hear about minor bug fixes which I
  62.     haven't posted as a patch to comp.sources.misc.
  63.     
  64.     Please send me comments and/or bug reports.
  65.     
  66.     Author: Jim Plank
  67.     Email:  jsp@princeton.edu
  68.     USmail:    Department of Computer Science
  69.         Princeton University
  70.         35 Olden St.
  71.         Princeton, NJ 08544-2087
  72. CHANGES
  73.  
  74. Before I get into changes, I'm interested in knowing just how many 
  75. people are using jgraph at different sites.  I know it's been
  76. ported to at least 40 sites, but I really have little idea of the 
  77. user base.  So, if you're a jgraph user please just send me an email
  78. message.  If you've installed jgraph at a site, I'd also like to have
  79. an idea of how many users you have at that site, and what machines
  80. you've ported it to.  Thanks so much.
  81.  
  82. Ok, here are the major changes.  If you've been using jgraph, these changes
  83. shouldn't affect your old graphs, except in the case of fancy legends, 
  84. where you might need to update them.   As always, the man page has been
  85. updated to reflect all the changes.  
  86.  
  87. - Added landscape mode to the command line arguments (option is -L).
  88. - Added color to all labels and strings (see lgray and lcolor)
  89. - Allowed multiline strings (i.e. labels can now have newlines in them).
  90.   (see "Strings")
  91. - Allowed error bars to be printed automatically in a curve
  92.   (see x_epts and y_epts)
  93. - Allowed postscript marks as well as a postscript preamble and epilogue
  94.   (see preamble, epilogue and postscript)
  95. - Allowed the points of a curve to define a polygon
  96.   (see poly, pfill, and pcfill)
  97. - Allowed gmarks to define a polygon or bezier or closed bezier
  98.   (see marktype)
  99. - Allowed marks to be rotated (see mrotate)
  100. - Put in rarrow and larrow, for when you only want an arrow at the beginning
  101.   or ending of a curve.
  102. - Fixed up legends.  Now you can edit default attributes for all labels in the
  103.   legend at once, as well as specify justification and rotation for the legend
  104.   as a whole  (see LEGEND EDITING COMMANDS).
  105. - Put in grid_gray, grid_color, mgrid_gray and mgrid_color, so that grid lines
  106.   can be different grayness/color from the axis without using copygraph.
  107. - Fixed up custom legends so that all values of hj and vj except for hjc 
  108.   produce reasonable results.
  109. - Put in afill and acfill for controlling the color of arrows.  This is
  110.   mainly so that the color of arrows isn't bound to be the color of the
  111.   curve's marks.
  112.  
  113. Another change -- jgraph has been installed in netlib, which is basically
  114. a mail archive for programs.  So, if you would like to retrieve the most
  115. current verion of jgraph and you can't ftp to princeton.edu, then please 
  116. use netlib. Directions for using netlib are in the jgraph description above.
  117.  
  118. As always, please let me know of bugs and/or comments.
  119.  
  120. Take it Easy,
  121.  
  122. Jim
  123.  
  124. #! /bin/sh
  125. # This is a shell archive.  Remove anything before this line, then feed it
  126. # into a shell via "sh file" or similar.  To overwrite existing files,
  127. # type "sh file -c".
  128. # The tool that generated this appeared in the comp.sources.unix newsgroup;
  129. # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
  130. # Contents:  README ebars.jgr jgraph.1 mab2.times
  131. # Wrapped by kent@sparky on Sun Jul 12 20:04:01 1992
  132. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  133. echo If this archive is complete, you will see the following message:
  134. echo '          "shar: End of archive 1 (of 7)."'
  135. if test -f 'README' -a "${1}" != "-c" ; then 
  136.   echo shar: Will not clobber existing file \"'README'\"
  137. else
  138.   echo shar: Extracting \"'README'\" \(2179 characters\)
  139.   sed "s/^X//" >'README' <<'END_OF_FILE'
  140. X$Revision: 8.0 $
  141. X
  142. XJgraph takes the description of a graph or graphs in the standard
  143. Xinput, and produces a postscript file on the standard output.  Jgraph
  144. Xis ideal for plotting any mixture of scatter point graphs, line
  145. Xgraphs, and/or bar graphs, and embedding the output into LaTeX, or
  146. Xany other text processing system which can read postscript.
  147. X
  148. XThe graph description language is simple enough to get nice looking
  149. Xgraphs with a minimum of effort, yet powerful enough to give the user
  150. Xthe flexibility to tailor the appearance of the graph to his or her
  151. Xindividual preferences.  This includes plotting multiple graphs and
  152. Xlaying them out separately on the page (or pages). 
  153. X
  154. XThe program is written in C, and shouldn't take anything too fancy
  155. Xor machine-dependent.  It has been tested on DECstations, 
  156. Xsun3's, and sparc's (and is being used on many other types
  157. Xof machines, including those running VMS and DOS).
  158. X
  159. XThere is a makefile, a man page (in jgraph.1), source code, and 
  160. Xexample graphs.
  161. X
  162. XJgraph is available via anonymous ftp to princeton.edu, in the
  163. Xfile jgraph.Z.  This file is a compressed shell bundle file.
  164. X
  165. XJgraph is also available from netlib, a mail archive server.
  166. XTo acquire jgraph from netlib, send a mail message to
  167. Xnetlib@ornl.gov with nothing but the text:
  168. X
  169. Xsend jgraph.shar from jgraph  
  170. X
  171. XIt will respond by mailing you messages which comprise
  172. Xthe file jgraph.shar.  To extract jgraph.shar from these 
  173. Xmessages, first save each one into a file.  Then for each
  174. Xof these files, strip off all the lines up to but not including
  175. Xthe '#!/bin/sh' line.  Then run /bin/sh on each file.  When
  176. Xyou're done, you should be left with the file jgraph.shar, upon
  177. Xwhich you then run /bin/sh -- this will produce all the jgraph
  178. Xsource files.
  179. X
  180. XThere is also a mailing list in which I inform users directly 
  181. Xabout bug fixes.  This is for those who don't read comp.sources.misc,
  182. Xor those who would like to hear about minor bug fixes which I
  183. Xhaven't posted as a patch to comp.sources.misc.
  184. X
  185. XPlease send me comments and/or bug reports.
  186. X
  187. XAuthor: Jim Plank
  188. XEmail:  jsp@princeton.edu
  189. XUSmail:    Department of Computer Science
  190. X    Princeton University
  191. X    35 Olden St.
  192. X    Princeton, NJ 08544-2087
  193. END_OF_FILE
  194.   if test 2179 -ne `wc -c <'README'`; then
  195.     echo shar: \"'README'\" unpacked with wrong size!
  196.   fi
  197.   # end of 'README'
  198. fi
  199. if test -f 'ebars.jgr' -a "${1}" != "-c" ; then 
  200.   echo shar: Will not clobber existing file \"'ebars.jgr'\"
  201. else
  202.   echo shar: Extracting \"'ebars.jgr'\" \(605 characters\)
  203.   sed "s/^X//" >'ebars.jgr' <<'END_OF_FILE'
  204. X(* This graph shows the use of y_epts to get error bars onto the graph.
  205. X   It plots the curve y = 2x plus or minus x/2 for integer x values
  206. X   from from 1 to 10 *)
  207. X
  208. Xnewgraph
  209. Xxaxis min 0 max 10 label : x
  210. Xyaxis min 0 max 25 label : y = 2x +- x/2
  211. X
  212. Xnewcurve marktype circle linetype dotted
  213. X  (* These points could equally be generated by: 
  214. X     y_epts shell : echo "" |\
  215. X      awk '{ for (i = 1; i < 11; i++) print i, 2*i, 2*i-i/2.0, 2*i+i/2.0}'
  216. X   *)
  217. X  y_epts
  218. X   1 2 1.5 2.5
  219. X   2 4 3 5
  220. X   3 6 4.5 7.5
  221. X   4 8 6 10
  222. X   5 10 7.5 12.5
  223. X   6 12 9 15
  224. X   7 14 10.5 17.5
  225. X   8 16 12 20
  226. X   9 18 13.5 22.5
  227. X   10 20 15 25
  228. END_OF_FILE
  229.   if test 605 -ne `wc -c <'ebars.jgr'`; then
  230.     echo shar: \"'ebars.jgr'\" unpacked with wrong size!
  231.   fi
  232.   # end of 'ebars.jgr'
  233. fi
  234. if test -f 'jgraph.1' -a "${1}" != "-c" ; then 
  235.   echo shar: Will not clobber existing file \"'jgraph.1'\"
  236. else
  237.   echo shar: Extracting \"'jgraph.1'\" \(44248 characters\)
  238.   sed "s/^X//" >'jgraph.1' <<'END_OF_FILE'
  239. X.\" SCCSID: @(#)jgraph.1    1.1    10/23/89
  240. X.\" SCCSID: @(#)jgraph.1    1.1    10/23/89
  241. X.TH jgraph 1
  242. X.SH NAME
  243. Xjgraph \- filter for graph plotting to postscript
  244. X.SH SYNTAX
  245. X.B jgraph 
  246. X[\-\fIp\fR\|]
  247. X[\-\fIP\fR\|]
  248. X[\-\fIL\fR\|]
  249. X[\-\fIcomments\fR\|]
  250. X.SH DESCRIPTION
  251. X\fBJgraph\fR
  252. Xtakes the description of a graph or graphs in the standard
  253. Xinput, and produces a postscript file on the standard output.  
  254. X\fBJgraph\fR
  255. Xis ideal for plotting any mixture of scatter point graphs, line
  256. Xgraphs, and/or bar graphs, and embedding the output into LaTeX, or
  257. Xany other text processing system which can read postscript.
  258. X.sp
  259. XThe graph description language is simple enough to get nice looking
  260. Xgraphs with a minimum of effort, yet powerful enough to give the user
  261. Xthe flexibility to tailor the appearance of the graph to his or her
  262. Xindividual preferences.  This includes plotting multiple graphs and
  263. Xlaying them out separately on the page (or pages).
  264. X.sp
  265. XAs an example, if the user wanted to simply plot the points (2,3),
  266. X(4,5), (1,6), the following would be enough of a specification file:
  267. X.PP
  268. X.nf
  269. X    newgraph
  270. X    newcurve pts 2 3 4 5 1 6
  271. X.fi
  272. X.PP
  273. XNow, if the user wanted to spruce the graph up by adding labels to
  274. Xthe axes, connecting the points, and titling the graph, then the
  275. Xinput could change to:
  276. X.PP
  277. X.nf
  278. X    newgraph
  279. X    newcurve pts 2 3 4 5 1 6 linetype solid
  280. X    xaxis label : X axis
  281. X    yaxis label : Y axis
  282. X    title : This is an example graph
  283. X.fi
  284. X.PP
  285. XIf the user instead wanted this to be a bar graph with different
  286. Xendpoints on the axes, he/she could simply change the input to:
  287. X.PP
  288. X.nf
  289. X    newgraph
  290. X    xaxis min 0 max 5 label : X axis
  291. X    yaxis min 0 max 6 label : Y axis
  292. X    newcurve pts 2 3 4 5 1 6 marktype xbar
  293. X    title : This is an example bar graph
  294. X.fi
  295. X.PP
  296. XThere are many more features of the description language, which are
  297. Xdescribed below in the next section.  Features which are not embedded
  298. Xwithin the description language are: line and function interpolation,
  299. Xfunction plotting, and pie graphs.  The latter is impossible to do
  300. Xwith the aid of 
  301. X\fBjgraph, \fR
  302. Xhowever, the others can be effected with
  303. X\fBjgraph \fR
  304. Xmixed with awk or c.  See 
  305. XFUNCTION PLOTTING AND OTHER NON-INHERENT FEATURES 
  306. Xbelow.
  307. X.sp
  308. XAlso below is a section 
  309. XHINTS AND EXAMPLE GRAPHS, which may give good
  310. Xideas on how to use 
  311. X\fBjgraph \fR
  312. Xmore effectively.
  313. X.SH OPTIONS
  314. X.TP
  315. X.B \-P
  316. XThe 
  317. X\fB\-P\fR
  318. Xoption produces postscript which can be piped directly to 
  319. X\fBlpr,\fR  
  320. Xwhich can be displayed in an Xwindows environment with
  321. X\fBgs\fR
  322. X(ghostscript).
  323. XWithout this option, the output should be embedded within 
  324. X\fBLaTeX\fR
  325. Xor a similar text processing system.
  326. X.TP
  327. X.B \-L
  328. XThe 
  329. X\fB\-L\fR
  330. Xoption produces a landscape plot.
  331. X.TP
  332. X.B \-p
  333. XThe 
  334. X\fB\-p\fR
  335. Xoption re-prints the input on the standard output, only
  336. Xwith all the defaults made explicit.  This is useful for letting the
  337. Xuser do his/her own special formatting, as it shows the explicit
  338. Xvalues that the defaults assume, so that they can be manipulated.
  339. X.TP
  340. X.B \-comments
  341. XThis option makes jgraph put comments into the output postscript.  These
  342. Xmake it easier for the user to wade through the final postscript if 
  343. Xnecessary. 
  344. X.SH THE DESCRIPTION LANGUAGE
  345. XThe description language is essentially keywords followed by
  346. Xattributes.  All keywords and attributes except for string attributes
  347. Xare tokens -- non-white-space characters surrounded by white-space. 
  348. XSpecial tokens are 
  349. X``(*'', ``*)'', ``include'', ``:'', and ``shell'', which denote
  350. Xcomments, include-file statements, string identifiers, and shell-include
  351. Xstatements:
  352. X.TP 
  353. X.B Comments
  354. XComments are surrounded by the tokens ``(*'' ``*)'' as in
  355. XModula-2 (except that here, the tokens must be surrounded by white-
  356. Xspace).  Comments may be nested.  If the comment runs to the end of a
  357. Xfile, the last ``*)'' may be omitted.
  358. X.TP 
  359. X.B Include\-file statements
  360. XThe token following an ``include'' token is
  361. Xexpected to be a file name.  The result of the statement is to
  362. Xinclude the contents of the file at that point.  Include-file
  363. Xstatments can be nested within included files, and within shell
  364. Xincludes.
  365. X.TP 
  366. X.B Strings
  367. XIn places where strings are required (as in graph and
  368. Xcurve labels), they are denoted by the token ``:''.  The second
  369. Xcharacter after the ``:'' starts the string, and the next newline
  370. Xcharacter terminates it.  
  371. XThus, the string ``Graph #1'' can be denoted as:
  372. X.nf
  373. X
  374. X    : Graph #1<newline>
  375. X
  376. Xor
  377. X
  378. X    :<newline>
  379. X    Graph #1<newline>
  380. X
  381. X.fi
  382. XOne can get multiline strings by making
  383. Xa backslash the last character before the newline on all but the
  384. Xlast line.  Notice that in strings white-space is not ignored.  
  385. XThis way of denoting strings allows the user to embed leading and
  386. Xtrailing spaces, as well as the null string.  For example, the
  387. Xnull string ``'' is represented by:
  388. X.nf
  389. X
  390. X    : <newline>
  391. X
  392. X.fi
  393. XOnce a string has been started, it may contain any character.
  394. XSpecifically, it may contain the sequence ``(*'', ``shell'', 
  395. Xor ``include'' without starting a comment or including a file.
  396. XEach line of a string must contain less than 1000 characters.  Otherwise
  397. Xstring sizes are limited only by the size of memory.
  398. X.TP
  399. X.B Shell\-include statements
  400. XShell include statements are of the form ``shell'', ``:'', and then
  401. Xa string.  The result of the statement is that the string is executed
  402. X(using popen, which passes the string to sh), and the standard
  403. Xoutput is included at that point.  Shell-includes can be freely
  404. Xnested within include-files and other shell-includes.  Shell 
  405. Xcommands may be more than one line, but must not exceed 1000 characters.
  406. XThe shell statement is not (yet) available on VMS.
  407. X.TP
  408. X.B Notation
  409. XIn the descriptions below: 
  410. X.RS
  411. X.TP
  412. X\fBtk \|{\fIinteger\fB\|}\fR
  413. Xmeans that token
  414. X\fBtk \fR
  415. Xmust be followed by an integer.  
  416. X.TP
  417. X\fBtk \|[\fIinteger\fB\|]\fR
  418. Xmeans that 
  419. X\fBtk\fR
  420. Xmay be followed by an integer, but doesn't have to.  In most cases, if
  421. X\fBtk\fR
  422. Xis not followed by an integer, then the command denoted by
  423. X\fBtk \fR
  424. Xis ignored.  
  425. X.TP
  426. X\fBtk \|[\|{\fIinteger\fB\|} \|{\fIinteger\fB\|}\|]*
  427. Xmeans that 
  428. X\fBtk\fR
  429. Xmust be
  430. Xfollowed by an even number of integers.  
  431. X.PD
  432. X.LP
  433. XSupported types other than
  434. Xinteger are: 
  435. X\fB\|{\fIfloat\fB\|} \fR
  436. Xfor floating point entries, 
  437. X\fB\|{\fItoken\fB\|} \fR
  438. Xfor any
  439. Xtoken, and 
  440. X\fB\|{\fIstring\fB\|} \fR
  441. Xfor a string as defined above.
  442. X.RE
  443. X.TP
  444. X.B TOP-LEVEL DESCRIPTION COMMANDS
  445. X.RS
  446. X.TP
  447. X.B newgraph
  448. XThis starts editing a new graph (see GRAPH EDITING
  449. XCOMMANDS).  Note that multiple graphs may be drawn on the same page.
  450. X.TP
  451. X\fBgraph \|{\fIinteger\fB\|}\fR
  452. XThis edits the graph denoted by 
  453. X\fB\|{\fIinteger\fB\|}.  \fR
  454. XIf the graph doesn't exist, then this command creates it and starts
  455. Xediting it.  
  456. X\fBNewgraph\fR
  457. Xis simply an abbreviation for 
  458. X\fB\fIgraph\fB \fIn\fB\fR
  459. Xwhere n=0 if this is the first graph, otherwise n=m+1, where m is the
  460. Xlargest number of any graph so far.
  461. X.TP
  462. X\fBcopygraph \|[\fIinteger\fB\|]\fR
  463. XThis creates a new graph, and copies all the attributes from the
  464. Xgraph
  465. X\fB\|[\fIinteger\fB\|]'s\fR
  466. Xx and y axes, as well as its 
  467. X\fB\fIx_translate\fB\fR
  468. Xand 
  469. X\fB\fIy_translate\fB\fR
  470. Xvalues, the clipping, the legend defaults, and 
  471. Xthe title defaults.   If the
  472. X\fB\|[\fIinteger\fB\|]\fR
  473. Xis omitted, then it copies its values from the ``previous''
  474. Xgraph, which is 
  475. Xdefined to be the graph with the largest number 
  476. Xless than the currrent graph's number.  If the current 
  477. Xgraph has the smallest number, then it will take the last graph from 
  478. Xthe previous page of graphs.  If there is no previous page, then an 
  479. Xerror will be flagged.
  480. X(copygraph does not copy the values of the 
  481. X\fB\fIhash_at\fB, \fImhash_at\fB,\fR
  482. Xand 
  483. X\fB\fI\fIhash_label\fB\fR 
  484. Xattributes). 
  485. X.TP
  486. X.B newpage
  487. XThis command is for plotting graphs on multiple pages.  After a 
  488. X\fBnewpage,\fR
  489. Xthe graphs that the user enters will be plotted on a new page.
  490. XNew graphs and strings will be numbered starting with 0.  
  491. XEssentially, 
  492. X\fB\fInewpage\fB\fR
  493. Xis the same as appending together the output of separate calls of
  494. Xjgraph on the text before the 
  495. X\fB\fInewpage,\fB\fR
  496. Xand on the text after the 
  497. X\fB\fInewpage.\fB\fR
  498. X\fB\fINewpage\fB\fR
  499. Xwill most likely produce bizarre results if the
  500. X\fB\-P\fR
  501. Xoption is not specified.
  502. X.TP
  503. X\fBX \|[\fIfloat\fB\|]\fR
  504. X.br
  505. X.ns
  506. X.TP
  507. X\fBY \|[\fIfloat\fB\|]\fR
  508. XPostscript files to be embedded in LaTeX (and some other programs)
  509. Xcontain a ``bounding box''
  510. Xwhich defines the area which LaTeX will allocate for the postscript.
  511. XOther programs use this bounding box as well, sometimes using it
  512. Xto define where to clip the postscript image.
  513. X\fBJgraph \fR
  514. Xuses the axis lines and labels, and the title to generate its 
  515. Xbounding box.  Most of the time that's good enough to work in 
  516. XLaTeX.  The 
  517. X\fB\fIY\fB\fR
  518. Xand
  519. X\fB\fIX\fB\fR
  520. Xcommands say to make the height and width of the bounding box at least
  521. X\fB\fIY\fB\fR
  522. Xand
  523. X\fB\fIX\fB\fR
  524. Xinches, respectively, but to maintain the current centering of the 
  525. Xgraph.  If you still need further control over the
  526. Xbounding box (e.g. to change the centering), try the
  527. X\fB\fIbbox\fB\fR
  528. Xcommand.  If there's more than one page in the jgraph file, 
  529. X\fB\fIY,\fB\fR
  530. X\fB\fIX\fB\fR
  531. Xand
  532. X\fB\fIbbox\fB\fR
  533. Xvalues can be given for each graph.
  534. X.TP
  535. X\fBbbox \fIfloat\fB \fIfloat\fB \fIfloat\fB \fIfloat\fB\fR
  536. XIf the 
  537. X\fB\fIY\fB\fR
  538. Xand
  539. X\fB\fIX\fB\fR
  540. Xcommands aren't enough to help you define a good bounding box, this
  541. Xcommand lets you explicitly enter one which will go directly into the 
  542. Xjgraph output.  Its units are the 
  543. Xfinal postscript units.  It's probably best to use the 
  544. X\fB\-p\FR 
  545. Xoption
  546. Xto see what the bounding box is that jgraph produces, and then
  547. Xalter that accordingly with
  548. X\fB\fIbbox.\fB\fR
  549. XThe main use for this is to change the automatic centering that jgraph
  550. Xperforms:  Usually the center of the bounding box that jgraph computes 
  551. Xis put at the center of the page.  Changing the bbox changes this 
  552. Xcenter.
  553. X.TP
  554. X\fBpreamble : \|{\fIstring\fB\|}\fR   
  555. X.br
  556. X.ns
  557. X.TP
  558. X\fBpreamble {\fItoken\fB\|}\fR   
  559. X.br
  560. X.ns
  561. X.TP
  562. X\fBepilogue : \|{\fIstring\fB\|}\fR   
  563. X.br
  564. X.ns
  565. X.TP
  566. X\fBepilogue {\fItoken\fB\|}\fR   
  567. XThese two commands allow the user to include strings or
  568. Xfiles (the token specifies the filename) which will be copied directly 
  569. Xinto jgraph's output.
  570. XThe \fIpreamble\fB is included at the beginning of the output
  571. X(after some initial postscript to set things up for jgraph), 
  572. Xand the \fIepilogue\fB is included at the end.  A good use for
  573. Xthe \fIpreamble\fB is to set up a postscript dictionary if you're
  574. Xusing postscript marks.
  575. X.PD
  576. X.RE
  577. X.LP
  578. X.TP
  579. X.B GRAPH EDITING COMMANDS
  580. XThese commands act on the current graph. 
  581. XGraph editing is terminated when one of the top-level description
  582. Xcommands is given.
  583. X.RS
  584. X.TP
  585. X\fBxaxis\fR
  586. X.br
  587. X.ns
  588. X.TP
  589. X\fByaxis\fR
  590. XEdit the x or y axis (see AXIS EDITING COMMANDS)
  591. X.TP
  592. X\fBnewcurve\fR  
  593. XThis starts editing a new curve of the graph (see CURVE
  594. XEDITING COMMANDS).
  595. X.TP
  596. X\fBcurve \|{\fIinteger\fB\|}\fR   
  597. XThis edits the curve denoted by 
  598. X\fB\|{\fIinteger\fB\|}.  \fR
  599. XIf the curve doesn't exist, then this command creates it and starts
  600. Xediting it.  
  601. X\fINewcurve\fB
  602. Xand 
  603. X\fIcurve\fB
  604. Xinteract as 
  605. X\fInewgraph\fB
  606. Xand
  607. X\fIgraph\fB
  608. Xdo.
  609. X.TP
  610. X\fBnewline\fR  
  611. XThis is an abbreviation for:
  612. X.PP
  613. X.nf
  614. X      newcurve marktype none linetype solid
  615. X.fi
  616. X.PP
  617. X.TP
  618. X\fBcopycurve \|[\fIinteger\fB\|]\fR
  619. XThis starts editing a new curve of the graph, and copies all its 
  620. Xvalues except for the points from curve 
  621. X\fB\|[\fIinteger.\fB\|]\fR
  622. XIf the 
  623. X\fB\|[\fIinteger\fB\|]\fR
  624. Xis omitted, then it copies its values from the 
  625. Xlast curve in this graph.  If this graph currently has
  626. Xno curves, then it searches backwards from the previous graph.
  627. X.TP
  628. X\fBtitle\fR   
  629. XThis edits the title of the graph (see LABEL EDITING
  630. XCOMMANDS).  The title is given a default location centered beneath
  631. Xthe graph, and a default font size of 12, however, as with all
  632. Xlabels, this can be changed.
  633. X.TP
  634. X\fBlegend\fR   
  635. XThe edits the legend of the graph (see LEGEND EDITING
  636. XCOMMANDS).  As a default, the graph will contain a legend
  637. Xif any of its curves have labels.
  638. X.TP
  639. X\fBnewstring\fR   
  640. XThis edits a new text string (see LABEL EDITING
  641. XCOMMANDS).  This is useful as it allows the user to plot text on the
  642. Xgraph as well as curves.
  643. X.TP
  644. X\fBstring \|{\fIinteger\fB\|}\fR   
  645. X.br
  646. X.ns
  647. X.TP
  648. X\fBcopystring \|[\fIinteger\fB\|]\fR
  649. X\fIString\fB
  650. Xand
  651. X\fIcopystring\fB
  652. Xare to 
  653. X\fInewstring\fB
  654. Xas
  655. X\fIcurve\fB
  656. Xand
  657. X\fIcopycurve\fB
  658. Xare to
  659. X\fInewcurve.\fB
  660. X.TP
  661. X\fBborder\fR
  662. X.br
  663. X.ns
  664. X.TP
  665. X\fBnoborder\fR
  666. X\fIBorder\fR\fB
  667. Xdraws a square border around the area defined by the axes.
  668. X\fINoborder\fB
  669. Xspecifies no border.
  670. X\fINoborder\fB
  671. Xis the default.  
  672. X.TP
  673. X\fBclip\fR
  674. X.br
  675. X.ns
  676. X.TP
  677. X\fBnoclip\fR
  678. X\fIClip\fB
  679. Xspecifies that all curves in the graph will be clipped -- that is,
  680. Xno points outside of the of axes will be plotted.  Clipping can also be
  681. Xspecified on a per-curve basis.  The default is
  682. X\fInoclip.\fB
  683. X.TP
  684. X\fBinherit_axes\fR   
  685. XThis is an old command which is kept for backward compatibility.
  686. X\fICopycurve.\fB
  687. Xis equivalent to:
  688. X.PP
  689. X.nf
  690. X      newgraph inherit_axes
  691. X.fi
  692. X.PP
  693. X.TP
  694. X\fBx_translate \|[\fIfloat\fB\|]\fR   
  695. X.br
  696. X.ns
  697. X.TP
  698. X\fBy_translate \|[\fIfloat\fB\|]\fR   
  699. XBy default, the bottom left-hand corner of each graph is at point
  700. X(0,0) (final postscript units).
  701. X\fIX_translate\fB
  702. Xand
  703. X\fIY_translate\fB
  704. Xtranslate the bottom left-hand corner of the graph 
  705. X\fB\|[\fIfloat\fB\|] \fR
  706. Xinches.  The main use of this is to draw more than one graph on 
  707. Xa page.  Note that jgraph considers all the graphs drawn on the
  708. Xpage when it computes its bounding box for centering.  Thus, if
  709. Xonly one graph is drawn, it will always be centered on the page, 
  710. Xregardless of its 
  711. X\fIX_translate\fB
  712. Xand
  713. X\fIY_translate\fB
  714. Xvalues.  These values are used for relative placement of the graphs.
  715. X   To change the centering of the graphs, use
  716. X\fIbbox.\fB
  717. X.TP
  718. X\fBX \|[\fIfloat\fB\|]\fR
  719. X.br
  720. X.ns
  721. X.TP
  722. X\fBY \|[\fIfloat\fB\|]\fR   
  723. XThese are the same as 
  724. X\fIX\fB
  725. Xand 
  726. X\fIY\fB
  727. Xin the
  728. XTop-level commands, except that they let the user continue editing
  729. Xthe current graph.
  730. X.PD
  731. X.RE
  732. X.LP
  733. X.TP
  734. X.B SIMPLE AXIS EDITING COMMANDS
  735. XThese commands act on the current
  736. Xaxis as chosen by 
  737. X\fIxaxis\fB
  738. Xor
  739. X\fIyaxis\fB
  740. X(see GRAPH EDITING COMMANDS). 
  741. XAxis editing terminates when a graph or top-level command is given. 
  742. XThere are more advanced axis editing commands given below which have
  743. Xto do with moving the hash marks, adding new hash marks and labels,
  744. Xetc.  See ADVANCED AXIS EDITING COMMANDS.
  745. X.RS
  746. X.TP
  747. X\fBlinear\fR
  748. X.br
  749. X.ns
  750. X.TP
  751. X.B log
  752. XSet the axis to be linear or logarithmic. The
  753. Xdefault is linear.  If the axis is set to be logarithmic, then values
  754. X<= 0.0 will be disallowed, as they are at negative infinity on the
  755. Xaxis.
  756. X.TP
  757. X\fBmin \|[\fIfloat\fB\|]\fR
  758. X.br
  759. X.ns
  760. X.TP
  761. X\fBmax \|[\fIfloat\fB\|]\fR   
  762. XSet the minimum and maximum values of
  763. Xthis axis.  Defaults depend on the points given.  They can be seen by
  764. Xusing the 
  765. X\fB\-p \fR
  766. Xoption.  Unless stated, all units (for example point
  767. Xplotting, string plotting, etc.) will be in terms of the
  768. X\fImin\fB
  769. Xand
  770. X\fImax\fB
  771. Xvalues of the x and y axes.
  772. X.TP
  773. X\fBsize \|[\fIfloat\fB\|]\fR   
  774. XSet the size of this axis in inches.
  775. X.TP
  776. X\fBlog_base \|[\fIfloat\fB\|]\fR   
  777. XSet the base of the logarithmic axis. Default =
  778. X10.  This is the value which determines which hash
  779. Xmarks and hash labels are automatically produced.
  780. X.TP
  781. X\fBhash \|[\fIfloat\fB\|]\fR   
  782. XHash marks will be 
  783. X\fB\|[\fIfloat\fB\|] \fR
  784. Xunits apart.  Default = -1.  
  785. XIf this value equals 0, then there will be no hash marks.  If
  786. Xthis value is less than 0, then the hash marks will be automatically
  787. Xset by 
  788. X\fBjgraph \fR
  789. X(see 
  790. X\fB\-p \fR
  791. Xfor the value).  By default, each hash mark
  792. Xwill be labeled with its value.  
  793. X\fIHash\fB
  794. Xand 
  795. X\fIshash\fB
  796. Xare ignored if
  797. Xthe axes are logarithmic.
  798. X.TP
  799. X\fBshash \|[\fIfloat\fB\|]\fR   
  800. XMake sure there is a hash mark at the point
  801. X\fB\|[\fIfloat\fB\|] \fR
  802. Xalong the axis.  The default is set by 
  803. X\fBjgraph\fR
  804. Xif
  805. X\fBhash\fR
  806. X= -1.
  807. XIf 
  808. X\fIhash\fB
  809. Xis set by the user, 
  810. X\fIshash\fB
  811. Xis defaulted to the
  812. X\fImin\fB
  813. Xvalue of the axis.
  814. X.TP
  815. X\fBmhash \|[\fIinteger\fB\|]\fR   
  816. XPut 
  817. X\fB\|[\fIinteger\fB\|] \fR
  818. Xminor hash marks between the above
  819. Xhash marks.  Default = -1.  If this value equals 0, then there will
  820. Xbe no minor hash marks.  If this value is negative, then the value
  821. Xwill be chosen by 
  822. X\fBjgraph \fR
  823. X(see 
  824. X\fB\-p\fR
  825. Xfor the value).
  826. X.TP
  827. X\fBprecision \|[\fIinteger\fB\|]\fR   
  828. XMake the label have 
  829. X\fB\|[\fIinteger\fB\|] \fR
  830. Xdigits after
  831. Xthe decimal point.  Default = -1.  If this value is negative, then
  832. X\fBjgraph \fR
  833. Xwill choose one.
  834. X.TP
  835. X\fBlabel\fR   
  836. XEdit the label of this axis (see LABEL EDITING COMMANDS). 
  837. XBy default, the label is in font ``Times-Bold'', and has a font size of
  838. X10.  If the user doesn't change any of the plotting attributes of the
  839. Xlabel, 
  840. X\fBjgraph \fR
  841. Xchooses an appropriate place for the axis label.
  842. X.TP
  843. X\fBdraw_at \|[\fIfloat\fB\|]\fR   
  844. XDraw the axis line at this point on the other axis. 
  845. XThe default is usually the other axis's 
  846. X\fImin, \fB
  847. Xhowever if 
  848. X\fIhash_scale \fB
  849. Xis positive (see 
  850. X\fIhash_scale \fB
  851. Xunder ADVANCED AXIS EDITING), it will be
  852. Xthe other axis's 
  853. X\fImax.\fB
  854. X.TP
  855. X\fBnodraw\fR   
  856. XDo not draw the axis, the hash marks or any labels.  This
  857. Xis useful for plotting points with no axes, and for overlaying graphs
  858. Xon top of one another with no clashes.  This is equivalent to
  859. X\fIno_draw_axis,\fB
  860. X\fIno_draw_axis_label,\fB
  861. X\fIno_draw_hash_marks,\fB
  862. Xand
  863. X\fIno_draw_hash_labels.\fB
  864. X.TP
  865. X\fBdraw\fR   
  866. XCancels the effect of 
  867. X\fInodraw.  \fB
  868. XDefault = 
  869. X\fIdraw.\fB
  870. XThis is
  871. Xequivalent to 
  872. X\fIdraw_axis,\fB
  873. X\fIdraw_axis_label,\fB
  874. X\fIdraw_hash_marks,\fB
  875. Xand 
  876. X\fIdraw_hash_labels.\fB
  877. X.TP
  878. X\fBgrid_lines\fR
  879. X.br
  880. X.ns
  881. X.TP
  882. X\fBno_grid_lines\fR
  883. X\fIGrid_lines\fB
  884. Xspecifies to plot a grid line at each major hash
  885. Xmark on this axis.  The default is 
  886. X\fIno_grid_lines.\fB
  887. X.TP
  888. X\fBmgrid_lines\fR
  889. X.br
  890. X.ns
  891. X.TP
  892. X\fBno_mgrid_lines\fR
  893. X\fIMgrid_lines\fB
  894. Xspecifies to plot a grid line at each minor hash
  895. Xmark on this axis.  The default is 
  896. X\fIno_mgrid_lines.\fB
  897. X.PD
  898. X.RE
  899. X.LP
  900. X.TP
  901. X.B CURVE EDITING COMMANDS 
  902. XThese commands act on the current curve as
  903. Xchosen by 
  904. X\fInewcurve\fB
  905. Xor 
  906. X\fIcurve\fB
  907. X(see GRAPH EDITING COMMANDS).  Curve
  908. Xediting terminates when a graph or top-level command is given.
  909. X.RS
  910. X.TP
  911. X\fBpts \|[\|{\fIfloat\fB\|} \|{\fIfloat\fB\|}\|]*\fR   
  912. XThis sets the points to plot in this
  913. Xcurve.  The first 
  914. X\fIfloat\fB
  915. Xis the x value, and the second 
  916. X\fIfloat\fB
  917. Xis the y
  918. Xvalue of the point.  Points are plotted in the order specified.
  919. XThis command stops reading points when a non-float is given.
  920. XThe user can specify this command multiple times within a curve -- 
  921. Xeach time, simply more points are added to the curve.
  922. X.TP
  923. X\fBx_epts \|[\|{\fIfloat\fB\|} \|{\fIfloat\fB\|} \|{\fIfloat\fB\|} \|{\fIfloat\fB\|}\|]*\fR   
  924. X.br
  925. X.ns
  926. X.TP
  927. X\fBy_epts \|[\|{\fIfloat\fB\|} \|{\fIfloat\fB\|} \|{\fIfloat\fB\|} \|{\fIfloat\fB\|}\|]*\fR   
  928. XThis allows the user to specify points and ``confidence values'' (otherwise
  929. Xknown as ``error bars'').  The first two 
  930. X\fIfloats\fB
  931. Xspecify the x and y values of
  932. Xthe point, as above.  If
  933. X\fBx_epts\fR
  934. Xis specified,  then the second two
  935. X\fIfloats\fB
  936. Xspecify range or confidence values
  937. Xfor the x value of the point.  
  938. XError bars will be printed to each of these x values (using the 
  939. Xoriginal point's y value)
  940. Xfrom the original point.  Similarly,
  941. X\fIy_epts\fB
  942. Xspecifies range or confidence values for the y value of the point.
  943. X\fIpts\fB
  944. X\fIx_epts\fB
  945. Xand
  946. X\fIy_epts\fB
  947. Xcan all be intermixed. 
  948. X.TP
  949. X\fBmarktype\fR   
  950. XThis sets the kind of mark that is plotted for this curve.  Valid
  951. Xmarks are: \fIcircle\fR, \fIbox\fR, \fIdiamond\fR, \fItriangle\fR,
  952. X\fIx\fR, \fIcross\fR, \fIellipse\fR, \fIxbar\fR, \fIybar\fR,
  953. X\fItext\fR, \fIpostscript\fR, \fInone\fR, and variants of
  954. X\fIgeneral\fR.  Most of these are self-explanatory, except for the
  955. Xlast few: 
  956. X  \fIXbar\fR makes the curve into a bar graph with the bars going
  957. Xto the x axis.  \fIYbar\fR has the bars going to the y axis. 
  958. X  \fIText\fR lets the user plot text instead of a mark.  The text is 
  959. Xeditted as a label (see LABEL EDITING COMMANDS) immediately following
  960. Xthe \fItext\fR command.  The x and y fields of the label have special
  961. Xmeanings here:  They define where the label is to be printed in relation
  962. Xto the curve points.  For example, if they are both 0, the label will
  963. Xbe printed directly on the curve points.  If x is 1.0 and y is -1.0, then
  964. Xthe label will be printed one unit to the right and one unit below the
  965. Xcurve points (units are units of the x and y axes).
  966. XDefault label values are 0 for x and y, and center justification.
  967. X  \fIPostscript:\fR See the \fIpostscript\fB token below.
  968. X  \fINone\fR means that no mark will be
  969. Xplotted (this is useful for drawing lines).  
  970. X  There are four types of \fIgeneral\fR marks, which work using the 
  971. X\fIgmarks\fB command described below.  The four marktypes are 
  972. X\fIgeneral\fR, \fIgeneral_nf\fR, \fIgeneral_bez\fR, and 
  973. X\fIgeneral_bez_nf\fR.
  974. X  By default, a new mark is chosen for each curve.
  975. X.TP
  976. X\fBmarksize \|[\fIfloat\fB\|] \|[\fIfloat\fB\|]\fR   
  977. XThis sets the size of the mark.  The
  978. Xfirst 
  979. X\fB\|[\fIfloat\fB\|] \fR
  980. Xis the width of the mark, and the second is the height. 
  981. XUnits are those of the x and y axes respectively, unless that axis is
  982. Xlogarithmic, in which case the units are inches.  Negative marksizes
  983. Xare allowed (e.g.  a negative height will flip a \fItriangle\fR mark). 
  984. XThe default mark size can be determined using the 
  985. X\fB\-p\fR
  986. Xoption of
  987. X\fBjgraph\fR
  988. X.TP
  989. X\fBmrotate \|[\fIfloat\fB\|]\fR
  990. XThis allows the user to rotate the mark
  991. X\fB\|[\fIfloat\fB\|] \fR
  992. Xdegrees.  Default is zero.
  993. X.TP
  994. X\fBgray \|[\fIfloat\fB\|]\fR
  995. X.br
  996. X.ns
  997. X.TP
  998. X\fBcolor \|[\fIfloat\fB \fIfloat\fB \fIfloat\fB\|]\fR   
  999. XThese specify either the grayness of the curve or its color.  Values 
  1000. Xfor 
  1001. X\fIgray\fR
  1002. Xshould be from 0 (black) to 1 (white).  Values for
  1003. X\fIcolor\fR\fB
  1004. Xshould also be from 0 to 1.  They are RGB values, and thus define the 
  1005. Xamount of red, green and blue in the curve respectively.  Specifying
  1006. Xcolor nullifies the gray value, and vice versa.  The default is 
  1007. X\fIgray 0\fB
  1008. X.TP
  1009. X\fBfill \|[\fIfloat\fB\|]\fR   
  1010. X.br
  1011. X.ns
  1012. X.TP
  1013. X\fBcfill \|[\fIfloat\fB\| \|\fIfloat\fB\| \|\fIfloat\fB\|]\fR   
  1014. XThis sets the filling of marks which define an area
  1015. Xto fill (e.g.  \fIbox\fR, \fIcircle\fR, \fIxbar\fR).  
  1016. X\fIfill\fB
  1017. Xdefines a gray value, and 
  1018. X\fIcfill\fB
  1019. Xdefines a color value (see 
  1020. X\fIgray\fB
  1021. Xand
  1022. X\fIcolor\fB
  1023. Xabove for a description of the units).
  1024. XThe default is 
  1025. X\fIfill 0\fB
  1026. X(black).
  1027. X.TP
  1028. X\fBpoly\fR
  1029. X.br
  1030. X.ns
  1031. X.TP
  1032. X\fBnopoly\fR
  1033. X.br
  1034. X.ns
  1035. X.TP
  1036. X\fBpfill \|[\fIfloat\fB\|]\fR   
  1037. X.br
  1038. X.ns
  1039. X.TP
  1040. X\fBpcfill \|[\fIfloat\fB\| \|\fIfloat\fB\| \|\fIfloat\fB\|]\fR   
  1041. X\fIPoly\fB allows the user to make jgraph treat the curve as a 
  1042. Xclosed polygon (or in the case of a bezier, a closed bezier curve).
  1043. X\fIpfill\fB and \fIpcfill\fB specify the filling of the polygon,
  1044. Xand work like \fIfill\fB and \fIcfill\fB above.  The default is
  1045. X\fInopoly\fB.
  1046. X.TP
  1047. X\fBgmarks \|[\|{\fIfloat\fB\|} \|{\fIfloat\fB\|}\|]*\fR   
  1048. X\fIGmarks\fB
  1049. Xis a way for the user to define custom marks.  For each mark on 
  1050. X\fI(x,y),\fB
  1051. XEach pair of 
  1052. X\fB\|{\fIfloat_x\fB\|}, \|{\fIfloat_y\fB\|}, \fR
  1053. Xwill define a point on the mark (x + 
  1054. X\fB(\fIfloat_x\fB * \fImarksize_x\fB / 2), y + (\fIfloat_y\fB * \fImarksize_y\fB / 2)).\fR
  1055. X  Thus, for example, the
  1056. X\fIbox\fR mark could be defined as 
  1057. X.PP
  1058. X.nf
  1059. X    gmarks -1 -1 -1 1 1 1 1 -1
  1060. X    marktype general
  1061. X.fi
  1062. X.PP
  1063. XThe marktypes \fIgeneral\fR, \fIgeneral_nf\fR, \fIgeneral_bez\fR,
  1064. Xand \fIgeneral_bez_nf\fR, allow the gmarks points to define
  1065. Xa closed polygon, a line, a closed bezier curve and a 
  1066. Xregular bezier curve respectively (the ``nf'' stands for
  1067. X``non-filled'').
  1068. X.TP
  1069. X\fBpostscript : \|{\fIstring\fB\|}\fR   
  1070. X.br
  1071. X.ns
  1072. X.TP
  1073. X\fBpostscript {\fItoken\fB\|}\fR   
  1074. XThis allows the user to enter direct postscript as a mark.  It 
  1075. Xautomatically sets the marktype to \fIpostscript\fR.  If a string is
  1076. Xentered, then that string is used as the mark in the jgraph output.
  1077. XIf a token is entered, then that token must stand for a filename, which
  1078. Xwill be copied to the output once for every mark.  The postscript will
  1079. Xbe set up so that when the string or file is put to the output, (0, 0) of
  1080. Xthe the axes is in the middle of the mark, it is rotated by
  1081. X\fImrotate\fB degrees, and scaled by 
  1082. X(\fImarksize_x\fB / 2), \fImarksize_y\fB / 2).
  1083. XThus, the \fIbox\fR mark could be defined as:
  1084. X.PP
  1085. X.nf
  1086. X    postscript : 1 setlinewidth -1 -1 moveto -1 1 lineto \\
  1087. X                  1 1 lineto 1 -1 lineto -1 -1 lineto stroke
  1088. X.fi
  1089. X.PP
  1090. X.TP
  1091. X\fBlarrows\fR
  1092. X.br
  1093. X.ns
  1094. X.TP
  1095. X\fBrarrows\fR
  1096. X.br
  1097. X.ns
  1098. X.TP
  1099. X\fBnolarrows\fR
  1100. X.br
  1101. X.ns
  1102. X.TP
  1103. X\fBnorarrows\fR
  1104. X\fIRarrows\fB
  1105. Xspecifies to draw an arrow at the end of every line
  1106. Xsegment in the curve.  
  1107. X\fILarrows\fB
  1108. Xspecifies to draw an arrow at the beginning of every line segment.
  1109. XThe size of the arrows can be changed by using
  1110. X\fIasize.\fB
  1111. XThe default is
  1112. X\fInolarrows\fB
  1113. Xand
  1114. X\fInorarrows\fB.
  1115. X  Arrows always go exactly to the point specified, with the exception 
  1116. Xof when the marktype is ``circle''.  In this case, the arrow goes to
  1117. Xthe edge of the circle.
  1118. X.TP
  1119. X\fBlarrow\fR
  1120. X.br
  1121. X.ns
  1122. X.TP
  1123. X\fBrarrow\fR
  1124. X.br
  1125. X.ns
  1126. X.TP
  1127. X\fBnolarrow\fR
  1128. X.br
  1129. X.ns
  1130. X.TP
  1131. X\fBnorarrow\fR
  1132. XThis is analgous to the above, except that with \fIlarrow\fB, the
  1133. Xonly arrow drawn is to the beginning of the first segment in the
  1134. Xcurve, and with \fIrarrow\fB, the only arrow drawn is to the end
  1135. Xof the last segment.
  1136. X.TP
  1137. X\fBasize \|[\fIfloat\fB\|] \|[\fIfloat\fB\|]\fR   
  1138. XThis sets the size of the arrows.  The first 
  1139. X\fB\|[\fIfloat\fB\|] \fR
  1140. Xcontrols the arrow's width.  Its units are those of the x-axis.
  1141. XThe second
  1142. X\fB\|[\fIfloat\fB\|] \fR
  1143. Xcontrols the arrow's height.  It is in the units of the y-axis.
  1144. XUse the -p option of jgraph to see the default values.
  1145. X.TP
  1146. X\fBafill \|[\fIfloat\fB\|]\fR
  1147. X.br
  1148. X.ns
  1149. X.TP
  1150. X\fBacfill \|[\fIfloat\fB\| \|\fIfloat\fB\| \|\fIfloat\fB\|]\fR
  1151. XThese control the grayness or color of arrowheads.  
  1152. X\fIAfill\fB
  1153. Xand
  1154. X\fIacfill\fB
  1155. Xwork in the same way as 
  1156. X\fIfill\fB
  1157. Xand
  1158. X\fIcfill\fB
  1159. Xdescribed above.  The default is
  1160. X\fIafill 0\fB
  1161. X(black).
  1162. X.TP
  1163. X\fBlinetype \|[\fItoken\fB\|]\fR   
  1164. XThis defines the type of the line connecting the points.  Valid
  1165. Xentries are \fIsolid\fR, \fIdotted\fR, \fIdashed\fR, \fIlongdash\fR,
  1166. X\fIdotdash\fR, \fIdotdotdash\fR, \fIdotdotdashdash\fR, \fIgeneral\fR, and
  1167. X\fInone\fR.  The default is \fInone\fR.  \fIGeneral\fR lets the user define
  1168. Xhis own linetype using the
  1169. X\fIglines\fB
  1170. Xcommand described below.  Points are connected in the
  1171. Xorder in which they are inserted using the 
  1172. X\fIpts\fB
  1173. Xcommand.
  1174. X.TP
  1175. X\fBglines \|[\fIfloat\fB\|]*\fR   
  1176. XThis lets the user specify the exact dashing of a line.  The format
  1177. Xis as in postscript -- the first number is the length of the first
  1178. Xdash, the second is the length of the space after the first dash,
  1179. Xetc.  For example, \fIdotdash\fB could be defined as ``\fIglines\fB 5 3
  1180. X1 3''.  
  1181. X.TP
  1182. X\fBlinethickness \|[\fIfloat\fB\|]\fR   
  1183. XThis defines the line thickness (in
  1184. Xabsolute postscript units) of the connecting line.  Default = 1.0.
  1185. X.TP
  1186. X\fBbezier\fR
  1187. X.br
  1188. X.ns
  1189. X.TP
  1190. X\fBnobezier\fR
  1191. X.br
  1192. X.ns
  1193. X\fIBezier\fB
  1194. Xspecifies to use the curve's points to define successive bezier curves.
  1195. XThe first point is the starting point.  The next two are control points
  1196. Xfor the bezier curve and the next point is the ending point.  If there
  1197. Xis another bezier, this ending point is also the beginning point of the 
  1198. Xnext curve.  The next two points are again control points, and the next
  1199. Xpoint is the ending point.  Thus, a bezier must have a total of (3n + 1)
  1200. Xpoints, where n is at least 1.
  1201. X  In bezier curves, marks and arrows only apply to every third point.
  1202. X\fINobezier\fB is the default.
  1203. X
  1204. X.TP
  1205. X\fBclip\fR
  1206. XThis specifies that this curve will be clipped -- that is,
  1207. Xno points outside of the of axes will be plotted.  
  1208. X.TP
  1209. X\fBnoclip\fR
  1210. XThis turns off clipping.  If clipping was specified for the 
  1211. Xentire graph, then 
  1212. X\fInoclip\fB
  1213. Xhas no effect.
  1214. X\fINoclip\fB
  1215. Xis the default.
  1216. X.TP
  1217. X\fBlabel\fR   
  1218. XThis edits the label of this curve for the purposed of
  1219. Xdrawing a legend.  (see LABEL EDITING COMMANDS and LEGEND EDITING
  1220. XCOMMANDS).  Unless the legend entry is 
  1221. X\fIcustom\fB,
  1222. Xsetting any label attribute except for the text itself
  1223. Xwill have no effect.
  1224. X.PD
  1225. X.RE
  1226. X.LP
  1227. X.TP
  1228. X.B LABEL EDITING COMMANDS
  1229. XThe following commands are used for editing
  1230. Xlabels.  Unless stated otherwise, the defaults are written with each
  1231. Xcommand.  Label editing terminates when one of these tokens is not
  1232. Xgiven.
  1233. X.RS
  1234. X.TP
  1235. X\fB: \|{\fIstring\fB\|}\fR   
  1236. XThis sets the string of the label.  If no string is
  1237. Xset, the label will not be printed.
  1238. X.TP
  1239. X\fBx \|[\fIfloat\fB\|]\fR
  1240. X.br
  1241. X.ns
  1242. X.TP
  1243. X\fBy \|[\fIfloat\fB\|]\fR   
  1244. XThis sets the x or y coordinate of the
  1245. Xlabel.  Units are the units of the x and y axes respectively.
  1246. X.TP
  1247. X\fBfont \|[\fItoken\fB\|]\fR   
  1248. XThis sets the font.  Default is usually ``Times-Roman''.
  1249. X.TP
  1250. X\fBfontsize \|[\fIfloat\fB\|]\fR   
  1251. XThis sets the fontsize in points.  Default is usually 9.
  1252. X.TP
  1253. X\fBlinesep \|[\fIfloat\fB\|]\fR   
  1254. XThis sets the distance between lines in multilined labels.  Units are points.
  1255. XThe default is the fontsize.
  1256. X.TP
  1257. X\fBhjl\fR
  1258. X.br
  1259. X.ns
  1260. X.TP
  1261. X\fBhjc\fR
  1262. X.br
  1263. X.ns
  1264. X.TP
  1265. X\fBhjr\fR   
  1266. XThese set the horizontal justification to left,
  1267. Xcenter, and right, respectively.  Default = 
  1268. X\fIhjc.\fB
  1269. X.TP
  1270. X\fBvjt\fR
  1271. X.br
  1272. X.ns
  1273. X.TP
  1274. X\fBvjc\fR
  1275. X.br
  1276. X.ns
  1277. X.TP
  1278. X\fBvjb\fR   
  1279. XThese set the vertical justification to top
  1280. Xcenter, and bottom, respectively.  Default = 
  1281. X\fIvjb.\fB
  1282. X.TP
  1283. X\fBrotate \|[\fIfloat\fB\|]\fR   
  1284. XThis will rotate the string 
  1285. X\fB\|[\fIfloat\fB\|] \fR
  1286. Xdegrees.  The point of rotation is defined by the
  1287. X\fIvj\fB
  1288. Xand 
  1289. X\fIhj\fB
  1290. Xcommands.  For example, to rotate 90 degrees about the center of a string, 
  1291. Xone would use
  1292. X\fIvjc hjc rotate 90.\fB
  1293. X.TP
  1294. X\fBlgray \|[\fIfloat\fB\|]\fR
  1295. X.br
  1296. X.ns
  1297. X.TP
  1298. X\fBlcolor \|[\fIfloat\fB \fIfloat\fB \fIfloat\fB\|]\fR
  1299. XThese control the color or the grayness of the label.  It works just as
  1300. X\fIgray\fB
  1301. Xand
  1302. X\fIcolor\fB
  1303. Xdo for curves and axes.  The default depends on the context.  For example,
  1304. Xfor strings and the title, the default is black.  For axis labels and hash
  1305. Xlabels, the default is the color of the axis.  For text as marks, the
  1306. Xdefault is the curve color.
  1307. X.PD
  1308. X.RE
  1309. X.LP
  1310. X.TP
  1311. X.B LEGEND EDITING COMMANDS
  1312. XThese commands allow the user to alter the
  1313. Xappearance of the legend.  Legends are printed out for each curve
  1314. Xhaving a non-null label.  The legend entries are printed out 
  1315. Xin the order of ascending curve numbers.
  1316. XLegend editing terminates when a graph command or top level command
  1317. Xis issued.
  1318. X
  1319. XIn earlier versions of jgraph (before version 8.0), the 
  1320. Xcharacteristics of each legend entry were set in the label portion
  1321. Xof the entry's curve.  Thus, for example, if you wanted each entry's
  1322. Xfontsize to be 18, you had to set it in each entry's curve.  Now,
  1323. Xdefault legend entry characteristics are set using the 
  1324. X\fIdefaults\fB
  1325. Xkeyword.  Unless a
  1326. X\fIcustom\fB
  1327. Xlegend is specified, these default values override any values set in 
  1328. Xthe entry's curve.  Thus, to get all entries to have a fontsize of
  1329. X18, it must be set using 
  1330. X\fIdefaults fontsize 18.\fB
  1331. X
  1332. XIf legend editing seems cryptic, try the following example:
  1333. X.PP
  1334. X.nf
  1335. X    newgraph
  1336. X    newcurve marktype box linetype solid label : Solid box
  1337. X          pts 0 0 1 1 2 1 3 1
  1338. X    newcurve marktype circle linetype dotted label : Dotted circle
  1339. X          pts 0 1 1 2 2 2 3 2
  1340. X    newcurve marktype x linetype dashed label : Dashed x
  1341. X          pts 0 2 1 3 2 3 3 3
  1342. X        legend defaults 
  1343. X          font Times-Italic fontsize 14 x 1.5 y 3.5 hjc vjb
  1344. X.fi
  1345. X.PP
  1346. XThe legend of this graph should be centered over the top of the graph,
  1347. Xand all legend entries should be 14pt Times-Italic.
  1348. X.RS
  1349. X.TP
  1350. X\fBon\fR
  1351. X.br
  1352. X.ns
  1353. X.TP
  1354. X\fBoff\R
  1355. XThese turn printing of the legend on and off.  The default is on
  1356. X(but, of course, if there are no curve labels defined, there will
  1357. Xbe no legend).
  1358. X.TP
  1359. X\fBlinelength \|[\fIfloat\fB\|]\fR   
  1360. XThis sets the length of the line printed in
  1361. Xfront of legend entries corresponding to curves which have lines. 
  1362. XUnits are those of the x axis, unless the x axis is logarithmic, in
  1363. Xwhich case the units are inches.  The default may be gotten using the
  1364. X\fB\-p\fR
  1365. Xoption.
  1366. X.TP
  1367. X\fBlinebreak \|[\fIfloat\fB\|]\fR   
  1368. XThis sets the vertical distance between
  1369. Xindividual legend entries.  Units are those of the y axis, unless the
  1370. Xy axis is logarithmic, in which case the units are inches.  The
  1371. Xdefault may be gotten using the 
  1372. X\fB\-p\fR
  1373. Xoption.
  1374. X.TP
  1375. X\fBmidspace \|[\fIfloat\fB\|]\fR   
  1376. XThis sets one of two things.  If any of the
  1377. Xlegend entries have lines in them, then this sets the distance
  1378. Xbetween the end of the line and the legend entry text.  Otherwise,
  1379. Xthis sets the distance between center of the mark and the legend
  1380. Xentry text.  Units are those of the x axis, unless the x axis is
  1381. Xlogarithmic, in which case the units are inches.  The default may be
  1382. Xgotten using the 
  1383. X\fB\-p\fR
  1384. Xoption.
  1385. X.TP
  1386. X\fBdefaults\fR
  1387. XThis lets the user change the attributes of all legend entries.
  1388. XThe defaults are editted as a label (see LABEL EDITING COMMANDS).
  1389. XA few of the label fields have special meanings:  The \fI:\fR field
  1390. Xis ignored.  The \fIx\fR and \fIy\fR fields define where the label
  1391. Xwill be printed.  The \fIhj\fR and \fIvj\fR fields define the justification
  1392. Xof the legend about the \fIx\fR and \fIy\fR point.  Thus, if \fIx\fR is 10
  1393. Xand \fIy\fR is 15, and \fIhjc  vjb\fR are specified, then the legend will
  1394. Xbe centered horizontally about x=10, and the bottom of the legend
  1395. Xwill be placed on y=15.  This is analagous to label plotting.
  1396. XThe \fIrotate\fR field is also analagous to label plotting.
  1397. X
  1398. XDefaults are as follows.  \fIRotate\fR is 0.  \fIfont\fR is ``Times-Roman''
  1399. Xand \fIfontsize\fR is 9.  The color is black.  Default justification is
  1400. X\fIhjl\fR and \fIvjc\fR.  The default \fIx\fR and \fIy\fR values are set 
  1401. Xaccording to the \fIhj\fR and \fIvj\fR fields.  See the 
  1402. X\fB\-p\fR
  1403. Xoption.
  1404. X.TP
  1405. X\fBleft\fR   
  1406. X.br
  1407. X.ns
  1408. X.TP
  1409. X\fIright\fB
  1410. XThese will automatically produce a legend to the left or
  1411. Xthe right of the graph.  
  1412. X\fILeft\fB
  1413. Xis equivalent to 
  1414. X\fIdefaults hjr vjc\fB
  1415. Xand
  1416. X\fIright\fB
  1417. Xis equivalent to 
  1418. X\fIdefaults hjl vjc.\fB
  1419. X.TP
  1420. X\fBtop\fR   
  1421. X.br
  1422. X.ns
  1423. X.TP
  1424. X\fBbottom\fR
  1425. XThese will automatically produce a legend on the top or
  1426. Xthe bottom of the graph.  
  1427. X\fITop\fB
  1428. Xis equivalent to 
  1429. X\fIdefaults hjl vjb\fB
  1430. X and
  1431. X\fIbottom\fB
  1432. Xis equivalent to
  1433. X\fIdefaults hjl vjt.\fB
  1434. X.TP
  1435. X\fBx \|[\fIfloat\fB\|]\fR
  1436. X.br
  1437. X.ns
  1438. X.TP
  1439. X\fBy \|[\fIfloat\fB\|]\fR   
  1440. XThese are included mainly for backward compatability to earlier
  1441. Xversions of jgraph.  Setting 
  1442. X\fIx\fB
  1443. Xand 
  1444. X\fIy\fB
  1445. Xis equivalent to ``defaults x 
  1446. X\fIfloat\fB
  1447. Xy
  1448. X\fIfloat\fB
  1449. Xhjl vjt''
  1450. X.TP
  1451. X\fBcustom\fR   
  1452. XThis lets the user control where each individual legend
  1453. Xentry goes.  The values of the 
  1454. X\fIdefaults\fB
  1455. Xfields are ignored, and instead, the values of the curve's
  1456. Xlabels are used.  All justifications have defined results, except 
  1457. Xfor 
  1458. X\fIhjc\fB.
  1459. XSimilarly, rotation other than 0 is likely to produce bad effects.
  1460. X.PD
  1461. X.RE
  1462. X.LP
  1463. X.TP
  1464. X.B ADVANCED AXIS EDITING 
  1465. XThese are more advanced commands for
  1466. Xediting an axis.  This includes drawing explicit hash marks and
  1467. Xlabels, moving the hash marks, axes, and labels, not drawing the hash
  1468. Xmarks, labels, axes, etc.
  1469. X.RS
  1470. X.TP
  1471. X\fBgray \|[\fIfloat\fB\|]\fR
  1472. X.br
  1473. X.ns
  1474. X.TP
  1475. X\fBcolor \|[\fIfloat\fB \fIfloat\fB \fIfloat\fB\|]\fR
  1476. XThese specify either the grayness of the axis or its color.  Values
  1477. Xfor
  1478. X\fIgray\fB
  1479. Xshould be from 0 (black) to 1 (white).  Values for
  1480. X\fIcolor\fB
  1481. Xshould also be from 0 to 1.  They are RGB values, and thus define the
  1482. Xamount of red, green and blue in the axis respectively.  Specifying
  1483. Xcolor nullifies the gray value, and vice versa.  The default is
  1484. X\fIgray 0\fB.
  1485. XThese values affect every part of the axis:  the label,
  1486. Xthe hash marks and labels, the axis line and the grid lines.
  1487. X.TP
  1488. X\fBgrid_gray \|[\fIfloat\fB\|]\fR
  1489. X.br
  1490. X.ns
  1491. X.TP
  1492. X\fBgrid_color \|[\fIfloat\fB \fIfloat\fB \fIfloat\fB\|]\fR
  1493. X.br
  1494. X.ns
  1495. X.TP
  1496. X\fBmgrid_gray \|[\fIfloat\fB\|]\fR
  1497. X.br
  1498. X.ns
  1499. X.TP
  1500. X\fBmgrid_color \|[\fIfloat\fB \fIfloat\fB \fIfloat\fB\|]\fR
  1501. XThese allow the user to define the grayness or color of the 
  1502. Xgridlines and the mgridlines to be different from those of the 
  1503. Xaxis lines.
  1504. XThe default
  1505. X\fIgrid_gray\fB
  1506. Xand
  1507. X\fIgrid_color\fB
  1508. Xis the same as the axis's
  1509. X\fIgray\fB
  1510. Xand
  1511. X\fIcolor\fB.
  1512. XThe default
  1513. X\fImgrid_gray\fB
  1514. Xand
  1515. X\fImgrid_color\fB
  1516. Xis the same as 
  1517. X\fIgrid_gray\fB
  1518. Xand
  1519. X\fIgrid_color\fB.
  1520. X.TP
  1521. X\fBhash_at \|[\fIfloat\fB\|]\fR   
  1522. XDraw a hash mark at this point.  No label is
  1523. Xmade for this hash mark.
  1524. X.TP
  1525. X\fBmhash_at \|[\fIfloat\fB\|]\fR   
  1526. XDraw a minor hash mark at this point.
  1527. X.TP
  1528. X\fBhash_label\fR   
  1529. XEdit a hash label (see HASH LABEL EDITING COMMANDS).
  1530. X.TP
  1531. X\fBhash_labels\fR   
  1532. XEdit the default characteristics of the hash labels. 
  1533. XThis is so that the user can change the fontsize, justification,
  1534. Xetc., of the hash labels.  Editing 
  1535. X\fIhash_labels \fB
  1536. Xis just like editing
  1537. Xnormal labels (see LABEL EDITING COMMANDS), except that the 
  1538. X\fI:,\fB
  1539. X\fIx,\fB
  1540. Xand
  1541. X\fIy\fB
  1542. Xvalues are all ignored. Defaults for hash labels are as
  1543. Xfollows: Fontsize=9, Font=``Times-Roman'', Justification is dependent
  1544. Xon whether it is the x or y axis and whether 
  1545. X\fIhash_scale\fB
  1546. Xis positive or negative.
  1547. X.TP
  1548. X\fBhash_scale \|[\fIfloat\fB\|]\fR   
  1549. XThis is to change the size and orientation of
  1550. Xthe hash marks.  Default = -1.0.  Changing this to -2.0 will double
  1551. Xthe length of the hash marks.  Changing this to +1.0 will make the
  1552. Xhash marks come above or to the right of the axis.
  1553. X.TP
  1554. X\fBdraw_hash_marks_at \|[\fIfloat\fB\|]\fR   
  1555. XBy default, the hash marks are drawn
  1556. Xeither above or below the axis.  This command changes where they are
  1557. Xdrawn.  
  1558. X\fIHash_scale\fB
  1559. Xstill determines whether they are drawn above or
  1560. Xbelow this point, and their size.
  1561. X.TP
  1562. X\fBdraw_hash_labels_at \|[\fIfloat\fB\|]\fR   
  1563. XBy default, the hash labels are
  1564. Xdrawn either above or below the hash marks (again, this is dependent
  1565. Xon 
  1566. X\fIhash_scale\fB).
  1567. XThis command changes where they are drawn. 
  1568. XJustification and fontsize, etc., can be changed with the
  1569. X\fIhash_labels\fB
  1570. Xcommand.
  1571. X.TP
  1572. X\fBauto_hash_marks\fR
  1573. X.br
  1574. X.ns
  1575. X.TP
  1576. X\fBno_auto_hash_marks\fR   
  1577. XThis toggles whether or
  1578. Xnot 
  1579. X\fBjgraph \fR
  1580. Xwill automatically create hash marks according to 
  1581. X\fIhash,\fB
  1582. X\fImhash\fB
  1583. Xand
  1584. X\fIshash\fB
  1585. X(or 
  1586. X\fIlog_base\fB
  1587. Xand
  1588. X\fImhash\fB
  1589. Xfor logarithmic axes). 
  1590. XThe default is 
  1591. X\fIauto_hash_marks.\fB
  1592. X.TP
  1593. X\fBauto_hash_labels\fR
  1594. X.br
  1595. X.ns
  1596. X.TP
  1597. X\fBno_auto_hash_labels\fR   
  1598. XThis toggles whether or
  1599. Xnot 
  1600. X\fBjgraph \fR
  1601. Xwill automatically create hash labels for the
  1602. X\fIauto_hash_marks\fB.
  1603. XDefault = 
  1604. X\fIauto_hash_labels\fB.
  1605. X.TP
  1606. X\fBdraw_axis\fR
  1607. X.br
  1608. X.ns
  1609. X.TP
  1610. X\fBno_draw_axis\fR   
  1611. XThis toggles whether or not the axis
  1612. Xline is drawn.  Default = 
  1613. X\fIdraw_axis.\fB
  1614. X.TP
  1615. X\fBdraw_axis_label\fR
  1616. X.br
  1617. X.ns
  1618. X.TP
  1619. X\fBno_draw_axis_label\fR   
  1620. XThis toggles whether or
  1621. Xnot the axis label (as editted by the 
  1622. X\fIlabel\fB
  1623. Xcommand) is drawn.
  1624. XDefault = 
  1625. X\fIdraw_axis_label.\fB
  1626. X.TP
  1627. X\fBdraw_hash_marks\fR
  1628. X.br
  1629. X.ns
  1630. X.TP
  1631. X\fBno_draw_hash_marks\fR   
  1632. XThis toggles whether or
  1633. Xnot the hash marks (both automatic and those created with 
  1634. X\fIhash_at\fB
  1635. Xand 
  1636. X\fImhash_at\fB)
  1637. Xare drawn.  Default = 
  1638. X\fIdraw_hash_marks.\fB
  1639. X.TP
  1640. X\fBdraw_hash_labels\fR
  1641. X.br
  1642. X.ns
  1643. X.TP
  1644. X\fBno_draw_hash_labels\fR   
  1645. XThis toggles whether or
  1646. Xnot the hash labels are drawn.  Default = 
  1647. X\fIdraw_hash_labels.\fB
  1648. X.PD
  1649. X.RE
  1650. X.LP
  1651. X.TP
  1652. X.B HASH LABEL EDITING COMMANDS
  1653. XHash labels are simply strings printed
  1654. Xalong the appropriate axis.  As a default, they are printed at the
  1655. Xplace denoted by the most recent 
  1656. X\fIhash_at\fB
  1657. Xor 
  1658. X\fImhash_at\fB
  1659. Xfor this
  1660. Xaxis, but this can be changed by the 
  1661. X\fIat\fB
  1662. Xcommand.  If there has been
  1663. Xno 
  1664. X\fIhash_at\fB
  1665. Xor 
  1666. X\fImhash_at,\fB
  1667. Xthen an
  1668. X\fIat\fB
  1669. Xcommand must be given, or
  1670. Xthere will be an error.  Hash editing terminates when either one of
  1671. Xthese commands is not given.
  1672. X.RS
  1673. X.TP
  1674. X\fB: \|{\fIstring\fB\|}\fR   
  1675. XThis sets the string of the hash label (see 
  1676. X\fBStrings\fR
  1677. Xabove under THE DESCRIPTION LANGUAGE).
  1678. X.TP
  1679. X\fBat \|[\fIfloat\fB\|]\fR   
  1680. XThis sets the location of the hash label along the
  1681. Xcurrent axis.
  1682. X.PD
  1683. X.RE
  1684. X.LP
  1685. X.SH FUNCTION PLOTTING AND OTHER NON-INHERENT FEATURES
  1686. XAlthough 
  1687. X\fBjgraph \fR
  1688. Xdoesn't have any built-in functions for interpolation
  1689. Xor function plotting, both can be effected in 
  1690. X\fBjgraph \fR
  1691. Xwith a little outside help:
  1692. X.TP
  1693. X\fBFunction plotting\fR
  1694. XWith the 
  1695. X\fIinclude\fB
  1696. Xand 
  1697. X\fIshell\fB
  1698. Xstatement, it's easy to
  1699. Xcreate a file of points of a function with a c or awk program, and
  1700. Xinclude it into a graph.  See the section HINTS AND EXAMPLE GRAPHS
  1701. Xfor an example of a sin graph produced in this manner.
  1702. X.TP
  1703. X\fBPoint interpolation\fR
  1704. XPoint interpolation is essentially the same as
  1705. Xfunction plotting, and therefore is left out of 
  1706. X\fBjgraph.  \fR
  1707. XMaybe in a future release.
  1708. X.SH HINTS AND EXAMPLE GRAPHS
  1709. X\fBJgraph \fR
  1710. Xshould be able to draw any kind of scatter/line/bar graph that
  1711. Xa user desires.  To embellish the graph with extra text, axes, lines,
  1712. Xetc., it is helpful to use 
  1713. X\fIcopygraph.\fB
  1714. XThe following example graphs show a few examples of different features
  1715. Xof jgraph.  They should be in the directory JGRAPH_DIR.
  1716. X.sp
  1717. X- acc.jgr is a simple bar graph.  Acc.tex is also included to show
  1718. Xhow one can include the output of jgraph in a LaTeX file.  To get
  1719. Xthis to work, you might have to substitute the entire pathname of
  1720. Xthe file acc.jps in the acc.tex file.
  1721. X.sp
  1722. X- g8.jgr is a simple graph with some plotted text.
  1723. X- ebars.jgr is a simple graph with error bars.
  1724. X- sin.jgr shows how a sin function can be plotted using a simple c
  1725. Xprogram to produce the sin wave.  Moreover, this file shows a use of
  1726. X\fIcopygraph\fB
  1727. Xto plot an extra x and y axis at the 0 point.
  1728. X.sp
  1729. X- sin1.jgr is a further extension of sin.jgr only with one x and y
  1730. Xaxis at 0, but with the axis labels at the left and the bottom of the
  1731. Xgraph.
  1732. X.sp
  1733. X- sin2.jgr is a different sin wave with a logarithmic x axis.
  1734. X.sp
  1735. X- sin3.jgr shows how a bizarre effect can be gotten by sorting the
  1736. Xpoints in a different manner.
  1737. X.sp
  1738. X- gpaper.jgr shows how you can get jgraph to easily produce graph paper.
  1739. X.sp
  1740. X- g9n10.jgr contains two graphs with complicated legends.  It
  1741. Xcontains a description of how the legend was created.
  1742. X.sp
  1743. X- mab2.jgr is a graph created by Matt Blaze which shows how a 
  1744. Xcomplicated output graph can be quite concisely and simply stated.
  1745. XIn this graph, the x axis is a time line.  It shows usage of the 
  1746. X\fIhash_label\fB
  1747. Xand
  1748. X\fIhash_labels\fB
  1749. Xcommands, as well as displaying how jgraph lets you extract data from
  1750. Xoutput files with awk.
  1751. X.sp
  1752. X- hypercube.jgr shows an interesting use of jgraph
  1753. Xfor picture-drawing.
  1754. X.sp
  1755. X- alb.jgr is another use of jgraph for picture drawing.  This file
  1756. Xwas created by an awk script which Adam Buchsbaum wrote to draw 
  1757. Xtrees and graphs.
  1758. X.sp
  1759. XTo view these graphs, use jgraph -P, and view the resulting output
  1760. Xfile with
  1761. X\fIgs,\fB
  1762. Xor a similar postscript viewer.
  1763. XTo make a hard copy of these graphs, pipe the output of jgraph 
  1764. X-P directly to 
  1765. X\fIlpr.\fB
  1766. X
  1767. X.SH USING JGRAPH TO DRAW PICTURES
  1768. XAs hypercube.jgr and alb.jgr show, jgraph can be used as a postscript
  1769. Xpreprocessor to make drawings.  There are two advantages 
  1770. Xusing jgraph to draw pictures instead of using standard drawing tools like
  1771. X\fIxfig\fB,
  1772. X\fIfibtool\fB,
  1773. Xor
  1774. X\fIidraw\fB.
  1775. XThe first is that with jgraph, you know exactly where strings, lines,
  1776. Xboxes, etc, will end up, because you plot them explicitly.  The second
  1777. Xadvantage is that for iterative drawings, with lots of patters, you
  1778. Xcan combine jgraph with awk or c or any other programming language
  1779. Xto get complex output in a simple way.  Most what-you-see-is-what-you-get
  1780. X(WYSIWYG) drawing tools cannot do this.  
  1781. X
  1782. XThe major disadvantage of using jgraph to draw pictures is that jgraph
  1783. Xis not WYSIWYG.  You have to set up axes and plot points, lines and 
  1784. Xstrings.  It's all a matter of taste.
  1785. X
  1786. XIf you'd like to see some more complex pictures drawn with jgraph, as
  1787. Xwell as some hints to make picture-drawing easier, send me email
  1788. X(jsp@princeton.edu).
  1789. X
  1790. X.SH EMBEDDING THE OUTPUT IN LATEX
  1791. XI haven't read the manuals, but the way I've been loading these files
  1792. Xinto LaTeX has been as follows:
  1793. X.PP
  1794. X.nf
  1795. X1.  Toward the beginning of my LaTeX file, I've had ``\\input{psfig}''
  1796. X2.  Where I've wanted my file, I've put:
  1797. X
  1798. X    \\begin{figure}
  1799. X    \\centerline{\\psfig{figure=<path-name>/<filename-of-jgraph-output>}}
  1800. X    \\end{figure}
  1801. X
  1802. X    Some versions of dvips or dvi2ps work without the path-name.  Others
  1803. X    require that the path-name be present.
  1804. X
  1805. X3.  After running latex on the file, do
  1806. X
  1807. X    lpr -d file.dvi
  1808. X
  1809. X4.  If that doesn't work, try dvips-ing the file and printing the postscript.
  1810. X
  1811. X.fi
  1812. X.PP
  1813. X.SH BUGS
  1814. XLogarithmic axes cannot contain points <= 0.  If I have 
  1815. Xenough complaints to convince me that this is a bug, I'll try to fix it.
  1816. X.sp
  1817. XThere is no real way to make the axes such that they decrease from 
  1818. Xleft to right or low to high -- or at least not without writing your
  1819. Xown hash labels.  
  1820. X.sp
  1821. XThere may well be loads of other bugs.  Send to jsp@princeton.edu.
  1822. X.sp
  1823. XThis is $Revision: 8.0 $.
  1824. END_OF_FILE
  1825.   if test 44248 -ne `wc -c <'jgraph.1'`; then
  1826.     echo shar: \"'jgraph.1'\" unpacked with wrong size!
  1827.   fi
  1828.   # end of 'jgraph.1'
  1829. fi
  1830. if test -f 'mab2.times' -a "${1}" != "-c" ; then 
  1831.   echo shar: Will not clobber existing file \"'mab2.times'\"
  1832. else
  1833.   echo shar: Extracting \"'mab2.times'\" \(2567 characters\)
  1834.   sed "s/^X//" >'mab2.times' <<'END_OF_FILE'
  1835. XThu 00:00  | 746 | 397 | 787
  1836. XThu 02:00  | 625 | 85 | 1066
  1837. XThu 04:00  | 844 | 170 | 903
  1838. XThu 06:00  | 779 | 169 | 638
  1839. XThu 08:00  | 1168 | 978 | 3219
  1840. XThu 10:00  | 2269 | 1599 | 5515
  1841. XThu 12:00  | 1983 | 1963 | 5478
  1842. XThu 14:00  | 2822 | 2077 | 7526
  1843. XThu 16:00  | 1926 | 1730 | 5588
  1844. XThu 18:00  | 1256 | 904 | 2559
  1845. XThu 20:00  | 1110 | 672 | 2728
  1846. XThu 22:00  | 1699 | 1414 | 4502
  1847. XFri 00:00  | 919 | 418 | 1714
  1848. XFri 02:00  | 793 | 131 | 1778
  1849. XFri 04:00  | 785 | 114 | 1419
  1850. XFri 06:00  | 685 | 84 | 285
  1851. XFri 08:00  | 1382 | 795 | 3309
  1852. XFri 10:00  | 2186 | 1485 | 5984
  1853. XFri 12:00  | 1425 | 1212 | 4021
  1854. XFri 14:00  | 1831 | 1884 | 4378
  1855. XFri 16:00  | 1736 | 1243 | 4205
  1856. XFri 18:00  | 1231 | 506 | 2768
  1857. XFri 20:00  | 915 | 273 | 1224
  1858. XFri 22:00  | 987 | 456 | 1411
  1859. XSat 00:00  | 668 | 138 | 540
  1860. XSat 02:00  | 766 | 120 | 1342
  1861. XSat 04:00  | 781 | 129 | 648
  1862. XSat 06:00  | 725 | 90 | 431
  1863. XSat 08:00  | 687 | 169 | 519
  1864. XSat 10:00  | 768 | 268 | 1013
  1865. XSat 12:00  | 1513 | 977 | 1965
  1866. XSat 14:00  | 1294 | 584 | 2318
  1867. XSat 16:00  | 1337 | 699 | 2491
  1868. XSat 18:00  | 1191 | 479 | 1662
  1869. XSat 20:00  | 1249 | 497 | 1470
  1870. XSat 22:00  | 1056 | 538 | 1467
  1871. XSun 00:00  | 808 | 413 | 627
  1872. XSun 02:00  | 914 | 97 | 1331
  1873. XSun 04:00  | 654 | 60 | 493
  1874. XSun 06:00  | 657 | 51 | 453
  1875. XSun 08:00  | 780 | 216 | 755
  1876. XSun 10:00  | 945 | 429 | 1304
  1877. XSun 12:00  | 698 | 261 | 884
  1878. XSun 14:00  | 345 | 135 | 684
  1879. XSun 16:00  | 1157 | 406 | 1836
  1880. XSun 18:00  | 1231 | 782 | 1710
  1881. XSun 20:00  | 1229 | 386 | 1844
  1882. XSun 22:00  | 1270 | 301 | 1882
  1883. XMon 00:00  | 864 | 442 | 1309
  1884. XMon 02:00  | 783 | 668 | 1444
  1885. XMon 04:00  | 887 | 173 | 895
  1886. XMon 06:00  | 801 | 164 | 756
  1887. XMon 08:00  | 1370 | 682 | 3020
  1888. XMon 10:00  | 1839 | 1083 | 8333
  1889. XMon 12:00  | 1980 | 1205 | 10969
  1890. XMon 14:00  | 1810 | 1546 | 6967
  1891. XMon 16:00  | 2110 | 1793 | 5441
  1892. XMon 18:00  | 2397 | 1763 | 7879
  1893. XMon 20:00  | 1426 | 573 | 2943
  1894. XMon 22:00  | 983 | 467 | 1686
  1895. XTue 00:00  | 701 | 172 | 665
  1896. XTue 02:00  | 998 | 161 | 1765
  1897. XTue 04:00  | 814 | 157 | 892
  1898. XTue 06:00  | 537 | 55 | 354
  1899. XTue 08:00  | 701 | 588 | 3944
  1900. XTue 10:00  | 1248 | 1038 | 3637
  1901. XTue 12:00  | 2089 | 1170 | 4042
  1902. XTue 14:00  | 3054 | 1694 | 7062
  1903. XTue 16:00  | 4524 | 1642 | 8415
  1904. XTue 18:00  | 1380 | 1491 | 2491
  1905. XTue 20:00  | 1845 | 1530 | 2655
  1906. XTue 22:00  | 1504 | 1513 | 2460
  1907. XWed 00:00  | 863 | 467 | 686
  1908. XWed 02:00  | 3833 | 428 | 4074
  1909. XWed 04:00  | 860 | 196 | 767
  1910. XWed 06:00  | 850 | 164 | 1568
  1911. XWed 08:00  | 1574 | 1421 | 3551
  1912. XWed 10:00  | 2692 | 2135 | 6666
  1913. XWed 12:00  | 2041 | 2033 | 4309
  1914. XWed 14:00  | 1882 | 2069 | 4106
  1915. XWed 16:00  | 2403 | 2359 | 4947
  1916. XWed 18:00  | 1632 | 1420 | 2779
  1917. XWed 20:00  | 1984 | 1888 | 3410
  1918. XWed 22:00  | 936 | 640 | 950
  1919. X
  1920. END_OF_FILE
  1921.   if test 2567 -ne `wc -c <'mab2.times'`; then
  1922.     echo shar: \"'mab2.times'\" unpacked with wrong size!
  1923.   fi
  1924.   # end of 'mab2.times'
  1925. fi
  1926. echo shar: End of archive 1 \(of 7\).
  1927. cp /dev/null ark1isdone
  1928. MISSING=""
  1929. for I in 1 2 3 4 5 6 7 ; do
  1930.     if test ! -f ark${I}isdone ; then
  1931.     MISSING="${MISSING} ${I}"
  1932.     fi
  1933. done
  1934. if test "${MISSING}" = "" ; then
  1935.     echo You have unpacked all 7 archives.
  1936.     rm -f ark[1-9]isdone
  1937. else
  1938.     echo You still must unpack the following archives:
  1939.     echo "        " ${MISSING}
  1940. fi
  1941. exit 0
  1942. exit 0 # Just in case...
  1943.