jgraph man page on DragonFly

Man page or keyword search:  
man Server   44335 pages
apropos Keyword Search (all sections)
Output format
DragonFly logo
[printable version]

jgraph(1)							     jgraph(1)

NAME
       jgraph - filter for graph plotting to postscript

SYNTAX
       jgraph [-p] [-P] [-L] [-comments] [filename ...]

DESCRIPTION
       Jgraph  takes the description of a graph or graphs and produces a post‐
       script file on the standard output.  Jgraph is ideal for	 plotting  any
       mixture	of  scatter  point graphs, line graphs, and/or bar graphs, and
       embedding the output into LaTeX, or any other  text  processing	system
       which can read postscript.

       Jgraph reads its input from the specified files.	 If no files are spec‐
       ified, then it reads from standard input.

       The graph description language is simple enough	to  get	 nice  looking
       graphs  with  a minimum of effort, yet powerful enough to give the user
       the flexibility to tailor the appearance of the graph  to  his  or  her
       individual  preferences.	  This	includes  plotting multiple graphs and
       laying them out separately on the page (or pages).

       As an example, if the user wanted to  simply  plot  the	points	(2,3),
       (4,5), (1,6), the following would be enough of a specification file:

	    newgraph
	    newcurve pts 2 3 4 5 1 6

       Now,  if the user wanted to spruce the graph up by adding labels to the
       axes, connecting the points, and titling	 the  graph,  then  the	 input
       could change to:

	    newgraph
	    newcurve pts 2 3 4 5 1 6 linetype solid
	    xaxis label : X axis
	    yaxis label : Y axis
	    title : This is an example graph

       If  the	user instead wanted this to be a bar graph with different end‐
       points on the axes, he/she could simply change the input to:

	    newgraph
	    xaxis min 0 max 5 label : X axis
	    yaxis min 0 max 6 label : Y axis
	    newcurve pts 2 3 4 5 1 6 marktype xbar
	    title : This is an example bar graph

       There are many more features of the  description	 language,  which  are
       described  below	 in the next section.  Features which are not embedded
       within the description language are: line and  function	interpolation,
       function plotting, and pie graphs.  The latter is impossible to do with
       the aid of jgraph, however, the others  can  be	effected  with	jgraph
       mixed with awk or c.  See FUNCTION PLOTTING AND OTHER NON-INHERENT FEA‐
       TURES below.

       Also below is a section HINTS AND EXAMPLE GRAPHS, which may  give  good
       ideas on how to use jgraph more effectively.

OPTIONS
       -P     The -P option produces postscript which can be piped directly to
	      lpr, which can be displayed in an Xwindows environment  with  gs
	      (ghostscript).  Without this option, the output should be embed‐
	      ded within LaTeX or a similar text processing system.

       -L     The -L option produces a landscape plot.

       -p     The -p option re-prints the input on the standard	 output,  only
	      with all the defaults made explicit.  This is useful for letting
	      the user do his/her own special  formatting,  as	it  shows  the
	      explicit	values	that  the defaults assume, so that they can be
	      manipulated.

       -comments
	      This option makes jgraph put  comments  into  the	 output	 post‐
	      script.	These  make it easier for the user to wade through the
	      final postscript if necessary.

