Previous: karrtn Up: ../plot79.html Next: plot
 The following  description  of  the  <PLOT79>  pie  chart  facility  is
 extracted from the source  code.  It is  expected that many  extensions
 will be  made to  this system  in response  to user  requirements,  and
 suggestions will be gratefully received  [send mail to BEEBE, or  phone
 Nelson Beebe at  581-5254].  At  present, only  one plot  device -  the
 Printronix printers - will be supported  by the version on the  system,
 but other devices  can be trivially  added.  To use  the system on  the
 College of Science DECSYSTEM-20, simply type
 
 @PIECHT inputfile,outputfile,plotfile
 
 Default file extensions  are ".DAT", ".LST",  and ".PLT"  respectively,
 and file names are also defaulted so that in most cases, only a  single
 name is  required  on the  command  line  (use @HELP  FORTIO  for  more
 information).
                  ----source code comments follow----
 This routine provides for free-form input of data for the production of
 pie charts.   Input  is  keyword-directed,  with  the  convention  that
 keywords are recognized because they  start in column 1.  Operands  and
 data values may not start in column 1.  Only the first 72 characters of
 input lines are examined, so that columns 73..80 can contain sequencing
 information on card-oriented systems.
 
 Command keywords  may be  abbreviated  if desired  as  long as  as  the
 abbreviation is  unique.   At  present,  the  first  3  characters  are
 sufficient.
 
 Data items may  be separated  by white  space (blanks  and/or tabs)  or
 commas,  and  blank  lines  can   be  inserted  anywhere  to   increase
 readability.
 
 Numeric values can be specified in integer or floating-point form.  Any
 necessary type conversion will occur automatically.
 
 Character strings should  normally be  surrounded by  quotes, with  the
 usual convention that a quote inside  the string is represented by  two
 successive quotes.  The quote character may be either a single quote or
 a double quote, but its use must be consistent within a single  string.
 If the string consists of a single word, the surrounding quotes may  be
 optionally omitted.
 
 Upper- and lower-case letters are equivalent in keywords, but  distinct
 in strings.
 
 Records are printed, prefixed with the record number, as they are  read
 from the input stream.
 
 The action taken  when an  invalid command  or invalid  input token  is
 encountered is  to  issue  an error  message  describing  the  problem,
 followed by a copy  of the current  input record and  the value of  the
 current column position, then to  discard the remainder of the  current
 input record.  The input stream is then flushed until a command line is
 found, and processing continues normally.  An attempt is always made to
 plot the input data, even though the data may be invalid or incomplete.
 Plotting is only suppressed  if the total of  the data values is  zero,
 since this does not allow definition of segment sizes.
 
 The following options are supported:
    This command has no effect on processing, and is included only so that input data files can contain descriptive information which is not relevant to the program. The text on the remainder of the line is ignored, but the line will be printed as usual by the input reader.
This command should be issued only if the input and output files are directed to the user's terminal. It writes a description of the subject 'topicname' to the output file. 'topicname' may be an abbreviation of an actual command name. Typing a query (?) or a blank for 'topicname' will display a list of all the topics for which HELP is available, and then the user will be prompted to enter a topic. If 'topicname' is prefixed by an asterisk, then all topics which anywhere contain the characters following the asterisk will be displayed.
Place the pie chart center at position (x,y) on the unit square. The default position is (0.50,0.41), which leaves additional space in the top margin for labelling.
Check the input data, but suppress plotting. This option is useful when large numbers of charts are to be made and/or plotting turnaround is slow.
This command has no effect on processing, and is included only so that input data files can contain descriptive information which is not relevant to the program. The text on the remainder of the line is ignored, but the line will be printed as usual by the input reader.
or DATA value1,value2,.... (1 to 25 values) Provide labels and data values for the pie segments (format 1), or only data values (format 2). In the first case, the strings and numeric values will normally alternate, but it is not essential that this be so, since they are readily distinguished. The only important consideration is that the same number of strings and numbers be present. In the second case, labels are assumed to have been provided by the "LEGEND" command. This is useful if multiple charts are to be generated from the same legends and different data values. Numeric values are converted to internal form for computation of the pie segment sizes, but the user-specified strings are preserved for display in the legend boxes in response to a "VALUE" command (see below). Generally, one should order the numeric values to avoid adjacent small values, since this may not permit enough space for the legends. The "SCALE" command below gives a certain amount of control over this.
Display the pie chart for the input data. If the "CHECK" option is not in effect, an implicit "DISPLAY" command is automatically issued on reaching end of file on the input stream, or on finding an "EXIT" or "QUIT" command, if one has not been provided.
Terminate execution, the same as if end-of-file had occurred on input.
Move the pie segments out from the origin by a fraction of the radius given by 'value' in order to produce an exploded pie chart. A suggested size for 'value' is 0.05. If no pie segment indices are specified, the explosion factor applies to all pie segments. Otherwise, it applies only to the segments with the given indices. Explosion factors for other segments are left intact, so that one can obtain different factors for different segments by specifying multiple EXPLODE commands.
 Select the pie segment fill indices.  An index value less than or equal
 to 0 gives no filling,  values 1..84 give progressively darker  filling
 patterns,  and  larger  values  select  user-definable  patterns.   The
 default fill index is k for the k-th pie segment.
 For fill indices larger than 84, the pattern filling line spacings  are
 specified by the digits of the fill index.  The digits taken from  left
 to right represent the spacing  between adjacent lines of the  pattern,
 measured in steps of 0.002  unit in normalized device coordinate  (NDC)
 space.   When  the  digits  are  exhausted,  the  pattern  is  repeated
 cyclically.  Thus,  the digits  in  the fill  index 631  represent  the
 parallel lines with  NDC spacings  0.012, 0.006,  0.002, 0.012,  0.006,
 0.002, etc.  Zero digits in the fill index represent zero spacing,  and
 are therefore  ignored.   They  are nevertheless  useful  for  defining
 patterns whose indices would otherwise conflict with the built-in  fill
 indices.  Odd fill indices give cross-hatched patterns.
     
 Fill index 0 corresponds to no pie segment filling.  The other built-in
 fill indices  1..84  are  constructed by  repeating  the  twelve  basic
 patterns in the following table seven times, each time halving the line
 spacing parameter, d, of  the previous group.  The  value of d for  the
 first group  of twelve  is 0.032,  so that  the closest  lines in  fill
 indices 79..84 (which have  spacing d/64, d/128)  are 0.00025 NDC  unit
 apart.  On typical raster CRT displays, with resolutions of 512 to 4096
 scan lines, this is equal to or smaller than one pixel in width, giving
 solid filling.   Because coordinate  roundoff to  pixel boundaries  can
 result in  blank raster  lines  or missed  pixels  in a  tight  shading
 pattern, it is desirable to choose  a line spacing which is about  half
 the raster spacing in order to get solid filling.
     
   Fill Index       Spacing      Angle      Hatch
 =============      =======      =====      =====
       1               d            0         No
       2               d           45         No
       3               d           90         No
       4               d          135         No
       5               d            0        Yes
       6               d           45        Yes
       7             d,d/2          0         No
       8             d,d/2         45         No
       9             d,d/2         90         No
      10             d,d/2        135         No
      11             d,d/2          0        Yes
      12             d,d/2         45        Yes
 =============      =======      =====      =====
    
 
 Select the symbol font to be used for labelling.  'fontname' may be any
 one of the 144 font identifiers in the <PLOT79> system.  The default is
 'UCCR1'   -   Complex   Roman.    The   optional   second    parameter,
 'switchcharacter', is a single  character which can be  used in a  text
 string to switch to this font.  If omitted, or blank, no switch to this
 font is possible from another font.
    
 Multiple "FONT" commands can be used to select up to 5 fonts, the  most
 recently selected one being the current font.  If more than five  fonts
 are requested, the font name  table is overwritten cyclically, so  that
 the sixth replaces the first, the  seventh replaces the second, and  so
 on.
 By default, the characters "<" and ">" in text strings switch to upper-
 and lower-case respectively; if they are to be used as themselves, they
 must be  doubled.   The  principal fonts  currently  available  are  as
 follows (the  parenthesized  number following  each  name is  the  grid
 size):
 UCKR1 - Cartographic Roman (9)
 UCKG1 - Cartographic Greek (9)
 UCIR1 - Indexical Roman (13)
 UCII1 - Indexical Roman Italic (13)
 UCIG1 - Indexical Greek (13)
 UCSR1 - Simplex Roman (21)
 UCSS1 - Simplex Roman Script (21)
 UCSG1 - Simplex Greek (21)
 UCCR1 - Complex Normal Roman (21)
 UCCI1 - Complex Normal Roman Italic (21)
 UCCG1 - Complex Normal Greek (21)
 UCCS1 - Complex Script (21)
 UCDR1 - Duplex Roman (21)
 UCTR1 - Triplex Roman (21)
 UCGE1 - Gothic English (21)
 UCGI1 - Gothic Italian (21)
 UCGG1 - Gothic German (21)
 UCCC1 - Complex Cyrillic (21)
 UCSA1 - Simplex ASCII (11)
 UCBA1 - Block ASCII (11)
    This command should be issued only if the input and output files are directed to the user's terminal. It writes a description of the subject 'topicname' to the output file. 'topicname' may be an abbreviation of an actual command name. Typing a query (?) or a blank for 'topicname' will display a list of all the topics for which HELP is available, and then the user will be prompted to enter a topic. If 'topicname' is prefixed by an asterisk, then all topics which anywhere contain the characters following the asterisk will be displayed.