THE DESCRIPTION LANGUAGE
       The  description	 language  is	essentially   keywords	 followed   by
       attributes.   All  keywords and attributes except for string attributes
       are tokens -- non-white-space  characters  surrounded  by  white-space.
       Special	tokens	are ``(*'', ``*)'', ``include'', ``:'', and ``shell'',
       which denote comments, include-file statements, string identifiers, and
       shell-include statements:

       Comments
	      Comments	are  surrounded by the tokens ``(*'' ``*)'' as in Mod‐
	      ula-2 (except that here, the tokens must be surrounded by white-
	      space).  Comments may be nested.	If the comment runs to the end
	      of a file, the last ``*)'' may be omitted.

       Include-file statements
	      The token following an ``include'' token is  expected  to	 be  a
	      file  name.   The result of the statement is to include the con‐
	      tents of the file at that point.	Include-file statments can  be
	      nested within included files, and within shell includes.

       Strings
	      In  places  where	 strings  are  required (as in graph and curve
	      labels), they are denoted by the token ``:''.  The second	 char‐
	      acter  after  the	 ``:'' starts the string, and the next newline
	      character terminates it.	Thus, the string ``Graph #1''  can  be
	      denoted as:

		   : Graph #1<newline>

	      or

		   :<newline>
		   Graph #1<newline>

	      One  can	get  multiline	strings by making a backslash the last
	      character before the newline on all but the last	line.	Notice
	      that  in strings white-space is not ignored.  This way of denot‐
	      ing strings allows the user to embed leading and	trailing  spa‐
	      ces,  as	well as the null string.  For example, the null string
	      ``'' is represented by:

		   : <newline>

	      Once a string has been started, it may  contain  any  character.
	      Specifically,  it may contain the sequence ``(*'', ``shell'', or
	      ``include'' without starting a  comment  or  including  a	 file.
	      Each  line  of  a string must contain less than 1000 characters.
	      Otherwise string sizes are limited only by the size of memory.

       Shell-include statements
	      Shell include statements are of the form ``shell'',  ``:'',  and
	      then  a  string.	The result of the statement is that the string
	      is executed (using popen, which passes the string	 to  sh),  and
	      the  standard  output is included at that point.	Shell-includes
	      can be freely  nested  within  include-files  and	 other	shell-
	      includes.	  Shell	 commands  may be more than one line, but must
	      not exceed 1000 characters.  The shell statement	is  not	 (yet)
	      available on VMS.

       Notation
	      In the descriptions below:

	      tk {integer}
		     means that token tk must be followed by an integer.

	      tk [integer]
		     means  that tk may be followed by an integer, but doesn't
		     have to.  In most cases, if tk  is	 not  followed	by  an
		     integer, then the command denoted by tk is ignored.

	      tk [{integer} {integer}]*
		     means that tk must be followed by an even number of inte‐
		     gers.

	      Supported types other than integer  are:	{float}	 for  floating
	      point  entries, {token} for any token, and {string} for a string
	      as defined above.

       TOP-LEVEL DESCRIPTION COMMANDS

	      newgraph
		     This starts editing a new graph (see GRAPH	 EDITING  COM‐
		     MANDS).   Note  that  multiple graphs may be drawn on the
		     same page.

	      graph {integer}
		     This edits the graph denoted by {integer}.	 If the	 graph
		     doesn't  exist,  then  this command creates it and starts
		     editing it.  Newgraph is simply an abbreviation for graph
		     n	where n=0 if this is the first graph, otherwise n=m+1,
		     where m is the largest number of any graph so far.

	      copygraph [integer]
		     This creates a new graph, and copies all  the  attributes
		     from  the	graph [integer]'s x and y axes, as well as its
		     x_translate and y_translate  values,  the	clipping,  the
		     legend  defaults, and the title defaults.	 If the [inte‐
		     ger] is omitted, then  it	copies	its  values  from  the
		     ``previous'' graph, which is defined to be the graph with
		     the largest number less than the currrent graph's number.
		     If	 the  current  graph  has the smallest number, then it
		     will take the  last  graph	 from  the  previous  page  of
		     graphs.  If there is no previous page, then an error will
		     be flagged.  (copygraph does not copy the values  of  the
		     hash_at, mhash_at, and hash_label attributes).

	      newpage
		     This  command  is	for plotting graphs on multiple pages.
		     After a newpage, the graphs that the user enters will  be
		     plotted  on  a  new page.	New graphs and strings will be
		     numbered starting with 0.	Essentially,  newpage  is  the
		     same  as  appending together the output of separate calls
		     of jgraph on the text before the newpage, and on the text
		     after  the	 newpage.   Newpage  will  most likely produce
		     bizarre results if the -P option is not specified.

	      X [float]
	      Y [float]
		     Postscript files to be embedded in LaTeX (and some	 other
		     programs)	contain	 a  ``bounding box'' which defines the
		     area which LaTeX will allocate for the postscript.	 Other
		     programs  use  this bounding box as well, sometimes using
		     it to define where to clip the postscript image.	Jgraph
		     uses the axis lines and labels, and the title to generate
		     its bounding box.	Most of the time that's good enough to
		     work  in  LaTeX.	The  Y	and X commands say to make the
		     height and width of the bounding box at  least  Y	and  X
		     inches, respectively, but to maintain the current center‐
		     ing of the graph.	If you still need further control over
		     the  bounding box (e.g. to change the centering), try the
		     bbox command.  If there's	more  than  one	 page  in  the
		     jgraph  file,  Y, X and bbox values can be given for each
		     graph.

	      bbox float float float float
		     If the Y and X commands aren't enough to help you	define
		     a	good  bounding	box,  this command lets you explicitly
		     enter one which will go directly into the jgraph  output.
		     Its  units are the final postscript units.	 It's probably
		     best to use the -p option to see what the bounding box is
		     that  jgraph  produces,  and  then alter that accordingly
		     with bbox.	 The main use for this is to change the	 auto‐
		     matic centering that jgraph performs:  Usually the center
		     of the bounding box that jgraph computes is  put  at  the
		     center  of the page.  Changing the bbox changes this cen‐
		     ter.

	      preamble : {string}
	      preamble {token}
	      epilogue : {string}
	      epilogue {token}
		     These two commands allow the user to include  strings  or
		     files  (the  token	 specifies the filename) which will be
		     copied directly into jgraph's output.   The  preamble  is
		     included  at the beginning of the output (after some ini‐
		     tial postscript to set things up  for  jgraph),  and  the
		     epilogue is included at the end.  A good use for the pre‐
		     amble is to set up	 a  postscript	dictionary  if	you're
		     using postscript marks.

       GRAPH EDITING COMMANDS
	      These  commands act on the current graph.	 Graph editing is ter‐
	      minated when one of the top-level description commands is given.

	      xaxis
	      yaxis  Edit the x or y axis (see AXIS EDITING COMMANDS)

	      newcurve
		     This starts editing a new curve of the graph  (see	 CURVE
		     EDITING COMMANDS).

	      curve {integer}
		     This  edits the curve denoted by {integer}.  If the curve
		     doesn't exist, then this command creates  it  and	starts
		     editing  it.  Newcurve and curve interact as newgraph and
		     graph do.

	      newline
		     This is an abbreviation for:

		     newcurve marktype none linetype solid

	      copycurve [integer]
		     This starts editing a new curve of the graph, and	copies
		     all  its  values  except for the points from curve [inte‐
		     ger.] If the [integer] is omitted,	 then  it  copies  its
		     values  from the last curve in this graph.	 If this graph
		     currently has no curves, then it searches backwards  from
		     the previous graph.

	      title  This edits the title of the graph (see LABEL EDITING COM‐
		     MANDS).  The title is given a default  location  centered
		     beneath  the  graph,  and a default font size of 12, how‐
		     ever, as with all labels, this can be changed.

	      legend The edits the legend of the  graph	 (see  LEGEND  EDITING
		     COMMANDS).	 As a default, the graph will contain a legend
		     if any of its curves have labels.

	      newstring
		     This edits a new text  string  (see  LABEL	 EDITING  COM‐
		     MANDS).   This  is	 useful	 as it allows the user to plot
		     text on the graph as well as curves.

	      string {integer}
	      copystring [integer]
		     String and copystring are to newstring as curve and copy‐
		     curve are to newcurve.

	      border
	      noborder
		     Border  draws  a square border around the area defined by
		     the axes.	Noborder specifies no border.  Noborder is the
		     default.

	      clip
	      noclip Clip  specifies  that  all	 curves	 in  the graph will be
		     clipped -- that is, no points outside of the of axes will
		     be	 plotted.   Clipping  can  also be specified on a per-
		     curve basis.  The default is noclip.

	      inherit_axes
		     This is an old command which is kept for backward compat‐
		     ibility.  Copycurve.  is equivalent to:

		     newgraph inherit_axes

	      x_translate [float]
	      y_translate [float]
		     By	 default, the bottom left-hand corner of each graph is
		     at point (0,0) (final postscript units).  X_translate and
		     Y_translate  translate the bottom left-hand corner of the
		     graph [float] inches.  The main use of this  is  to  draw
		     more  than one graph on a page.  Note that jgraph consid‐
		     ers all the graphs drawn on the page when it computes its
		     bounding  box  for centering.  Thus, if only one graph is
		     drawn, it will always be centered on the page, regardless
		     of	 its X_translate and Y_translate values.  These values
		     are used for relative placement of the graphs.
			To change the centering of the graphs, use bbox.

	      X [float]
	      Y [float]
		     These are the same as X and Y in the Top-level  commands,
		     except  that  they let the user continue editing the cur‐
		     rent graph.

       SIMPLE AXIS EDITING COMMANDS
	      These commands act on the current axis as	 chosen	 by  xaxis  or
	      yaxis  (see  GRAPH  EDITING  COMMANDS).  Axis editing terminates
	      when a graph or top-level command	 is  given.   There  are  more
	      advanced axis editing commands given below which have to do with
	      moving the hash marks, adding new hash marks  and	 labels,  etc.
	      See ADVANCED AXIS EDITING COMMANDS.

	      linear
	      log    Set  the axis to be linear or logarithmic. The default is
		     linear.  If the axis is set to be logarithmic, then  val‐
		     ues  <=  0.0  will be disallowed, as they are at negative
		     infinity on the axis.

	      min [float]
	      max [float]
		     Set  the  minimum	and  maximum  values  of  this	 axis.
		     Defaults depend on the points given.  They can be seen by
		     using the -p option.  Unless stated, all units (for exam‐
		     ple  point	 plotting,  string  plotting, etc.) will be in
		     terms of the min and max values of the x and y axes.

	      size [float]
		     Set the size of this axis in inches.

	      log_base [float]
		     Set the base of the logarithmic axis. Default = 10.  This
		     is	 the  value which determines which hash marks and hash
		     labels are automatically produced.

	      hash [float]
		     Hash marks will be [float] units apart.   Default	=  -1.
		     If this value equals 0, then there will be no hash marks.
		     If this value is less than 0, then the hash marks will be
		     automatically  set	 by jgraph (see -p for the value).  By
		     default, each hash mark will be labeled with  its	value.
		     Hash and shash are ignored if the axes are logarithmic.

	      shash [float]
		     Make sure there is a hash mark at the point [float] along
		     the axis.	The default is set by jgraph if hash = -1.  If
		     hash  is  set  by the user, shash is defaulted to the min
		     value of the axis.

	      mhash [integer]
		     Put [integer] minor hash marks  between  the  above  hash
		     marks.  Default = -1.  If this value equals 0, then there
		     will be no minor hash marks.  If this value is  negative,
		     then  the	value will be chosen by jgraph (see -p for the
		     value).

	      precision [integer]

	      hash_format token
		     These control  how	 jgraph	 formats  the  automatic  hash
		     labels.   The  user  shouldn't  have to worry about these
		     values, except in extreme cases.  Jgraph uses  printf  to
		     format   the   labels.   If  hash_format  is  ``f''  (the
		     default), then the value of a hash label is printed with

		   printf("%.*f", precision, value).

	      Other valid hash_format values  are  ``G'',  ``g'',  ``E'',  and
	      ``e''.   ``G'' is a good generic format which converts to scien‐
	      tific notation if the value becomes too big or  too  small.   If
	      the  precision  is negative, then jgraph chooses a default:  For
	      ``g'' and ``G'', the default is 6.  For  ``e''  and  ``E'',  the
	      default is 0, and for ``f'', jgraph tries to determine a reason‐
	      able default.  Please read the man page of printf(1) for a  com‐
	      plete description of how it formats floating point numbers.

	      label  Edit the label of this axis (see LABEL EDITING COMMANDS).
		     By default, the label is in font ``Times-Bold'', and  has
		     a font size of 10.	 If the user doesn't change any of the
		     plotting attributes  of  the  label,  jgraph  chooses  an
		     appropriate place for the axis label.

	      draw_at [float]
		     Draw  the axis line at this point on the other axis.  The
		     default is usually	 the  other  axis's  min,  however  if
		     hash_scale	 is  positive  (see  hash_scale under ADVANCED
		     AXIS EDITING), it will be the other axis's max.

	      nodraw Do not draw the axis, the hash marks or any labels.  This
		     is useful for plotting points with no axes, and for over‐
		     laying graphs on top of  one  another  with  no  clashes.
		     This  is  equivalent to no_draw_axis, no_draw_axis_label,
		     no_draw_hash_marks, and no_draw_hash_labels.

	      draw   Cancels the effect of nodraw.  Default = draw.   This  is
		     equivalent	      to      draw_axis,      draw_axis_label,
		     draw_hash_marks, and draw_hash_labels.

	      grid_lines
	      no_grid_lines
		     Grid_lines specifies to plot a grid line  at  each	 major
		     hash mark on this axis.  The default is no_grid_lines.

	      mgrid_lines
	      no_mgrid_lines
		     Mgrid_lines  specifies  to plot a grid line at each minor
		     hash mark on this axis.  The default is no_mgrid_lines.

       CURVE EDITING COMMANDS
	      These commands act on the current curve as chosen by newcurve or
	      curve  (see  GRAPH  EDITING COMMANDS).  Curve editing terminates
	      when a graph or top-level command is given.

	      pts [{float} {float}]*
		     This sets the points to plot in this  curve.   The	 first
		     float is the x value, and the second float is the y value
		     of the point.  Points are plotted in the order specified.
		     This  command  stops  reading  points when a non-float is
		     given.  The user can specify this command multiple	 times
		     within a curve -- each time, simply more points are added
		     to the curve.

	      x_epts [{float} {float} {float} {float}]*
	      y_epts [{float} {float} {float} {float}]*
		     This allows the user to specify points  and  ``confidence
		     values''  (otherwise known as ``error bars'').  The first
		     two floats specify the x and y values of  the  point,  as
		     above.   If  x_epts  is  specified,   then the second two
		     floats specify range or confidence values for the x value
		     of	 the  point.   Error  bars  will be printed to each of
		     these x values (using the original point's y value)  from
		     the original point.  Similarly, y_epts specifies range or
		     confidence values for the y  value	 of  the  point.   pts
		     x_epts and y_epts can all be intermixed.

	      marktype
		     This  sets	 the  kind  of	mark  that is plotted for this
		     curve.  Valid marks are: circle, box, diamond,  triangle,
		     x,	 cross,	 ellipse,  xbar,  ybar, text, postscript, eps,
		     none, and variants of general.  Most of these  are	 self-
		     explanatory, except for the last few:
		       Xbar  makes  the	 curve	into a bar graph with the bars
		     going to the x axis.  Ybar has the bars going  to	the  y
		     axis.
		       Text  lets  the	user plot text instead of a mark.  The
		     text is editted as a label (see LABEL  EDITING  COMMANDS)
		     immediately  following  the  text	command.   The x and y
		     fields of the label have  special	meanings  here:	  They
		     define  where  the	 label is to be printed in relation to
		     the curve points.	For example, if they are both  0,  the
		     label will be printed directly on the curve points.  If x
		     is 1.0 and y is -1.0, then the label will be printed  one
		     unit  to  the  right  and one unit below the curve points
		     (units are units of the x and  y  axes).	Default	 label
		     values are 0 for x and y, and center justification.
		       Postscript: See the postscript token below.
		       Eps: See the eps token below.
		       None means that no mark will be plotted (this is useful
		     for drawing lines).
		       There are four types of general marks, which work using
		     the  gmarks  command described below.  The four marktypes
		     are general, general_nf, general_bez, and general_bez_nf.
		       By default, a new mark is chosen for each curve.

	      marksize [float] [float]
		     This sets the size of the mark.  The first [float] is the
		     width  of	the mark, and the second is the height.	 Units
		     are those of the x and y axes respectively,  unless  that
		     axis  is logarithmic, in which case the units are inches.
		     Negative marksizes are allowed (e.g.  a  negative	height
		     will flip a triangle mark).  The default mark size can be
		     determined using the -p option of jgraph

	      mrotate [float]
		     This allows the user to rotate the mark [float]  degrees.
		     Default is zero.

	      gray [float]
	      color [float float float]
		     These  specify  either  the  grayness of the curve or its
		     color.  Values for gray should be from  0	(black)	 to  1
		     (white).	Values	for  color should also be from 0 to 1.
		     They are RGB values, and thus define the amount  of  red,
		     green  and	 blue  in  the curve respectively.  Specifying
		     color nullifies the gray  value,  and  vice  versa.   The
		     default is gray 0

	      fill [float]
	      cfill [float float float]
		     This  sets	 the  filling of marks which define an area to
		     fill (e.g.	 box, circle,  xbar).	fill  defines  a  gray
		     value,  and  cfill	 defines  a  color value (see gray and
		     color above for a description of the units).  The default
		     is fill 0 (black).

	      pattern token [float]
		     This defines the how the mark is to be filled.  Token may
		     be solid (the default), stripe, or	 estripe.   If	solid,
		     then  the	float  is  ignored, and the mark is completely
		     filled in with either the gray value defined by  fill  or
		     the  color	 value	defined by cfill.  If stripe, then the
		     mark will be filled with stripes of either the gray value
		     defined  by  fill	or  the	 color	defined by cfill.  The
		     stripes will be rotated by float degrees.	 Estripe  dif‐
		     fers  from	 stripe only in that stripe draws stripes on a
		     white background, while estripe simply draws the  stripes
		     on an empty background.

	      poly
	      nopoly
	      pfill [float]
	      pcfill [float float float]
	      ppattern token [float]
		     Poly  allows the user to make jgraph treat the curve as a
		     closed polygon (or in the case  of	 a  bezier,  a	closed
		     bezier  curve).   pfill, pcfill and ppattern  specify the
		     filling of the polygon, and work  like  fill,  cfill  and
		     pattern above.  The default is nopoly.

	      gmarks [{float} {float}]*
		     Gmarks is a way for the user to define custom marks.  For
		     each mark on (x,y), Each pair  of	{float_x},  {float_y},
		     will  define  a  point  on the mark (x + (float_x * mark‐
		     size_x / 2), y + (float_y * marksize_y / 2)).
		       Thus, for example, the box mark could be defined as

		   gmarks -1 -1 -1 1 1 1 1 -1
		   marktype general

	      The  marktypes  general,	general_nf,  general_bez,   and	  gen‐
	      eral_bez_nf, allow the gmarks points to define a closed polygon,
	      a line, a closed bezier curve and a regular bezier curve respec‐
	      tively (the ``nf'' stands for ``non-filled'').

	      postscript : {string}
	      postscript {token}
		     This  allows  the	user  to  enter direct postscript as a
		     mark.  It automatically sets the marktype to  postscript.
		     If	 a  string is entered, then that string is used as the
		     mark in the jgraph output.	 If a token is	entered,  then
		     that  token  must	stand  for  a  filename, which will be
		     copied to the output once for every mark.	The postscript
		     will  be set up so that when the string or file is put to
		     the output, (0, 0) of the the axes is in  the  middle  of
		     the mark, it is rotated by mrotate degrees, and scaled by
		     (marksize_x / 2), marksize_y / 2).	 Thus,	the  box  mark
		     could be defined as:

		   postscript : 1 setlinewidth -1 -1 moveto -1 1 lineto \
				1 1 lineto 1 -1 lineto -1 -1 lineto stroke

	      If  the  marksize_x is defined to be (0, 0), then jgraph does no
	      scaling.	This is useful when the postscript  has	 strings,  and
	      the user does not want the strings to be scaled.

	      eps {token}
		     This  allows  the	user  to include an encapsulated post‐
		     script file and treat it as  a  mark.   It	 automatically
		     sets  the	marktype  to  eps.  The file will be scaled so
		     that the bounding box is  marksize	 units.	  Among	 other
		     things,  this  allows  the	 user  to include whole jgraph
		     files as marks.  Please see ad.jgr,  explained  in	 HINTS
		     AND EXAMPLE GRAPHS below for an example of this feature.

	      larrows
	      rarrows
	      nolarrows
	      norarrows
		     Rarrows  specifies	 to  draw an arrow at the end of every
		     line segment in the curve.	 Larrows specifies to draw  an
		     arrow  at	the beginning of every line segment.  The size
		     of the arrows can be changed by using asize.  The default
		     is nolarrows and norarrows.
		       Arrows  always  go exactly to the point specified, with
		     the exception of when the	marktype  is  ``circle''.   In
		     this case, the arrow goes to the edge of the circle.

	      larrow
	      rarrow
	      nolarrow
	      norarrow
		     This  is  analgous to the above, except that with larrow,
		     the only arrow drawn is to the  beginning	of  the	 first
		     segment  in  the  curve,  and with rarrow, the only arrow
		     drawn is to the end of the last segment.

	      asize [float] [float]
		     This sets the size of the arrows.	The first [float] con‐
		     trols  the	 arrow's width.	 Its units are those of the x-
		     axis.  The second [float] controls	 the  arrow's  height.
		     It	 is  in the units of the y-axis.  Use the -p option of
		     jgraph to see the default values.

	      afill [float]
	      afill [float]
	      apattern token [float]
		     These  control  the  grayness  or	color  of  arrowheads.
		     Afill,  acfill and apattern work in the same way as fill,
		     cfill and pattern described above.	 The default is	 afill
		     0 (black).

	      linetype [token]
		     This  defines the type of the line connecting the points.
		     Valid entries are solid, dotted, dashed,  longdash,  dot‐
		     dash, dotdotdash, dotdotdashdash, general, and none.  The
		     default is none.  General lets the user  define  his  own
		     linetype	using  the  glines  command  described	below.
		     Points are connected in  the  order  in  which  they  are
		     inserted using the pts command.

	      glines [float]*
		     This  lets	 the user specify the exact dashing of a line.
		     The format is as in postscript -- the first number is the
		     length of the first dash, the second is the length of the
		     space after the first dash, etc.	For  example,  dotdash
		     could be defined as ``glines 5 3 1 3''.

	      linethickness [float]
		     This  defines  the line thickness (in absolute postscript
		     units) of the connecting line.  Default = 1.0.

	      bezier
	      nobezier
		     Bezier specifies to use the curve's points to define suc‐
		     cessive  bezier  curves.  The first point is the starting
		     point.  The next two are control points  for  the	bezier
		     curve  and	 the next point is the ending point.  If there
		     is another bezier, this ending point is also  the	begin‐
		     ning  point  of  the next curve.  The next two points are
		     again control points, and the next point  is  the	ending
		     point.   Thus,  a	bezier	must  have a total of (3n + 1)
		     points, where n is at least 1.
		       In bezier curves, marks and arrows only apply to	 every
		     third point.  Nobezier is the default.

	      clip   This  specifies  that  this curve will be clipped -- that
		     is, no points outside of the of axes will be plotted.

	      noclip This turns off clipping.  If clipping was	specified  for
		     the  entire  graph, then noclip has no effect.  Noclip is
		     the default.

	      label  This edits the label of this curve for  the  purposed  of
		     drawing a legend.	(see LABEL EDITING COMMANDS and LEGEND
		     EDITING COMMANDS).	 Unless the legend  entry  is  custom,
		     setting  any  label  attribute except for the text itself
		     will have no effect.

       LABEL EDITING COMMANDS
	      The following commands are  used	for  editing  labels.	Unless
	      stated  otherwise,  the  defaults are written with each command.
	      Label editing terminates when one of these tokens is not given.

	      : {string}
		     This sets the string of the label.	 If no string is  set,
		     the label will not be printed.

	      x [float]
	      y [float]
		     This  sets the x or y coordinate of the label.  Units are
		     the units of the x and y axes respectively.

	      font [token]
		     This sets the font.  Default is usually ``Times-Roman''.

	      fontsize [float]
		     This sets the fontsize in points.	Default is usually 9.

	      linesep [float]
		     This  sets	 the  distance	between	 lines	in  multilined
		     labels.  Units are points.	 The default is the fontsize.

	      hjl
	      hjc
	      hjr    These  set	 the horizontal justification to left, center,
		     and right, respectively.  Default = hjc.

	      vjt
	      vjc
	      vjb    These set the vertical justification to top  center,  and
		     bottom, respectively.  Default = vjb.

	      rotate [float]
		     This  will	 rotate the string [float] degrees.  The point
		     of rotation is defined by the vj and  hj  commands.   For
		     example,  to  rotate  90  degrees	about  the center of a
		     string, one would use vjc hjc rotate 90.

	      lgray [float]
	      lcolor [float float float]
		     These control the color or the grayness of the label.  It
		     works just as gray and color do for curves and axes.  The
		     default depends on the context.  For example, for strings
		     and the title, the default is black.  For axis labels and
		     hash labels, the default is the color of the  axis.   For
		     text as marks, the default is the curve color.

       LEGEND EDITING COMMANDS
	      These  commands  allow  the  user to alter the appearance of the
	      legend.  Legends are printed out for each curve  having  a  non-
	      null  label.  The legend entries are printed out in the order of
	      ascending curve numbers.	Legend editing terminates when a graph
	      command or top level command is issued.

	      In  earlier versions of jgraph (before version 8.0), the charac‐
	      teristics of each legend entry were set in the label portion  of
	      the  entry's  curve.   Thus,  for	 example,  if  you wanted each
	      entry's fontsize to be 18, you had to set	 it  in	 each  entry's
	      curve.   Now, default legend entry characteristics are set using
	      the defaults keyword.  Unless  a	custom	legend	is  specified,
	      these  default  values  override	any  values set in the entry's
	      curve.  Thus, to get all entries to have a fontsize  of  18,  it
	      must be set using defaults fontsize 18.

	      If legend editing seems cryptic, try the following example:

	    newgraph
	    newcurve marktype box linetype solid label : Solid box
		 pts 0 0 1 1 2 1 3 1
	    newcurve marktype circle linetype dotted label : Dotted circle
		 pts 0 1 1 2 2 2 3 2
	    newcurve marktype x linetype dashed label : Dashed x
		 pts 0 2 1 3 2 3 3 3
	       legend defaults
		 font Times-Italic fontsize 14 x 1.5 y 3.5 hjc vjb

       The  legend of this graph should be centered over the top of the graph,
       and all legend entries should be 14pt Times-Italic.

	      on
	      off    These turn printing  of  the  legend  on  and  off.   The
		     default  is  on  (but,  of	 course, if there are no curve
		     labels defined, there will be no legend).

	      linelength [float]
		     This sets the length of the line printed in front of leg‐
		     end  entries  corresponding  to  curves which have lines.
		     Units are those of the x axis, unless the x axis is loga‐
		     rithmic, in which case the units are inches.  The default
		     may be gotten using the -p option.

	      linebreak [float]
		     This sets the vertical distance between individual legend
		     entries.	Units  are  those  of the y axis, unless the y
		     axis is logarithmic, in which case the units are  inches.
		     The default may be gotten using the -p option.

	      midspace [float]
		     This  sets	 one  of  two  things.	 If  any of the legend
		     entries have lines in them, then this sets	 the  distance
		     between  the  end	of the line and the legend entry text.
		     Otherwise, this sets the distance between center  of  the
		     mark and the legend entry text.  Units are those of the x
		     axis, unless the x axis is logarithmic, in which case the
		     units are inches.	The default may be gotten using the -p
		     option.

	      defaults
		     This lets the user change the attributes  of  all	legend
		     entries.	The defaults are editted as a label (see LABEL
		     EDITING COMMANDS).	 A few of the label fields  have  spe‐
		     cial  meanings:   The  :  field  is ignored.  The x and y
		     fields define where the label will be  printed.   The  hj
		     and  vj  fields  define  the  justification of the legend
		     about the x and y point.  Thus, if x is 10 and y  is  15,
		     and  hjc  vjb are specified, then the legend will be cen‐
		     tered horizontally about x=10, and the bottom of the leg‐
		     end  will	be placed on y=15.  This is analagous to label
		     plotting.	The rotate field is also  analagous  to	 label
		     plotting.

		     Defaults  are as follows.	Rotate is 0.  font is ``Times-
		     Roman'' and fontsize is 9.	 The color is black.   Default
		     justification is hjl and vjc.  The default x and y values
		     are set according to the hj and vj fields.	  See  the  -p
		     option.

	      left
	      right  These  will automatically produce a legend to the left or
		     the right of the graph.  Left is equivalent  to  defaults
		     hjr vjc and right is equivalent to defaults hjl vjc.

	      top
	      bottom These  will  automatically produce a legend on the top or
		     the bottom of the graph.  Top is equivalent  to  defaults
		     hjl vjb
		      and bottom is equivalent to defaults hjl vjt.

	      x [float]
	      y [float]
		     These  are	 included mainly for backward compatability to
		     earlier versions of jgraph.  Setting x and y  is  equiva‐
		     lent to ``defaults x float y float hjl vjt''

	      custom This  lets	 the user control where each individual legend
		     entry goes.   The	values	of  the	 defaults  fields  are
		     ignored,  and  instead,  the values of the curve's labels
		     are  used.	  All  justifications  have  defined  results,
		     except  for  hjc.	 Similarly,  rotation  other than 0 is
		     likely to produce bad effects.

       ADVANCED AXIS EDITING
	      These are more advanced commands	for  editing  an  axis.	  This
	      includes drawing explicit hash marks and labels, moving the hash
	      marks, axes, and labels, not drawing  the	 hash  marks,  labels,
	      axes, etc.

	      gray [float]
	      color [float float float]
		     These  specify  either  the  grayness  of the axis or its
		     color.  Values for gray should be from  0	(black)	 to  1
		     (white).	Values	for  color should also be from 0 to 1.
		     They are RGB values, and thus define the amount  of  red,
		     green  and	 blue  in  the	axis respectively.  Specifying
		     color nullifies the gray  value,  and  vice  versa.   The
		     default is gray 0.	 These values affect every part of the
		     axis:  the label, the hash marks  and  labels,  the  axis
		     line and the grid lines.

	      grid_gray [float]
	      grid_color [float float float]
	      mgrid_gray [float]
	      mgrid_color [float float float]
		     These  allow  the user to define the grayness or color of
		     the gridlines and the mgridlines  to  be  different  from
		     those  of	the  axis  lines.   The	 default grid_gray and
		     grid_color is the same as the axis's gray and color.  The
		     default   mgrid_gray  and	mgrid_color  is	 the  same  as
		     grid_gray and grid_color.

	      hash_at [float]
		     Draw a hash mark at this point.  No  label	 is  made  for
		     this hash mark.

	      mhash_at [float]
		     Draw a minor hash mark at this point.

	      hash_label
		     Edit a hash label (see HASH LABEL EDITING COMMANDS).

	      hash_labels
		     Edit  the	default	 characteristics  of  the hash labels.
		     This is so that the user can change the fontsize,	justi‐
		     fication,	etc., of the hash labels.  Editing hash_labels
		     is just like editing normal  labels  (see	LABEL  EDITING
		     COMMANDS),	 except	 that  the  :, x, and y values are all
		     ignored. Defaults for hash labels are as  follows:	 Font‐
		     size=9,  Font=``Times-Roman'', Justification is dependent
		     on whether it is the x or y axis and  whether  hash_scale
		     is positive or negative.

	      hash_scale [float]
		     This  is  to  change the size and orientation of the hash
		     marks.  Default = -1.0.  Changing this to -2.0 will  dou‐
		     ble  the length of the hash marks.	 Changing this to +1.0
		     will make the hash marks come above or to	the  right  of
		     the axis.

	      draw_hash_marks_at [float]
		     By	 default,  the	hash  marks  are drawn either above or
		     below the axis.  This  command  changes  where  they  are
		     drawn.   Hash_scale  still	 determines  whether  they are
		     drawn above or below this point, and their size.

	      draw_hash_labels_at [float]
		     By default, the hash labels are  drawn  either  above  or
		     below  the	 hash  marks  (again,  this  is	 dependent  on
		     hash_scale).  This command changes where they are	drawn.
		     Justification and fontsize, etc., can be changed with the
		     hash_labels command.

	      auto_hash_marks
	      no_auto_hash_marks
		     This toggles whether or  not  jgraph  will	 automatically
		     create  hash marks according to hash, mhash and shash (or
		     log_base and mhash for logarithmic axes).	The default is
		     auto_hash_marks.

	      auto_hash_labels
	      no_auto_hash_labels
		     This  toggles  whether  or	 not jgraph will automatically
		     create hash labels for the	 auto_hash_marks.   Default  =
		     auto_hash_labels.

	      draw_axis
	      no_draw_axis
		     This  toggles  whether  or	 not  the  axis line is drawn.
		     Default = draw_axis.

	      draw_axis_label
	      no_draw_axis_label
		     This toggles whether or not the axis label (as editted by
		     the label command) is drawn.  Default = draw_axis_label.

	      draw_hash_marks
	      no_draw_hash_marks
		     This  toggles  whether  or not the hash marks (both auto‐
		     matic and those created with hash_at  and	mhash_at)  are
		     drawn.  Default = draw_hash_marks.

	      draw_hash_labels
	      no_draw_hash_labels
		     This  toggles  whether  or not the hash labels are drawn.
		     Default = draw_hash_labels.

       HASH LABEL EDITING COMMANDS
	      Hash labels are simply strings  printed  along  the  appropriate
	      axis.   As  a  default, they are printed at the place denoted by
	      the most recent hash_at or mhash_at for this axis, but this  can
	      be  changed  by the at command.  If there has been no hash_at or
	      mhash_at, then an at command must be given, or there will be  an
	      error.   Hash  editing  terminates when either one of these com‐
	      mands is not given.

	      : {string}
		     This sets the string of the hash label (see Strings above
		     under THE DESCRIPTION LANGUAGE).

	      at [float]
		     This  sets	 the location of the hash label along the cur‐
		     rent axis.

FUNCTION PLOTTING AND OTHER NON-INHERENT FEATURES
       Although jgraph doesn't have any built-in functions  for	 interpolation
       or function plotting, both can be effected in jgraph with a little out‐
       side help:

       Function plotting
	      With the include and shell statement, it's easy to create a file
	      of  points of a function with a c or awk program, and include it
	      into a graph.  See the section HINTS AND EXAMPLE GRAPHS  for  an
	      example of a sin graph produced in this manner.

       Point interpolation
	      Point  interpolation  is	essentially the same as function plot‐
	      ting, and therefore is left out of jgraph.  The  UNIX  spline(1)
	      routine  is  a  simple  way to get interpolation between points.
	      See bailey.jgr described below.  Maybe in a future release.

HINTS AND EXAMPLE GRAPHS
       Jgraph should be able to draw any kind of scatter/line/bar graph that a
       user  desires.	To  embellish  the graph with extra text, axes, lines,
       etc., it is helpful to use copygraph.   The  following  example	graphs
       show a few examples of different features of jgraph.  They should be in
       the directory JGRAPH_DIR.

       - acc.jgr is a simple bar graph.	 Acc.tex is also included to show  how
       one  can	 include the output of jgraph in a LaTeX file.	To get this to
       work, you might have to substitute the  entire  pathname	 of  the  file
       acc.jps in the acc.tex file.

       -  g8.jgr  is a simple graph with some plotted text.  - g8col.jgr shows
       how to produce a color background -- it is
	 the same as g8.jgr only all on a yellow background.  - ebars.jgr is a
       simple  graph  with error bars.	- sin.jgr shows how a sin function can
       be plotted using a simple c program to produce the sin wave.  Moreover,
       this file shows a use of copygraph to plot an extra x and y axis at the
       0 point.

       - sin1.jgr is a further extension of sin.jgr only with one x and y axis
       at 0, but with the axis labels at the left and the bottom of the graph.

       - sin2.jgr is a different sin wave with a logarithmic x axis.

       -  sin3.jgr  shows  how	a  bizarre effect can be gotten by sorting the
       points in a different manner.

       - bailey.jgr shows how to use the UNIX spline(1) routine to get	inter‐
       polation between points.

       -  gpaper.jgr  shows  how  you  can  get jgraph to easily produce graph
       paper.

       - g9n10.jgr contains two graphs with complicated legends.  It  contains
       a description of how the legend was created.

       -  ex1.jgr and ex2.jgr are two examples which were figures 1 and two in
       an extended abstract for a paper about jgraph.

       - mab2.jgr is a graph created by Matt Blaze which shows how  a  compli‐
       cated  output  graph can be quite concisely and simply stated.  In this
       graph, the x axis is a time line.  It shows usage of the hash_label and
       hash_labels commands, as well as displaying how jgraph lets you extract
       data from output files with awk.

       - nr.jgr is an example of a rather complicated bar graph	 with  stripe-
       filled bars.  It was created by Norman Ramsey.

       - hypercube.jgr shows an interesting use of jgraph for picture-drawing.

       - ad.jgr is an example which shows how one can include jgraph output as
       jgraph input.  The file uses the	 eps  token  to	 include  cube.jgr,  a
       jgraph drawing of an Intel hypercube, and disk.jgr, a jgraph drawing of
       a disk, in a picture.

       - alb.jgr is another use of jgraph for picture drawing.	This file  was
       created	by  an awk script which Adam Buchsbaum wrote to draw trees and
       graphs.

       - wortman.jgr is a neat graph of processor utilization written by  Dave
       Wortman	for  SIGPLAN '92.  It was created by an awk script, which pro‐
       cessed the data and emitted the jgraph.

       To view these graphs, use jgraph -P, and view the resulting output file
       with  gs, or a similar postscript viewer.  To make a hard copy of these
       graphs, pipe the output of jgraph -P directly to lpr.

USING JGRAPH TO DRAW PICTURES
       As hypercube.jgr and alb.jgr show, jgraph can be used as	 a  postscript
       preprocessor  to	 make drawings.	 There are two advantages using jgraph
       to draw pictures instead of using standard  drawing  tools  like	 xfig,
       figtool,	 or  idraw.   The  first is that with jgraph, you know exactly
       where strings, lines, boxes, etc, will end up, because  you  plot  them
       explicitly.   The second advantage is that for iterative drawings, with
       lots of patters, you can combine jgraph with awk or c or any other pro‐
       gramming	 language  to  get complex output in a simple way.  Most what-
       you-see-is-what-you-get (WYSIWYG) drawing tools cannot do this.

       The major disadvantage of using jgraph to draw pictures is that	jgraph
       is  not	WYSIWYG.   You	have to set up axes and plot points, lines and
       strings.	 It's all a matter of taste.

       If you'd like to see some more complex pictures drawn with  jgraph,  as
       well  as	 some  hints  to  make	picture-drawing	 easier, send me email
       (jsp@princeton.edu).

EMBEDDING THE OUTPUT IN LATEX
       I haven't read the manuals, but the way I've been loading  these	 files
       into LaTeX has been as follows:

       1.  Toward the beginning of my LaTeX file, I've had ``\input{psfig}''
       2.  Where I've wanted my file, I've put:

	   \begin{figure}
	   \centerline{\psfig{figure=<path-name>/<filename-of-jgraph-output>}}
	   \end{figure}

	   Some versions of dvips or dvi2ps work without the path-name.	 Others
	   require that the path-name be present.

       3.  After running latex on the file, do

	   lpr -d file.dvi

       4.  If that doesn't work, try dvips-ing the file and printing the postscript.

BUGS
       Logarithmic  axes  cannot  contain  points <= 0.	 If I have enough com‐
       plaints to convince me that this is a bug, I'll try to fix it.

       There is no real way to make the axes such that they decrease from left
       to  right  or  low  to high -- or at least not without writing your own
       hash labels.

       There may well be loads of other bugs.  Send to jsp@princeton.edu.

       This is $Revision: 8.3 $.

								     jgraph(1)
[top]

List of man pages available for DragonFly

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net