Provide labels for each of the pie segments.
Set the pen number for subsequent plotting of pie segments. Labelling is always drawn with pen number 1 (generally black), but the pen used for each pie segment can be specified with this command. If fewer pen numbers are specified than there are pie segments, the list is used cyclically. For example, on a 2-pen plotter "PEN 1 2" could be used to alternate the pens on adjacent pie segments.
Display percentage of total under each segment label.
Terminate execution, the same as if end-of-file had occurred on input.
If parametername (= ALL, CENTER, DATA, EXPLODE, FILL-INDEX, FONT, LEGEND, PEN, PERCENT, SCALE, SIZE, TITLE, VALUE) is omitted, reset all parameters to their original uninitialized or default state. If this option is not specified, parameters are unchanged unless they are specifically given in the input. If one or more parameternames are given, only the requested parameters are reset. A "RESET ALL" command is equivalent to a "RESET". An explicit "RESET CHECK" command is the only way to rescind a "CHECK" command. It should seldom be required, since the intent of the "CHECK" command is to prevent plotting.
Scale the pie segment radius by multiplying it by 'value'. This option is useful if there are so many small segments that legends must be moved into the margin and fall outside the viewport.
Define the size of the plot unit square to be 'value'. The 'unit' keyword may be INCHES or CENTIMETERS or CM, and if omitted, defaults to CM.
Provide titles used to label the chart.
Display actual value under each segment label. If both percent and value are requested, percent is displayed last.
 Example 1:
 ----------
 
 TITLE 'Sample Pie Chart Display' "Superb Fruit Company Production" 
       "(kg in 1980)"
 LEGEND 'Apples' 'Pears','Oranges'
 DATA 20000,60000,15000
 PERCENT
 display
 
 
 FONT UCTR1
 SIZE 30 cm
 EXPLODE 0.05
 VALUE
 DISPLAY
 
 
 Example 2:
 ----------
 TITLE "<<PLOT79>> Installations by Country"  "[03-Mar-81]"
 DATA	USA 		29
 	Canada		3
 	Britain		2
 	Australia	2
 	Mexico		2
 	Sweden		3
 	Denmark		1
 	Japan		1
 	Belgium		1
 PERCENT
 VALUE
 SCALE 0.8
 DISPLAY
 
 EXPLODE 0.05
 DISPLAY