summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2016-06-16 19:48:21 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2016-06-16 19:48:21 (GMT)
commit0c854c2841345e631ccb1b14c1f2703ba6274f7f (patch)
tree89b4f4f8a52d34d15118f2c777ecd1f8b5eb0daf
parent6bfa3176acfeb9e9e838407ca978223abfd9e8fb (diff)
downloadblt-0c854c2841345e631ccb1b14c1f2703ba6274f7f.zip
blt-0c854c2841345e631ccb1b14c1f2703ba6274f7f.tar.gz
blt-0c854c2841345e631ccb1b14c1f2703ba6274f7f.tar.bz2
add html
-rw-r--r--doc/barchart.html1640
-rw-r--r--doc/graph.html1751
-rw-r--r--doc/vector.html704
3 files changed, 4095 insertions, 0 deletions
diff --git a/doc/barchart.html b/doc/barchart.html
new file mode 100644
index 0000000..0f314c2
--- /dev/null
+++ b/doc/barchart.html
@@ -0,0 +1,1640 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>barchart</B> <I>pathName</I> ?<I>option</I> <I>value</I>?...
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>barchart</B> command creates a bar chart for plotting two-dimensional
+ data (X-Y coordinates). A bar chart is a graphic means of comparing
+ numbers by displaying bars of lengths proportional to the y-coordinates
+ of the points they represented. The bar chart has many configurable
+ components: coordinate axes, elements, legend, grid lines, cross hairs,
+ etc. They allow you to customize the look and feel of the graph.
+
+
+</PRE>
+<H2>INTRODUCTION</H2><PRE>
+ The <B>barchart</B> command creates a new window for plotting two-dimensional
+ data (X-Y coordinates), using bars of various lengths to represent the
+ data points. The bars are drawn in a rectangular area displayed in the
+ center of the new window. This is the <I>plotting</I> <I>area</I>. The coordinate
+ axes are drawn in the margins surrounding the plotting area. By
+ default, the legend is drawn in the right margin. The title is dis-
+ played in top margin.
+
+ A <B>barchart</B> widget has several configurable components: coordinate axes,
+ data elements, legend, grid, cross hairs, pens, postscript, and annota-
+ tion markers. Each component can be queried or modified.
+
+ axis Up to four coordinate axes (two X-coordinate and two Y-coor-
+ dinate axes) can be displayed, but you can create and use any
+ number of axes. Axes control what region of data is displayed
+ and how the data is scaled. Each axis consists of the axis
+ line, title, major and minor ticks, and tick labels. Tick
+ labels display the value at each major tick.
+
+ crosshairs
+ Cross hairs are used to position the mouse pointer relative
+ to the X and Y coordinate axes. Two perpendicular lines,
+ intersecting at the current location of the mouse, extend
+ across the plotting area to the coordinate axes.
+
+ element An element represents a set of data to be plotted. It con-
+ tains an x and y vector of values representing the data
+ points. Each data point is displayed as a bar where the
+ length of the bar is proportional to the ordinate (Y-coordi-
+ nate) of the data point. The appearance of the bar, such as
+ its color, stipple, or relief is configurable.
+
+ A special case exists when two or more data points have the
+ same abscissa (X-coordinate). By default, the bars are over-
+ layed, one on top of the other. The bars are drawn in the
+ order of the element display list. But you can also config-
+ ure the bars to be displayed in two other ways. They may be
+ displayed as a stack, where each bar (with the same abscissa)
+ is stacked on the previous. Or they can be drawn side-by-
+ side as thin bars. The width of each bar is a function of
+
+ pen Pens define attributes for elements. Data elements use pens
+ to specify how they should be drawn. A data element may use
+ many pens at once. Here the particular pen used for a data
+ point is determined from each element's weight vector (see
+ the element's <B>-weight</B> and <B>-style</B> options).
+
+ postscript
+ The widget can generate encapsulated PostScript output. This
+ component has several options to configure how the PostScript
+ is generated.
+
+
+</PRE>
+<H2>SYNTAX</H2><PRE>
+ <B>barchart</B> <I>pathName</I> ?<I>option</I> <I>value</I>?... The <B>barchart</B> command creates a new
+ window <I>pathName</I> and makes it into a <B>barchart</B> widget. At the time this
+ command is invoked, there must not exist a window named <I>pathName</I>, but
+ <I>pathName</I>'s parent must exist. Additional options may be specified on
+ the command line or in the option database to configure aspects of the
+ graph such as its colors and font. See the <B>configure</B> operation below
+ for the exact details about what <I>option</I> and <I>value</I> pairs are valid.
+
+ If successful, <B>barchart</B> returns the path name of the widget. It also
+ creates a new Tcl command by the same name. You can use this command
+ to invoke various operations that query or modify the graph. The gen-
+ eral form is: <I>pathName</I> <I>operation</I> ?<I>arg</I>?... Both <I>operation</I> and its argu-
+ ments determine the exact behavior of the command. The operations
+ available for the graph are described in the <B>BARCHART</B> <B>OPERATIONS</B> sec-
+ tion.
+
+ The command can also be used to access components of the graph. <I>path-</I>
+ <I>Name</I> <I>component</I> <I>operation</I> ?<I>arg</I>?... The operation, now located after the
+ name of the component, is the function to be performed on that compo-
+ nent. Each component has its own set of operations that manipulate that
+ component. They will be described below in their own sections.
+
+
+</PRE>
+<H2>EXAMPLE</H2><PRE>
+ The <B>barchart</B> command creates a new bar chart. # Create a new bar
+ chart. Plotting area is black. barchart .b -plotbackground black A
+ new Tcl command .b is created. This command can be used to query and
+ modify the bar chart. For example, to change the title of the graph to
+ "My Plot", you use the new command and the <B>configure</B> operation. #
+ Change the title. .b configure -title "My Plot" To add data elements,
+ you use the command and the <B>element</B> component. # Create a new element
+ named "e1" .b element create e1 \ -xdata { 1 2 3 4 5 6 7 8 9 10 }
+ \ -ydata { 26.18 50.46 72.85 93.31 111.86 128.47 143.14
+ 155.85 166.60 175.38 } The element's X-Y coordinates are
+ specified using lists of numbers. Alternately, BLT vectors could be
+ used to hold the X-Y coordinates. # Create two vectors and add them to
+ the barchart. vector xVector yVector xVector set { 1 2 3 4 5 6 7 8 9
+ 10 } yVector set { 26.18 50.46 72.85 93.31 111.86 128.47 143.14 155.85
+ 166.60 175.38 } n.b element create e1 -xdata xVector -ydata yVec-
+ tor The advantage of using vectors is that when you modify one, the
+ sure we change the bar width too. .b configure -barwidth 0.2 The
+ height of each bar is proportional to the ordinate (Y-coordinate) of
+ the data point.
+
+ If two or more data points have the same abscissa (X-coordinate value),
+ the bars representing those data points may be drawn in various ways.
+ The default is to overlay the bars, one on top of the other. The
+ ordering is determined from the of element display list. If the
+ stacked mode is selected (using the <B>-barmode</B> configuration option), the
+ bars are stacked, each bar above the previous. # Display the elements
+ as stacked. .b configure -barmode stacked If the aligned mode is
+ selected, the bars having the same x-coordinates are displayed side by
+ side. The width of each bar is a fraction of its normal width, based
+ upon the number of bars with the same x-coordinate. # Display the ele-
+ ments side-by-side. .b configure -barmode aligned By default, the ele-
+ ment's label in the legend will be also e1. You can change the label,
+ or specify no legend entry, again using the element's <B>configure</B> opera-
+ tion. # Don't display "e1" in the legend. .b element configure e1
+ -label "" You can configure more than just the element's label. An
+ element has many attributes such as stipple, foreground and background
+ colors, relief, etc. .b element configure e1 -fg red -bg pink \
+ -stipple gray50 Four coordinate axes are automatically created: x,
+ x2, y, and y2. And by default, elements are mapped onto the axes x and
+ y. This can be changed with the <B>-mapx</B> and <B>-mapy</B> options. # Map "e1"
+ on the alternate y axis "y2". .b element configure e1 -mapy y2 Axes
+ can be configured in many ways too. For example, you change the scale
+ of the Y-axis from linear to log using the <B>axis</B> component. # Y-axis is
+ log scale. .b axis configure y -logscale yes One important way axes
+ are used is to zoom in on a particular data region. Zooming is done by
+ simply specifying new axis limits using the <B>-min</B> and <B>-max</B> configuration
+ options. .b axis configure x -min 1.0 -max 1.5 .b axis configure y
+ -min 12.0 -max 55.15 To zoom interactively, you link the<B>axis</B> <B>configure</B>
+ operations with some user interaction (such as pressing the mouse but-
+ ton), using the <B>bind</B> command. To convert between screen and graph
+ coordinates, use the <B>invtransform</B> operation. # Click the button to set
+ a new minimum bind .b &lt;ButtonPress-1&gt; {
+ %W axis configure x -min [%W axis invtransform x %x]
+ %W axis configure x -min [%W axis invtransform x %y] } By default,
+ the limits of the axis are determined from data values. To reset back
+ to the default limits, set the <B>-min</B> and <B>-max</B> options to the empty
+ value. # Reset the axes to autoscale again. .b axis configure x -min
+ {} -max {} .b axis configure y -min {} -max {} By default, the legend
+ is drawn in the right margin. You can change this or any legend con-
+ figuration options using the <B>legend</B> component. # Configure the legend
+ font, color, and relief .b legend configure -position left -relief
+ raised \ -font fixed -fg blue To prevent the legend from being
+ displayed, turn on the <B>-hide</B> option. # Don't display the legend. .b
+ legend configure -hide yes The <B>barchart</B> has simple drawing procedures
+ called markers. They can be used to highlight or annotate data in the
+ graph. The types of markers available are bitmaps, polygons, lines, or
+ windows. Markers can be used, for example, to mark or brush points.
+ For example there may be a line marker which indicates some low-water
+ chart into file "file.ps" .b postscript output file.ps -maxpect yes
+ -decorations no This generates a file file.ps containing the encapsu-
+ lated PostScript of the graph. The option <B>-maxpect</B> says to scale the
+ plot to the size of the page. Turning off the <B>-decorations</B> option
+ denotes that no borders or color backgrounds should be drawn (i.e. the
+ background of the margins, legend, and plotting area will be white).
+
+
+</PRE>
+<H2>SYNTAX</H2><PRE>
+ <B>barchart</B> <I>pathName</I> ?<I>option</I> <I>value</I>?... The <B>barchart</B> command creates a new
+ window <I>pathName</I> and makes it into a barchart widget. At the time this
+ command is invoked, there must not exist a window named <I>pathName</I>, but
+ <I>pathName</I>'s parent must exist. Additional options may may be specified
+ on the command line or in the option database to configure aspects of
+ the bar chart such as its colors and font. See the <B>configure</B> operation
+ below for the exact details as to what <I>option</I> and <I>value</I> pairs are
+ valid.
+
+ If successful, <B>barchart</B> returns <I>pathName</I>. It also creates a new Tcl
+ command <I>pathName</I>. This command may be used to invoke various opera-
+ tions to query or modify the bar chart. It has the general form: <I>path-</I>
+ <I>Name</I> <I>operation</I> ?<I>arg</I>?... Both <I>operation</I> and its arguments determine the
+ exact behavior of the command. The operations available for the bar
+ chart are described in the following section.
+
+
+</PRE>
+<H2>BARCHART OPERATIONS</H2><PRE>
+ <I>pathName</I> <B>bar</B> <I>elemName</I> ?<I>option</I> <I>value</I>?...
+ Creates a new barchart element <I>elemName</I>. It's an error if an
+ element <I>elemName</I> already exists. See the manual for <B>barchart</B>
+ for details about what <I>option</I> and <I>value</I> pairs are valid.
+
+ <I>pathName</I> <B>cget</B> <I>option</I>
+ Returns the current value of the configuration option given by
+ <I>option</I>. <I>Option</I> may be any option described below for the <B>con-</B>
+ <B>figure</B> operation.
+
+ <I>pathName</I> <B>configure</B> ?<I>option</I> <I>value</I>?...
+ Queries or modifies the configuration options of the graph. If
+ <I>option</I> isn't specified, a list describing the current options
+ for <I>pathName</I> is returned. If <I>option</I> is specified, but not
+ <I>value</I>, then a list describing <I>option</I> is returned. If one or
+ more <I>option</I> and <I>value</I> pairs are specified, then for each pair,
+ the option <I>option</I> is set to <I>value</I>. The following options are
+ valid.
+
+ <B>-background</B> <I>color</I>
+ Sets the background color. This includes the margins and
+ legend, but not the plotting area.
+
+ <B>-barmode</B> <I>mode</I>
+ Indicates how related bar elements will be drawn.
+ Related elements have data points with the same abscissas
+ (X-coordinates). <I>Mode</I> indicates how those segments should
+
+ <B>-barwidth</B> <I>value</I>
+ Specifies the width of the bars. This value can be over-
+ rided by the individual elements using their <B>-barwidth</B>
+ configuration option. <I>Value</I> is the width in terms of
+ graph-coordinates. The default width is 1.0.
+
+ <B>-borderwidth</B> <I>pixels</I>
+ Sets the width of the 3-D border around the outside edge
+ of the widget. The <B>-relief</B> option determines if the bor-
+ der is to be drawn. The default is 2.
+
+ <B>-bottommargin</B> <I>pixels</I>
+ Specifies the size of the margin below the X-coordinate
+ axis. If <I>pixels</I> is 0, the size of the margin is selected
+ automatically. The default is 0.
+
+ <B>-bufferelements</B> <I>boolean</I>
+ Indicates whether an internal pixmap to buffer the dis-
+ play of data elements should be used. If <I>boolean</I> is
+ true, data elements are drawn to an internal pixmap.
+ This option is especially useful when the graph is
+ redrawn frequently while the remains data unchanged (for
+ example, moving a marker across the plot). See the <B>SPEED</B>
+ <B>TIPS</B> section. The default is 1.
+
+ <B>-cursor</B> <I>cursor</I>
+ Specifies the widget's cursor. The default cursor is
+ crosshair.
+
+ <B>-font</B> <I>fontName</I>
+ Specifies the font of the graph title. The default is
+ *-Helvetica-Bold-R-Normal-*-18-180-*.
+
+ <B>-halo</B> <I>pixels</I>
+ Specifies a maximum distance to consider when searching
+ for the closest data point (see the element's <B>closest</B>
+ operation below). Data points further than <I>pixels</I> away
+ are ignored. The default is 0.5i.
+
+ <B>-height</B> <I>pixels</I>
+ Specifies the requested height of widget. The default is
+ 4i.
+
+ <B>-invertxy</B> <I>boolean</I>
+ Indicates whether the placement X-axis and Y-axis should
+ be inverted. If <I>boolean</I> is true, the X and Y axes are
+ swapped. The default is 0.
+
+ <B>-justify</B> <I>justify</I>
+ Specifies how the title should be justified. This mat-
+ ters only when the title contains more than one line of
+ area. The <B>-plotrelief</B> option determines if a border is
+ drawn. The default is 2.
+
+ <B>-plotpadx</B> <I>pad</I>
+ Sets the amount of padding to be added to the left and
+ right sides of the plotting area. <I>Pad</I> can be a list of
+ one or two screen distances. If <I>pad</I> has two elements,
+ the left side of the plotting area entry is padded by the
+ first distance and the right side by the second. If <I>pad</I>
+ is just one distance, both the left and right sides are
+ padded evenly. The default is 8.
+
+ <B>-plotpady</B> <I>pad</I>
+ Sets the amount of padding to be added to the top and
+ bottom of the plotting area. <I>Pad</I> can be a list of one or
+ two screen distances. If <I>pad</I> has two elements, the top
+ of the plotting area is padded by the first distance and
+ the bottom by the second. If <I>pad</I> is just one distance,
+ both the top and bottom are padded evenly. The default
+ is 8.
+
+ <B>-plotrelief</B> <I>relief</I>
+ Specifies the 3-D effect for the plotting area. <I>Relief</I>
+ specifies how the interior of the plotting area should
+ appear relative to rest of the graph; for example, raised
+ means the plot should appear to protrude from the graph,
+ relative to the surface of the graph. The default is
+ sunken.
+
+ <B>-relief</B> <I>relief</I>
+ Specifies the 3-D effect for the barchart widget. <I>Relief</I>
+ specifies how the graph should appear relative to widget
+ it is packed into; for example, raised means the graph
+ should appear to protrude. The default is flat.
+
+ <B>-rightmargin</B> <I>pixels</I>
+ Sets the size of margin from the plotting area to the
+ right edge of the window. By default, the legend is
+ drawn in this margin. If <I>pixels</I> is than 1, the margin
+ size is selected automatically.
+
+ <B>-takefocus</B> <I>focus</I>
+ Provides information used when moving the focus from win-
+ dow to window via keyboard traversal (e.g., Tab and
+ Shift-Tab). If <I>focus</I> is 0, this means that this window
+ should be skipped entirely during keyboard traversal. 1
+ means that the this window should always receive the
+ input focus. An empty value means that the traversal
+ scripts make the decision whether to focus on the window.
+ The default is "".
+
+ <B>-tile</B> <I>image</I>
+ <B>-width</B> <I>pixels</I>
+ Specifies the requested width of the widget. The default
+ is 5i.
+
+ <I>pathName</I> <B>crosshairs</B> <I>operation</I> ?<I>arg</I>?
+ See the <B>CROSSHAIRS</B> <B>COMPONENT</B> section.
+
+ <I>pathName</I> <B>element</B> <I>operation</I> ?<I>arg</I>?...
+ See the <B>ELEMENT</B> <B>COMPONENTS</B> section.
+
+ <I>pathName</I> <B>extents</B> <I>item</I>
+ Returns the size of a particular item in the graph. <I>Item</I> must
+ be either leftmargin, rightmargin, topmargin, bottommargin,
+ plotwidth, or plotheight.
+
+ <I>pathName</I> <B>grid</B> <I>operation</I> ?<I>arg</I>?...
+ See the <B>GRID</B> <B>COMPONENT</B> section.
+
+ <I>pathName</I> <B>invtransform</B> <I>winX</I> <I>winY</I>
+ Performs an inverse coordinate transformation, mapping window
+ coordinates back to graph-coordinates, using the standard X-axis
+ and Y-axis. Returns a list of containing the X-Y graph-coordi-
+ nates.
+
+ <I>pathName</I> <B>inside</B> <I>x</I> <I>y</I>
+ Returns 1 is the designated screen-coordinate (<I>x</I> and <I>y</I>) is
+ inside the plotting area and 0 otherwise.
+
+ <I>pathName</I> <B>legend</B> <I>operation</I> ?<I>arg</I>?...
+ See the <B>LEGEND</B> <B>COMPONENT</B> section.
+
+ <I>pathName</I> <B>line</B> <B>operation</B> <B>arg</B>...
+ The operation is the same as <B>element</B>.
+
+ <I>pathName</I> <B>marker</B> <I>operation</I> ?<I>arg</I>?...
+ See the <B>MARKER</B> <B>COMPONENTS</B> section.
+
+ <I>pathName</I> <B>metafile</B> ?<I>fileName</I>?
+ <I>This</I> <I>operation</I> <I>is</I> <I>for</I> <I>Window</I> <I>platforms</I> <I>only</I>. Creates a Windows
+ enhanced metafile of the barchart. If present, <I>fileName</I> is the
+ file name of the new metafile. Otherwise, the metafile is auto-
+ matically added to the clipboard.
+
+ <I>pathName</I> <B>postscript</B> <I>operation</I> ?<I>arg</I>?...
+ See the <B>POSTSCRIPT</B> <B>COMPONENT</B> section.
+
+ <I>pathName</I> <B>snap</B> <I>photoName</I>
+ Takes a snapshot of the graph and stores the contents in the
+ photo image <I>photoName</I>. <I>PhotoName</I> is the name of a Tk photo
+ image that must already exist.
+
+ <I>pathName</I> <B>transform</B> <I>x</I> <I>y</I>
+ A graph is composed of several components: coordinate axes, data ele-
+ ments, legend, grid, cross hairs, postscript, and annotation markers.
+ Instead of one big set of configuration options and operations, the
+ graph is partitioned, where each component has its own configuration
+ options and operations that specifically control that aspect or part of
+ the graph.
+
+ <B>AXIS</B> <B>COMPONENTS</B>
+ Four coordinate axes are automatically created: two X-coordinate axes
+ (x and x2) and two Y-coordinate axes (y, and y2). By default, the axis
+ x is located in the bottom margin, y in the left margin, x2 in the top
+ margin, and y2 in the right margin.
+
+ An axis consists of the axis line, title, major and minor ticks, and
+ tick labels. Major ticks are drawn at uniform intervals along the
+ axis. Each tick is labeled with its coordinate value. Minor ticks are
+ drawn at uniform intervals within major ticks.
+
+ The range of the axis controls what region of data is plotted. Data
+ points outside the minimum and maximum limits of the axis are not plot-
+ ted. By default, the minimum and maximum limits are determined from
+ the data, but you can reset either limit.
+
+ You can create and use several axes. To create an axis, invoke the axis
+ component and its create operation. # Create a new axis called "tem-
+ perature" .b axis create temperature You map data elements to an axis
+ using the element's -mapy and -mapx configuration options. They specify
+ the coordinate axes an element is mapped onto. # Now map the tempera-
+ ture data to this axis. .b element create "temp" -xdata $x -ydata
+ $tempData \
+ -mapy temperature While you can have many axes, only four axes can
+ be displayed simultaneously. They are drawn in each of the margins
+ surrounding the plotting area. The axes x and y are drawn in the bot-
+ tom and left margins. The axes x2 and y2 are drawn in top and right
+ margins. Only x and y are shown by default. Note that the axes can
+ have different scales.
+
+ To display a different axis, you invoke one of the following compo-
+ nents: <B>xaxis</B>, <B>yaxis</B>, <B>x2axis</B>, and <B>y2axis</B>. The <B>use</B> operation designates
+ the axis to be drawn in the corresponding margin: <B>xaxis</B> in the bottom,
+ <B>yaxis</B> in the left, <B>x2axis</B> in the top, and <B>y2axis</B> in the right. # Dis-
+ play the axis temperature in the left margin. .b yaxis use temperature
+
+ You can configure axes in many ways. The axis scale can be linear or
+ logarithmic. The values along the axis can either monotonically
+ increase or decrease. If you need custom tick labels, you can specify
+ a Tcl procedure to format the label any way you wish. You can control
+ how ticks are drawn, by changing the major tick interval or the number
+ of minor ticks. You can define non-uniform tick intervals, such as for
+ time-series plots.
+
+
+ <B>-autorange</B> <I>range</I>
+ Sets the range of values for the axis to <I>range</I>. The axis
+ limits are automatically reset to display the most recent
+ data points in this range. If <I>range</I> is 0.0, the range is
+ determined from the limits of the data. If <B>-min</B> or <B>-max</B>
+ are specified, they override this option. The default is
+ 0.0.
+
+ <B>-color</B> <I>color</I>
+ Sets the color of the axis and tick labels. The default
+ is black.
+
+ <B>-command</B> <I>prefix</I>
+ Specifies a Tcl command to be invoked when formatting the
+ axis tick labels. <I>Prefix</I> is a string containing the name
+ of a Tcl proc and any extra arguments for the procedure.
+ This command is invoked for each major tick on the axis.
+ Two additional arguments are passed to the procedure: the
+ pathname of the widget and the current the numeric value
+ of the tick. The procedure returns the formatted tick
+ label. If "" is returned, no label will appear next to
+ the tick. You can get the standard tick labels again by
+ setting <I>prefix</I> to "". The default is "".
+
+ Please note that this procedure is invoked while the bar
+ chart is redrawn. You may query the widget's configura-
+ tion options. But do not reset options, because this can
+ have unexpected results.
+
+ <B>-descending</B> <I>boolean</I>
+ Indicates whether the values along the axis are monotoni-
+ cally increasing or decreasing. If <I>boolean</I> is true, the
+ axis values will be decreasing. The default is 0.
+
+ <B>-hide</B> <I>boolean</I>
+ Indicates whether the axis is displayed.
+
+ <B>-justify</B> <I>justify</I>
+ Specifies how the axis title should be justified. This
+ matters only when the axis title contains more than one
+ line of text. <I>Justify</I> must be left, right, or center.
+ The default is center.
+
+ <B>-limits</B> <I>formatStr</I>
+ Specifies a printf-like description to format the minimum
+ and maximum limits of the axis. The limits are displayed
+ at the top/bottom or left/right sides of the plotting
+ area. <I>FormatStr</I> is a list of one or two format descrip-
+ tions. If one description is supplied, both the minimum
+ and maximum limits are formatted in the same way. If
+ two, the first designates the format for the minimum
+ limit, the second for the maximum. If "" is given as
+ data points tightly, at the outermost data points, or
+ loosely, at the outer tick intervals. This is relevant
+ only when the axis limit is automatically calculated. If
+ <I>boolean</I> is true, the axis range is "loose". The default
+ is 0.
+
+ <B>-majorticks</B> <I>majorList</I>
+ Specifies where to display major axis ticks. You can use
+ this option to display ticks at non-uniform intervals.
+ <I>MajorList</I> is a list of axis coordinates designating the
+ location of major ticks. No minor ticks are drawn. If
+ <I>majorList</I> is "", major ticks will be automatically com-
+ puted. The default is "".
+
+ <B>-max</B> <I>value</I>
+ Sets the maximum limit of <I>axisName</I>. Any data point
+ greater than <I>value</I> is not displayed. If <I>value</I> is "", the
+ maximum limit is calculated using the largest data value.
+ The default is "".
+
+ <B>-min</B> <I>value</I>
+ Sets the minimum limit of <I>axisName</I>. Any data point less
+ than <I>value</I> is not displayed. If <I>value</I> is "", the minimum
+ limit is calculated using the smallest data value. The
+ default is "".
+
+ <B>-minorticks</B> <I>minorList</I>
+ Specifies where to display minor axis ticks. You can use
+ this option to display minor ticks at non-uniform inter-
+ vals. <I>MinorList</I> is a list of real values, ranging from
+ 0.0 to 1.0, designating the placement of a minor tick.
+ No minor ticks are drawn if the <B>-majortick</B> option is also
+ set. If <I>minorList</I> is "", minor ticks will be automati-
+ cally computed. The default is "".
+
+ <B>-rotate</B> <I>theta</I>
+ Specifies the how many degrees to rotate the axis tick
+ labels. <I>Theta</I> is a real value representing the number of
+ degrees to rotate the tick labels. The default is 0.0
+ degrees.
+
+ <B>-shiftby</B> <I>value</I>
+ Specifies how much to automatically shift the range of
+ the axis. When the new data exceeds the current axis
+ maximum, the maximum is increased in increments of <I>value</I>.
+ You can use this option to prevent the axis limits from
+ being recomputed at each new time point. If <I>value</I> is 0.0,
+ then no automatic shifting is down. The default is 0.0.
+
+ <B>-showticks</B> <I>boolean</I>
+ Indicates whether axis ticks should be drawn. If <I>boolean</I>
+ is true, ticks are drawn. If false, only the axis line
+
+ <B>-tickfont</B> <I>fontName</I>
+ Specifies the font for axis tick labels. The default is
+ *-Courier-Bold-R-Normal-*-100-*.
+
+ <B>-ticklength</B> <I>pixels</I>
+ Sets the length of major and minor ticks (minor ticks are
+ half the length of major ticks). If <I>pixels</I> is less than
+ zero, the axis will be inverted with ticks drawn pointing
+ towards the plot. The default is 0.1i.
+
+ <B>-title</B> <I>text</I>
+ Sets the title of the axis. If <I>text</I> is "", no axis title
+ will be displayed.
+
+ <B>-titlecolor</B> <I>color</I>
+ Sets the color of the axis title. The default is black.
+
+ <B>-titlefont</B> <I>fontName</I>
+ Specifies the font for axis title. The default is *-Hel-
+ vetica-Bold-R-Normal-*-14-140-*.
+
+ Axis configuration options may be also be set by the <B>option</B> com-
+ mand. The resource class is Axis. The resource names are the
+ names of the axes (such as x or x2). option add *Bar-
+ chart.Axis.Color blue option add *Barchart.x.LogScale true
+ option add *Barchart.x2.LogScale false
+
+ <I>pathName</I> <B>axis</B> <B>create</B> <I>axisName</I> ?<I>option</I> <I>value</I>?...
+ Creates a new axis by the name <I>axisName</I>. No axis by the same
+ name can already exist. <I>Option</I> and <I>value</I> are described in above
+ in the axis <B>configure</B> operation.
+
+ <I>pathName</I> <B>axis</B> <B>delete</B> ?<I>axisName</I>?...
+ Deletes the named axes. An axis is not really deleted until it
+ is not longer in use, so it's safe to delete axes mapped to ele-
+ ments.
+
+ <I>pathName</I> <B>axis</B> <B>invtransform</B> <I>axisName</I> <I>value</I>
+ Performs the inverse transformation, changing the screen-coordi-
+ nate <I>value</I> to a graph-coordinate, mapping the value mapped to
+ <I>axisName</I>. Returns the graph-coordinate.
+
+ <I>pathName</I> <B>axis</B> <B>limits</B> <I>axisName</I>
+ Returns a list of the minimum and maximum limits for <I>axisName</I>.
+ The order of the list is min max.
+
+ <I>pathName</I> <B>axis</B> <B>names</B> ?<I>pattern</I>?...
+ Returns a list of axes matching zero or more patterns. If no
+ <I>pattern</I> argument is give, the names of all axes are returned.
+
+ <I>pathName</I> <B>axis</B> <B>transform</B> <I>axisName</I> <I>value</I>
+ Transforms the coordinate <I>value</I> to a screen-coordinate by map-
+
+ right Y-axis.
+
+ They implicitly control the axis that is currently using to that loca-
+ tion. By default, <B>xaxis</B> uses the x axis, <B>yaxis</B> uses y, <B>x2axis</B> uses x2,
+ and <B>y2axis</B> uses y2. These components can be more convenient to use
+ than always determining what axes are current being displayed by the
+ graph.
+
+ The following operations are available for axes. They mirror exactly
+ the operations of the <B>axis</B> component. The <I>axis</I> argument must be <B>xaxis</B>,
+ <B>x2axis</B>, <B>yaxis</B>, or <B>y2axis</B>.
+
+ <I>pathName</I> <I>axis</I> <B>cget</B> <I>option</I>
+
+ <I>pathName</I> <I>axis</I> <B>configure</B> ?<I>option</I> <I>value</I>?...
+
+ <I>pathName</I> <I>axis</I> <B>invtransform</B> <I>value</I>
+
+ <I>pathName</I> <I>axis</I> <B>limits</B>
+
+ <I>pathName</I> <I>axis</I> <B>transform</B> <I>value</I>
+
+ <I>pathName</I> <I>axis</I> <B>use</B> ?<I>axisName</I>?
+ Designates the axis <I>axisName</I> is to be displayed at this loca-
+ tion. <I>AxisName</I> can not be already in use at another location.
+ This command returns the name of the axis currently using this
+ location.
+
+ <B>CROSSHAIRS</B> <B>COMPONENT</B>
+ Cross hairs consist of two intersecting lines (one vertical and one
+ horizontal) drawn completely across the plotting area. They are used
+ to position the mouse in relation to the coordinate axes. Cross hairs
+ differ from line markers in that they are implemented using XOR drawing
+ primitives. This means that they can be quickly drawn and erased with-
+ out redrawing the entire widget.
+
+ The following operations are available for cross hairs:
+
+ <I>pathName</I> <B>crosshairs</B> <B>cget</B> <I>option</I>
+ Returns the current value of the cross hairs configuration
+ option given by <I>option</I>. <I>Option</I> may be any option described
+ below for the cross hairs <B>configure</B> operation.
+
+ <I>pathName</I> <B>crosshairs</B> <B>configure</B> ?<I>option</I> <I>value</I>?...
+ Queries or modifies the configuration options of the cross
+ hairs. If <I>option</I> isn't specified, a list describing all the
+ current options for the cross hairs is returned. If <I>option</I> is
+ specified, but not <I>value</I>, then a list describing <I>option</I> is
+ returned. If one or more <I>option</I> and <I>value</I> pairs are specified,
+ then for each pair, the cross hairs option <I>option</I> is set to
+ <I>value</I>. The following options are available for cross hairs.
+
+ <B>-linewidth</B> <I>pixels</I>
+ Set the width of the cross hair lines. The default is 1.
+
+ <B>-position</B> <I>pos</I>
+ Specifies the screen position where the cross hairs
+ intersect. <I>Pos</I> must be in the form "<I>@x,y</I>", where <I>x</I> and <I>y</I>
+ are the window coordinates of the intersection.
+
+ Cross hairs configuration options may be also be set by the
+ <B>option</B> command. The resource name and class are crosshairs and
+ Crosshairs respectively. option add *Bar-
+ chart.Crosshairs.LineWidth 2 option add *Bar-
+ chart.Crosshairs.Color red
+
+ <I>pathName</I> <B>crosshairs</B> <B>off</B>
+ Turns off the cross hairs.
+
+ <I>pathName</I> <B>crosshairs</B> <B>on</B>
+ Turns on the display of the cross hairs.
+
+ <I>pathName</I> <B>crosshairs</B> <B>toggle</B>
+ Toggles the current state of the cross hairs, alternately map-
+ ping and unmapping the cross hairs.
+
+
+</PRE>
+<H2>ELEMENTS</H2><PRE>
+ A data element represents a set of data. It contains x and y vectors
+ which are the coordinates of the data points. Elements are displayed
+ as bars where the length of the bar is proportional to the ordinate of
+ the data point. Elements also control the appearance of the data, such
+ as the color, stipple, relief, etc.
+
+ When new data elements are created, they are automatically added to a
+ list of displayed elements. The display list controls what elements
+ are drawn and in what order.
+
+ The following operations are available for elements.
+
+ <I>pathName</I> <B>element</B> <B>activate</B> <I>elemName</I> ?<I>index</I>?...
+ Specifies the data points of element <I>elemName</I> to be drawn using
+ active foreground and background colors. <I>ElemName</I> is the name
+ of the element and <I>index</I> is a number representing the index of
+ the data point. If no indices are present then all data points
+ become active.
+
+ <I>pathName</I> <B>element</B> <B>bind</B> <I>tagName</I> ?<I>sequence</I>? ?<I>command</I>?
+ Associates <I>command</I> with <I>tagName</I> such that whenever the event
+ sequence given by <I>sequence</I> occurs for an element with this tag,
+ <I>command</I> will be invoked. The syntax is similar to the <B>bind</B> com-
+ mand except that it operates on graph elements, rather than wid-
+ gets. See the <B>bind</B> manual entry for complete details on <I>sequence</I>
+ and the substitutions performed on <I>command</I> before invoking it.
+
+
+ <I>pathName</I> <B>element</B> <B>closest</B> <I>x</I> <I>y</I> ?<I>option</I> <I>value</I>?... ?<I>elemName</I>?...
+ Finds the data point representing the bar closest to the window
+ coordinates <I>x</I> and <I>y</I> in the element <I>elemName</I>. <I>ElemName</I> is the
+ name of an element, which must be currently displayed. If no
+ elements are specified, then all displayed elements are
+ searched. It returns a key-value list containing the name of
+ the closest element, the index of its closest point, and the
+ graph-coordinates of the point. If no data point within the
+ threshold distance can be found, "" is returned. The following
+ <I>option</I>-<I>value</I> pairs are available.
+
+ <B>-halo</B> <I>pixels</I>
+ Specifies a threshold distance where selected data points
+ are ignored. <I>Pixels</I> is a valid screen distance, such as
+ 2 or 1.2i. If this option isn't specified, then it
+ defaults to the value of the <B>barchart</B>'s <B>-halo</B> option.
+
+ <I>pathName</I> <B>element</B> <B>configure</B> <I>elemName</I> ?<I>elemName</I>... ?<I>option</I> <I>value</I>?...
+ Queries or modifies the configuration options for elements.
+ Several elements can be modified at the same time. If <I>option</I>
+ isn't specified, a list describing all the current options for
+ <I>elemName</I> is returned. If <I>option</I> is specified, but not <I>value</I>,
+ then a list describing the option <I>option</I> is returned. If one or
+ more <I>option</I> and <I>value</I> pairs are specified, then for each pair,
+ the element option <I>option</I> is set to <I>value</I>. The following
+ options are valid for elements.
+
+ <B>-activepen</B> <I>penName</I>
+ Specifies pen to use to draw active element. If <I>penName</I>
+ is "", no active elements will be drawn. The default is
+ activeLine.
+
+ <B>-bindtags</B> <I>tagList</I>
+ Specifies the binding tags for the element. <I>TagList</I> is a
+ list of binding tag names. The tags and their order will
+ determine how events for elements. Each tag in the list
+ matching the current event sequence will have its Tcl
+ command executed. Implicitly the name of the element is
+ always the first tag in the list. The default value is
+ all.
+
+ <B>-background</B> <I>color</I>
+ Sets the the color of the border around each bar. The
+ default is white.
+
+ <B>-barwidth</B> <I>value</I>
+ Specifies the width the bars drawn for the element.
+ <I>Value</I> is the width in X-coordinates. If this option
+ isn't specified, the width of each bar is the value of
+ the widget's <B>-barwidth</B> option.
+
+ a list of numeric expressions representing the X-Y coor-
+ dinate pairs of each data point.
+
+ <B>-foreground</B> <I>color</I>
+ Sets the color of the interior of the bars.
+
+ <B>-hide</B> <I>boolean</I>
+ Indicates whether the element is displayed. The default
+ is no.
+
+ <B>-label</B> <I>text</I>
+ Sets the element's label in the legend. If <I>text</I> is "",
+ the element will have no entry in the legend. The
+ default label is the element's name.
+
+ <B>-mapx</B> <I>xAxis</I>
+ Selects the X-axis to map the element's X-coordinates
+ onto. <I>XAxis</I> must be the name of an axis. The default is
+ x.
+
+ <B>-mapy</B> <I>yAxis</I>
+ Selects the Y-axis to map the element's Y-coordinates
+ onto. <I>YAxis</I> must be the name of an axis. The default is
+ y.
+
+ <B>-relief</B> <I>string</I>
+ Specifies the 3-D effect desired for bars. <I>Relief</I> indi-
+ cates how the interior of the bar should appear relative
+ to the surface of the chart; for example, raised means
+ the bar should appear to protrude from the surface of the
+ plotting area. The default is raised.
+
+ <B>-stipple</B> <I>bitmap</I>
+ Specifies a stipple pattern with which to draw the bars.
+ If <I>bitmap</I> is "", then the bar is drawn in a solid fash-
+ ion.
+
+ <B>-xdata</B> <I>xVector</I>
+ Specifies the x-coordinate vector of the data. <I>XVector</I>
+ is the name of a BLT vector or a list of numeric expres-
+ sions.
+
+ <B>-ydata</B> <I>yVector</I>
+ Specifies the y-coordinate vector of the data. <I>YVector</I>
+ is the name of a BLT vector or a list of numeric expres-
+ sions.
+
+ Element configuration options may also be set by the <B>option</B> com-
+ mand. The resource names in the option database are prefixed
+ by elem. option add *Barchart.Element.background blue
+
+ <I>pathName</I> <B>element</B> <B>create</B> <I>elemName</I> ?<I>option</I> <I>value</I>?...
+
+ <I>pathName</I> <B>element</B> <B>exists</B> <I>elemName</I>
+ Returns 1 if an element <I>elemName</I> currently exists and 0 other-
+ wise.
+
+ <I>pathName</I> <B>element</B> <B>names</B> ?<I>pattern</I>?...
+ Returns the elements matching one or more pattern. If no <I>pat-</I>
+ <I>tern</I> is given, the names of all elements is returned.
+
+ <I>pathName</I> <B>element</B> <B>show</B> ?<I>nameList</I>?
+ Queries or modifies the element display list. The element dis-
+ play list designates the elements drawn and in what order.
+ <I>NameList</I> is a list of elements to be displayed in the order they
+ are named. If there is no <I>nameList</I> argument, the current dis-
+ play list is returned.
+
+ <I>pathName</I> <B>element</B> <B>type</B> <I>elemName</I>
+ Returns the type of <I>elemName</I>. If the element is a bar element,
+ the commands returns the string "bar", otherwise it returns
+ "line".
+
+ <B>GRID</B> <B>COMPONENT</B>
+ Grid lines extend from the major and minor ticks of each axis horizon-
+ tally or vertically across the plotting area. The following operations
+ are available for grid lines.
+
+ <I>pathName</I> <B>grid</B> <B>cget</B> <I>option</I>
+ Returns the current value of the grid line configuration option
+ given by <I>option</I>. <I>Option</I> may be any option described below for
+ the grid <B>configure</B> operation.
+
+ <I>pathName</I> <B>grid</B> <B>configure</B> ?<I>option</I> <I>value</I>?...
+ Queries or modifies the configuration options for grid lines.
+ If <I>option</I> isn't specified, a list describing all the current
+ grid options for <I>pathName</I> is returned. If <I>option</I> is specified,
+ but not <I>value</I>, then a list describing <I>option</I> is returned. If
+ one or more <I>option</I> and <I>value</I> pairs are specified, then for each
+ pair, the grid line option <I>option</I> is set to <I>value</I>. The follow-
+ ing options are valid for grid lines.
+
+ <B>-color</B> <I>color</I>
+ Sets the color of the grid lines. The default is black.
+
+ <B>-dashes</B> <I>dashList</I>
+ Sets the dash style of the grid lines. <I>DashList</I> is a list
+ of up to 11 numbers that alternately represent the
+ lengths of the dashes and gaps on the grid lines. Each
+ number must be between 1 and 255. If <I>dashList</I> is "", the
+ grid will be solid lines.
+
+ <B>-hide</B> <I>boolean</I>
+ Indicates whether the grid should be drawn. If <I>boolean</I> is
+
+ <B>-minor</B> <I>boolean</I>
+ Indicates whether the grid lines should be drawn for
+ minor ticks. If <I>boolean</I> is true, the lines will appear
+ at minor tick intervals. The default is 1.
+
+ Grid configuration options may also be set by the <B>option</B> com-
+ mand. The resource name and class are grid and Grid respec-
+ tively. option add *Barchart.grid.LineWidth 2 option add *Bar-
+ chart.Grid.Color black
+
+ <I>pathName</I> <B>grid</B> <B>off</B>
+ Turns off the display the grid lines.
+
+ <I>pathName</I> <B>grid</B> <B>on</B>
+ Turns on the display the grid lines.
+
+ <I>pathName</I> <B>grid</B> <B>toggle</B>
+ Toggles the display of the grid.
+
+ <B>LEGEND</B> <B>COMPONENT</B>
+ The legend displays a list of the data elements. Each entry consists
+ of the element's symbol and label. The legend can appear in any margin
+ (the default location is in the right margin). It can also be posi-
+ tioned anywhere within the plotting area.
+
+ The following operations are valid for the legend.
+
+ <I>pathName</I> <B>legend</B> <B>activate</B> <I>pattern</I>...
+ Selects legend entries to be drawn using the active legend col-
+ ors and relief. All entries whose element names match <I>pattern</I>
+ are selected. To be selected, the element name must match only
+ one <I>pattern</I>.
+
+ <I>pathName</I> <B>legend</B> <B>bind</B> <I>tagName</I> ?<I>sequence</I>? ?<I>command</I>?
+ Associates <I>command</I> with <I>tagName</I> such that whenever the event
+ sequence given by <I>sequence</I> occurs for a legend entry with this
+ tag, <I>command</I> will be invoked. Implicitly the element names in
+ the entry are tags. The syntax is similar to the <B>bind</B> command
+ except that it operates on legend entries, rather than widgets.
+ See the <B>bind</B> manual entry for complete details on <I>sequence</I> and
+ the substitutions performed on <I>command</I> before invoking it.
+
+ If all arguments are specified then a new binding is created,
+ replacing any existing binding for the same <I>sequence</I> and <I>tag-</I>
+ <I>Name</I>. If the first character of <I>command</I> is + then <I>command</I> aug-
+ ments an existing binding rather than replacing it. If no <I>com-</I>
+ <I>mand</I> argument is provided then the command currently associated
+ with <I>tagName</I> and <I>sequence</I> (it's an error occurs if there's no
+ such binding) is returned. If both <I>command</I> and <I>sequence</I> are
+ missing then a list of all the event sequences for which bind-
+ ings have been defined for <I>tagName</I>.
+
+ <B>-activebackground</B> <I>color</I>
+ Sets the background color for active legend entries. All
+ legend entries marked active (see the legend <B>activate</B>
+ operation) are drawn using this background color.
+
+ <B>-activeborderwidth</B> <I>pixels</I>
+ Sets the width of the 3-D border around the outside edge
+ of the active legend entries. The default is 2.
+
+ <B>-activeforeground</B> <I>color</I>
+ Sets the foreground color for active legend entries. All
+ legend entries marked as active (see the legend <B>activate</B>
+ operation) are drawn using this foreground color.
+
+ <B>-activerelief</B> <I>relief</I>
+ Specifies the 3-D effect desired for active legend
+ entries. <I>Relief</I> denotes how the interior of the entry
+ should appear relative to the legend; for example, raised
+ means the entry should appear to protrude from the leg-
+ end, relative to the surface of the legend. The default
+ is flat.
+
+ <B>-anchor</B> <I>anchor</I>
+ Tells how to position the legend relative to the posi-
+ tioning point for the legend. This is dependent on the
+ value of the <B>-position</B> option. The default is center.
+
+ left or right
+ The anchor describes how to position the leg-
+ end vertically.
+
+ top or bottom
+ The anchor describes how to position the leg-
+ end horizontally.
+
+ @x,y The anchor specifies how to position the leg-
+ end relative to the positioning point. For
+ example, if <I>anchor</I> is center then the legend
+ is centered on the point; if <I>anchor</I> is n then
+ the legend will be drawn such that the top
+ center point of the rectangular region occu-
+ pied by the legend will be at the positioning
+ point.
+
+ plotarea The anchor specifies how to position the leg-
+ end relative to the plotting area. For exam-
+ ple, if <I>anchor</I> is center then the legend is
+ centered in the plotting area; if <I>anchor</I> is
+ ne then the legend will be drawn such that
+ occupies the upper right corner of the plot-
+ ting area.
+
+ of the legend (if such border is being drawn; the <B>relief</B>
+ option determines this). The default is 2 pixels.
+
+ <B>-font</B> <I>fontName</I>
+ <I>FontName</I> specifies a font to use when drawing the labels
+ of each element into the legend. The default is *-Hel-
+ vetica-Bold-R-Normal-*-12-120-*.
+
+ <B>-foreground</B> <I>color</I>
+ Sets the foreground color of the text drawn for the ele-
+ ment's label. The default is black.
+
+ <B>-hide</B> <I>boolean</I>
+ Indicates whether the legend should be displayed. If
+ <I>boolean</I> is true, the legend will not be draw. The
+ default is no.
+
+ <B>-ipadx</B> <I>pad</I>
+ Sets the amount of internal padding to be added to the
+ width of each legend entry. <I>Pad</I> can be a list of one or
+ two screen distances. If <I>pad</I> has two elements, the left
+ side of the legend entry is padded by the first distance
+ and the right side by the second. If <I>pad</I> is just one
+ distance, both the left and right sides are padded
+ evenly. The default is 2.
+
+ <B>-ipady</B> <I>pad</I>
+ Sets an amount of internal padding to be added to the
+ height of each legend entry. <I>Pad</I> can be a list of one or
+ two screen distances. If <I>pad</I> has two elements, the top
+ of the entry is padded by the first distance and the bot-
+ tom by the second. If <I>pad</I> is just one distance, both the
+ top and bottom of the entry are padded evenly. The
+ default is 2.
+
+ <B>-padx</B> <I>pad</I>
+ Sets the padding to the left and right exteriors of the
+ legend. <I>Pad</I> can be a list of one or two screen dis-
+ tances. If <I>pad</I> has two elements, the left side of the
+ legend is padded by the first distance and the right side
+ by the second. If <I>pad</I> has just one distance, both the
+ left and right sides are padded evenly. The default is
+ 4.
+
+ <B>-pady</B> <I>pad</I>
+ Sets the padding above and below the legend. <I>Pad</I> can be
+ a list of one or two screen distances. If <I>pad</I> has two
+ elements, the area above the legend is padded by the
+ first distance and the area below by the second. If <I>pad</I>
+ is just one distance, both the top and bottom areas are
+ padded evenly. The default is 0.
+
+ drawn on top of any elements that may overlap it. The
+ default is no.
+
+ <B>-relief</B> <I>relief</I>
+ Specifies the 3-D effect for the border around the leg-
+ end. <I>Relief</I> specifies how the interior of the legend
+ should appear relative to the bar chart; for example,
+ raised means the legend should appear to protrude from
+ the bar chart, relative to the surface of the bar chart.
+ The default is sunken.
+
+ Legend configuration options may also be set by the <B>option</B> com-
+ mand. The resource name and class are legend and Legend respec-
+ tively. option add *Barchart.legend.Foreground blue option add
+ *Barchart.Legend.Relief raised
+
+ <I>pathName</I> <B>legend</B> <B>deactivate</B> <I>pattern</I>...
+ Selects legend entries to be drawn using the normal legend col-
+ ors and relief. All entries whose element names match <I>pattern</I>
+ are selected. To be selected, the element name must match only
+ one <I>pattern</I>.
+
+ <I>pathName</I> <B>legend</B> <B>get</B> <I>pos</I>
+ Returns the name of the element whose entry is at the screen
+ position <I>pos</I> in the legend. <I>Pos</I> must be in the form "<I>@x,y</I>",
+ where <I>x</I> and <I>y</I> are window coordinates. If the given coordinates
+ do not lie over a legend entry, "" is returned.
+
+ <B>PEN</B> <B>COMPONENTS</B>
+ Pens define attributes for elements. Pens mirror the configuration
+ options of data elements that pertain to how symbols and lines are
+ drawn. Data elements use pens to determine how they are drawn. A data
+ element may use several pens at once. In this case, the pen used for a
+ particular data point is determined from each element's weight vector
+ (see the element's <B>-weight</B> and <B>-style</B> options).
+
+ One pen, called activeBar, is automatically created. It's used as the
+ default active pen for elements. So you can change the active
+ attributes for all elements by simply reconfiguring this pen. .g pen
+ configure "activeBar" -fg green -bg green4 You can create and use sev-
+ eral pens. To create a pen, invoke the pen component and its create
+ operation. .g pen create myPen You map pens to a data element using
+ either the element's <B>-pen</B> or <B>-activepen</B> options. .g element create
+ "e1" -xdata $x -ydata $tempData \
+ -pen myPen An element can use several pens at once. This is done by
+ specifying the name of the pen in the element's style list (see the
+ <B>-styles</B> option). .g element configure "e1" -styles { myPen 2.0 3.0 }
+ This says that any data point with a weight between 2.0 and 3.0 is to
+ be drawn using the pen myPen. All other points are drawn with the ele-
+ ment's default attributes.
+
+ The following operations are available for pen components.
+ <I>value</I>. The following options are valid for pens.
+
+ <B>-background</B> <I>color</I>
+ Sets the the color of the border around each bar. The
+ default is white.
+
+ <B>-borderwidth</B> <I>pixels</I>
+ Sets the border width of the 3-D border drawn around the
+ outside of each bar. The <B>-relief</B> option determines if
+ such a border is drawn. <I>Pixels</I> must be a valid screen
+ distance like 2 or 0.25i. The default is 2.
+
+ <B>-foreground</B> <I>color</I>
+ Sets the color of the interior of the bars.
+
+ <B>-relief</B> <I>string</I>
+ Specifies the 3-D effect desired for bars. <I>Relief</I> indi-
+ cates how the interior of the bar should appear relative
+ to the surface of the chart; for example, raised means
+ the bar should appear to protrude from the bar chart,
+ relative to the surface of the plotting area. The
+ default is raised.
+
+ <B>-stipple</B> <I>bitmap</I>
+ Specifies a stipple pattern with which to draw the bars.
+ If <I>bitmap</I> is "", then the bar is drawn in a solid fash-
+ ion.
+
+ <B>-type</B> <I>elemType</I>
+ Specifies the type of element the pen is to be used with.
+ This option should only be employed when creating the
+ pen. This is for those that wish to mix different types
+ of elements (bars and lines) on the same graph. The
+ default type is "bar".
+
+ Pen configuration options may be also be set by the <B>option</B> com-
+ mand. The resource class is Pen. The resource names are the
+ names of the pens. option add *Barchart.Pen.Foreground
+ blue option add *Barchart.activeBar.foreground green
+
+ <I>pathName</I> <B>pen</B> <B>create</B> <I>penName</I> ?<I>option</I> <I>value</I>?...
+ Creates a new pen by the name <I>penName</I>. No pen by the same name
+ can already exist. <I>Option</I> and <I>value</I> are described in above in
+ the pen <B>configure</B> operation.
+
+ <I>pathName</I> <B>pen</B> <B>delete</B> ?<I>penName</I>?...
+ Deletes the named pens. A pen is not really deleted until it is
+ not longer in use, so it's safe to delete pens mapped to ele-
+ ments.
+
+ <I>pathName</I> <B>pen</B> <B>names</B> ?<I>pattern</I>?...
+ Returns a list of pens matching zero or more patterns. If no
+ <I>option</I>. <I>Option</I> may be any option described below for the post-
+ script <B>configure</B> operation.
+
+ <I>pathName</I> <B>postscript</B> <B>configure</B> ?<I>option</I> <I>value</I>?...
+ Queries or modifies the configuration options for PostScript
+ generation. If <I>option</I> isn't specified, a list describing the
+ current postscript options for <I>pathName</I> is returned. If <I>option</I>
+ is specified, but not <I>value</I>, then a list describing <I>option</I> is
+ returned. If one or more <I>option</I> and <I>value</I> pairs are specified,
+ then for each pair, the postscript option <I>option</I> is set to
+ <I>value</I>. The following postscript options are available.
+
+ <B>-center</B> <I>boolean</I>
+ Indicates whether the plot should be centered on the
+ PostScript page. If <I>boolean</I> is false, the plot will be
+ placed in the upper left corner of the page. The default
+ is 1.
+
+ <B>-colormap</B> <I>varName</I>
+ <I>VarName</I> must be the name of a global array variable that
+ specifies a color mapping from the X color name to Post-
+ Script. Each element of <I>varName</I> must consist of Post-
+ Script code to set a particular color value (e.g. ``1.0
+ 1.0 0.0 setrgbcolor''). When generating color informa-
+ tion in PostScript, the array variable <I>varName</I> is checked
+ if an element of the name as the color exists. If so, it
+ uses its value as the PostScript command to set the
+ color. If this option hasn't been specified, or if there
+ isn't an entry in <I>varName</I> for a given color, then it uses
+ the red, green, and blue intensities from the X color.
+
+ <B>-colormode</B> <I>mode</I>
+ Specifies how to output color information. <I>Mode</I> must be
+ either color (for full color output), gray (convert all
+ colors to their gray-scale equivalents) or mono (convert
+ foreground colors to black and background colors to
+ white). The default mode is color.
+
+ <B>-fontmap</B> <I>varName</I>
+ <I>VarName</I> must be the name of a global array variable that
+ specifies a font mapping from the X font name to Post-
+ Script. Each element of <I>varName</I> must consist of a Tcl
+ list with one or two elements; the name and point size of
+ a PostScript font. When outputting PostScript commands
+ for a particular font, the array variable <I>varName</I> is
+ checked to see if an element by the specified font
+ exists. If there is such an element, then the font
+ information contained in that element is used in the
+ PostScript output. (If the point size is omitted from
+ the list, the point size of the X font is used). Other-
+ wise the X font is examined in an attempt to guess what
+ PostScript font to use. This works only for fonts whose
+ widget's height. The default is 0.
+
+ <B>-landscape</B> <I>boolean</I>
+ If <I>boolean</I> is true, this specifies the printed area is to
+ be rotated 90 degrees. In non-rotated output the X-axis
+ of the printed area runs along the short dimension of the
+ page (``portrait'' orientation); in rotated output the
+ X-axis runs along the long dimension of the page (``land-
+ scape'' orientation). Defaults to 0.
+
+ <B>-maxpect</B> <I>boolean</I>
+ Indicates to scale the plot so that it fills the Post-
+ Script page. The aspect ratio of the barchart is still
+ retained. The default is 0.
+
+ <B>-padx</B> <I>pad</I>
+ Sets the horizontal padding for the left and right page
+ borders. The borders are exterior to the plot. <I>Pad</I> can
+ be a list of one or two screen distances. If <I>pad</I> has two
+ elements, the left border is padded by the first distance
+ and the right border by the second. If <I>pad</I> has just one
+ distance, both the left and right borders are padded
+ evenly. The default is 1i.
+
+ <B>-pady</B> <I>pad</I>
+ Sets the vertical padding for the top and bottom page
+ borders. The borders are exterior to the plot. <I>Pad</I> can
+ be a list of one or two screen distances. If <I>pad</I> has two
+ elements, the top border is padded by the first distance
+ and the bottom border by the second. If <I>pad</I> has just one
+ distance, both the top and bottom borders are padded
+ evenly. The default is 1i.
+
+ <B>-paperheight</B> <I>pixels</I>
+ Sets the height of the postscript page. This can be used
+ to select between different page sizes (letter, A4, etc).
+ The default height is 11.0i.
+
+ <B>-paperwidth</B> <I>pixels</I>
+ Sets the width of the postscript page. This can be used
+ to select between different page sizes (letter, A4, etc).
+ The default width is 8.5i.
+
+ <B>-width</B> <I>pixels</I>
+ Sets the width of the plot. This lets you generate a
+ plot of a width different from that of the widget. If
+ <I>pixels</I> is 0, the width is the same as the widget's width.
+ The default is 0.
+
+ Postscript configuration options may be also be set by the
+ <B>option</B> command. The resource name and class are postscript and
+ Postscript respectively. option add *Barchart.postscript.Deco-
+
+ with a particular element, so that when the element is hidden or un-
+ hidden, so is the marker. By default, markers are the last items
+ drawn, so that data elements will appear in behind them. You can
+ change this by configuring the <B>-under</B> option.
+
+ Markers, in contrast to elements, don't affect the scaling of the coor-
+ dinate axes. They can also have <I>elastic</I> coordinates (specified by -Inf
+ and Inf respectively) that translate into the minimum or maximum limit
+ of the axis. For example, you can place a marker so it always remains
+ in the lower left corner of the plotting area, by using the coordinates
+ -Inf,-Inf.
+
+ The following operations are available for markers.
+
+ <I>pathName</I> <B>marker</B> <B>after</B> <I>markerId</I> ?<I>afterId</I>?
+ Changes the order of the markers, drawing the first marker after
+ the second. If no second <I>afterId</I> argument is specified, the
+ marker is placed at the end of the display list. This command
+ can be used to control how markers are displayed since markers
+ are drawn in the order of this display list.
+
+ <I>pathName</I> <B>marker</B> <B>before</B> <I>markerId</I> ?<I>beforeId</I>?
+ Changes the order of the markers, drawing the first marker
+ before the second. If no second <I>beforeId</I> argument is specified,
+ the marker is placed at the beginning of the display list. This
+ command can be used to control how markers are displayed since
+ markers are drawn in the order of this display list.
+
+ <I>pathName</I> <B>marker</B> <B>bind</B> <I>tagName</I> ?<I>sequence</I>? ?<I>command</I>?
+ Associates <I>command</I> with <I>tagName</I> such that whenever the event
+ sequence given by <I>sequence</I> occurs for a marker with this tag,
+ <I>command</I> will be invoked. The syntax is similar to the <B>bind</B> com-
+ mand except that it operates on graph markers, rather than wid-
+ gets. See the <B>bind</B> manual entry for complete details on <I>sequence</I>
+ and the substitutions performed on <I>command</I> before invoking it.
+
+ If all arguments are specified then a new binding is created,
+ replacing any existing binding for the same <I>sequence</I> and <I>tag-</I>
+ <I>Name</I>. If the first character of <I>command</I> is + then <I>command</I> aug-
+ ments an existing binding rather than replacing it. If no <I>com-</I>
+ <I>mand</I> argument is provided then the command currently associated
+ with <I>tagName</I> and <I>sequence</I> (it's an error occurs if there's no
+ such binding) is returned. If both <I>command</I> and <I>sequence</I> are
+ missing then a list of all the event sequences for which bind-
+ ings have been defined for <I>tagName</I>.
+
+ <I>pathName</I> <B>marker</B> <B>cget</B> <I>option</I>
+ Returns the current value of the marker configuration option
+ given by <I>option</I>. <I>Option</I> may be any option described below in
+ the <B>configure</B> operation.
+
+ <I>pathName</I> <B>marker</B> <B>configure</B> <I>markerId</I> ?<I>option</I> <I>value</I>?...
+ determine how events for markers are handled. Each tag
+ in the list matching the current event sequence will have
+ its Tcl command executed. Implicitly the name of the
+ marker is always the first tag in the list. The default
+ value is all.
+
+ <B>-coords</B> <I>coordList</I>
+ Specifies the coordinates of the marker. <I>CoordList</I> is a
+ list of graph-coordinates. The number of coordinates
+ required is dependent on the type of marker. Text,
+ image, and window markers need only two coordinates (an
+ X-Y coordinate). Bitmap markers can take either two or
+ four coordinates (if four, they represent the corners of
+ the bitmap). Line markers need at least four coordinates,
+ polygons at least six. If <I>coordList</I> is "", the marker
+ will not be displayed. The default is "".
+
+ <B>-element</B> <I>elemName</I>
+ Links the marker with the element <I>elemName</I>. The marker
+ is drawn only if the element is also currently displayed
+ (see the element's <B>show</B> operation). If <I>elemName</I> is "",
+ the marker is always drawn. The default is "".
+
+ <B>-hide</B> <I>boolean</I>
+ Indicates whether the marker is drawn. If <I>boolean</I> is
+ true, the marker is not drawn. The default is no.
+
+ <B>-mapx</B> <I>xAxis</I>
+ Specifies the X-axis to map the marker's X-coordinates
+ onto. <I>XAxis</I> must the name of an axis. The default is x.
+
+ <B>-mapy</B> <I>yAxis</I>
+ Specifies the Y-axis to map the marker's Y-coordinates
+ onto. <I>YAxis</I> must the name of an axis. The default is y.
+
+ <B>-name</B> <I>markerId</I>
+ Changes the identifier for the marker. The identifier
+ <I>markerId</I> can not already be used by another marker. If
+ this option isn't specified, the marker's name is
+ uniquely generated.
+
+ <B>-under</B> <I>boolean</I>
+ Indicates whether the marker is drawn below/above data
+ elements. If <I>boolean</I> is true, the marker is be drawn
+ underneath the data elements. Otherwise, the marker is
+ drawn on top of the element. The default is 0.
+
+ <B>-xoffset</B> <I>pixels</I>
+ Specifies a screen distance to offset the marker horizon-
+ tally. <I>Pixels</I> is a valid screen distance, such as 2 or
+ 1.2i. The default is 0.
+
+ Creates a marker of the selected type. <I>Type</I> may be either text,
+ line, bitmap, image, polygon, or window. This command returns
+ the marker identifier, used as the <I>markerId</I> argument in the
+ other marker-related commands. If the <B>-name</B> option is used,
+ this overrides the normal marker identifier. If the name pro-
+ vided is already used for another marker, the new marker will
+ replace the old.
+
+ <I>pathName</I> <B>marker</B> <B>delete</B> ?<I>name</I>?...
+ Removes one of more markers. The graph will automatically be
+ redrawn without the marker..
+
+ <I>pathName</I> <B>marker</B> <B>exists</B> <I>markerId</I>
+ Returns 1 if the marker <I>markerId</I> exists and 0 otherwise.
+
+ <I>pathName</I> <B>marker</B> <B>names</B> ?<I>pattern</I>?
+ Returns the names of all the markers that currently exist. If
+ <I>pattern</I> is supplied, only those markers whose names match it
+ will be returned.
+
+ <I>pathName</I> <B>marker</B> <B>type</B> <I>markerId</I>
+ Returns the type of the marker given by <I>markerId</I>, such as line
+ or text. If <I>markerId</I> is not a valid a marker identifier, "" is
+ returned.
+
+ <B>BITMAP</B> <B>MARKERS</B>
+ A bitmap marker displays a bitmap. The size of the bitmap is con-
+ trolled by the number of coordinates specified. If two coordinates,
+ they specify the position of the top-left corner of the bitmap. The
+ bitmap retains its normal width and height. If four coordinates, the
+ first and second pairs of coordinates represent the corners of the bit-
+ map. The bitmap will be stretched or reduced as necessary to fit into
+ the bounding rectangle.
+
+ Bitmap markers are created with the marker's <B>create</B> operation in the
+ form: <I>pathName</I> <B>marker</B> <B>create</B> <B>bitmap</B> ?<I>option</I> <I>value</I>?... There may be
+ many <I>option</I>-<I>value</I> pairs, each sets a configuration options for the
+ marker. These same <I>option</I>-<I>value</I> pairs may be used with the marker's
+ <B>configure</B> operation.
+
+ The following options are specific to bitmap markers:
+
+ <B>-background</B> <I>color</I>
+ Same as the <B>-fill</B> option.
+
+ <B>-bitmap</B> <I>bitmap</I>
+ Specifies the bitmap to be displayed. If <I>bitmap</I> is "", the
+ marker will not be displayed. The default is "".
+
+ <B>-fill</B> <I>color</I>
+ Sets the background color of the bitmap. If <I>color</I> is the empty
+ string, no background will be transparent. The default back-
+
+ <B>-rotate</B> <I>theta</I>
+ Sets the rotation of the bitmap. <I>Theta</I> is a real number repre-
+ senting the angle of rotation in degrees. The marker is first
+ rotated and then placed according to its anchor position. The
+ default rotation is 0.0.
+
+ <B>IMAGE</B> <B>MARKERS</B>
+ A image marker displays an image. Image markers are created with the
+ marker's <B>create</B> operation in the form: <I>pathName</I> <B>marker</B> <B>create</B> <B>image</B>
+ ?<I>option</I> <I>value</I>?... There may be many <I>option</I>-<I>value</I> pairs, each sets a
+ configuration option for the marker. These same <I>option</I>-<I>value</I> pairs may
+ be used with the marker's <B>configure</B> operation.
+
+ The following options are specific to image markers:
+
+ <B>-anchor</B> <I>anchor</I>
+ <I>Anchor</I> tells how to position the image relative to the position-
+ ing point for the image. For example, if <I>anchor</I> is center then
+ the image is centered on the point; if <I>anchor</I> is n then the
+ image will be drawn such that the top center point of the rect-
+ angular region occupied by the image will be at the positioning
+ point. This option defaults to center.
+
+ <B>-image</B> <I>image</I>
+ Specifies the image to be drawn. If <I>image</I> is "", the marker
+ will not be drawn. The default is "".
+
+ <B>LINE</B> <B>MARKERS</B>
+ A line marker displays one or more connected line segments. Line mark-
+ ers are created with marker's <B>create</B> operation in the form: <I>pathName</I>
+ <B>marker</B> <B>create</B> <B>line</B> ?<I>option</I> <I>value</I>?... There may be many <I>option</I>-<I>value</I>
+ pairs, each sets a configuration option for the marker. These same
+ <I>option</I>-<I>value</I> pairs may be used with the marker's <B>configure</B> operation.
+
+ The following options are specific to line markers:
+
+ <B>-dashes</B> <I>dashList</I>
+ Sets the dash style of the line. <I>DashList</I> is a list of up to 11
+ numbers that alternately represent the lengths of the dashes and
+ gaps on the line. Each number must be between 1 and 255. If
+ <I>dashList</I> is "", the marker line will be solid.
+
+ <B>-fill</B> <I>color</I>
+ Sets the background color of the line. This color is used with
+ striped lines (see the <B>-fdashesoption).</B> <B>If</B> <I>color</I> is the empty
+ string, no background color is drawn (the line will be dashed,
+ not striped). The default background color is "".
+
+ <B>-linewidth</B> <I>pixels</I>
+ Sets the width of the lines. The default width is 0.
+
+ in the form: <I>pathName</I> <B>marker</B> <B>create</B> <B>polygon</B> ?<I>option</I> <I>value</I>?... There
+ may be many <I>option</I>-<I>value</I> pairs, each sets a configuration option for
+ the marker. These same <I>option</I>-<I>value</I> pairs may be used with the <B>marker</B>
+ <B>configure</B> command to change the marker's configuration. The following
+ options are supported for polygon markers:
+
+ <B>-dashes</B> <I>dashList</I>
+ Sets the dash style of the outline of the polygon. <I>DashList</I> is a
+ list of up to 11 numbers that alternately represent the lengths
+ of the dashes and gaps on the outline. Each number must be
+ between 1 and 255. If <I>dashList</I> is "", the outline will be a
+ solid line.
+
+ <B>-fill</B> <I>color</I>
+ Sets the fill color of the polygon. If <I>color</I> is "", then the
+ interior of the polygon is transparent. The default is white.
+
+ <B>-linewidth</B> <I>pixels</I>
+ Sets the width of the outline of the polygon. If <I>pixels</I> is zero,
+ no outline is drawn. The default is 0.
+
+ <B>-outline</B> <I>color</I>
+ Sets the color of the outline of the polygon. If the polygon is
+ stippled (see the <B>-stipple</B> option), then this represents the
+ foreground color of the stipple. The default is black.
+
+ <B>-stipple</B> <I>bitmap</I>
+ Specifies that the polygon should be drawn with a stippled pat-
+ tern rather than a solid color. <I>Bitmap</I> specifies a bitmap to use
+ as the stipple pattern. If <I>bitmap</I> is "", then the polygon is
+ filled with a solid color (if the <B>-fill</B> option is set). The
+ default is "".
+
+ <B>TEXT</B> <B>MARKERS</B>
+ A text marker displays a string of characters on one or more lines of
+ text. Embedded newlines cause line breaks. They may be used to anno-
+ tate regions of the graph. Text markers are created with the <B>create</B>
+ operation in the form: <I>pathName</I> <B>marker</B> <B>create</B> <B>text</B> ?<I>option</I> <I>value</I>?...
+ There may be many <I>option</I>-<I>value</I> pairs, each sets a configuration option
+ for the text marker. These same <I>option</I>-<I>value</I> pairs may be used with
+ the marker's <B>configure</B> operation.
+
+ The following options are specific to text markers:
+
+ <B>-anchor</B> <I>anchor</I>
+ <I>Anchor</I> tells how to position the text relative to the position-
+ ing point for the text. For example, if <I>anchor</I> is center then
+ the text is centered on the point; if <I>anchor</I> is n then the text
+ will be drawn such that the top center point of the rectangular
+ region occupied by the text will be at the positioning point.
+ This default is center.
+
+
+ <B>-justify</B> <I>justify</I>
+ Specifies how the text should be justified. This matters only
+ when the marker contains more than one line of text. <I>Justify</I>
+ must be left, right, or center. The default is center.
+
+ <B>-outline</B> <I>color</I>
+ Sets the color of the text. The default value is black.
+
+ <B>-padx</B> <I>pad</I>
+ Sets the padding to the left and right exteriors of the text.
+ <I>Pad</I> can be a list of one or two screen distances. If <I>pad</I> has
+ two elements, the left side of the text is padded by the first
+ distance and the right side by the second. If <I>pad</I> has just one
+ distance, both the left and right sides are padded evenly. The
+ default is 4.
+
+ <B>-pady</B> <I>pad</I>
+ Sets the padding above and below the text. <I>Pad</I> can be a list of
+ one or two screen distances. If <I>pad</I> has two elements, the area
+ above the text is padded by the first distance and the area
+ below by the second. If <I>pad</I> is just one distance, both the top
+ and bottom areas are padded evenly. The default is 4.
+
+ <B>-rotate</B> <I>theta</I>
+ Specifies the number of degrees to rotate the text. <I>Theta</I> is a
+ real number representing the angle of rotation. The marker is
+ first rotated along its center and is then drawn according to
+ its anchor position. The default is 0.0.
+
+ <B>-text</B> <I>text</I>
+ Specifies the text of the marker. The exact way the text is
+ displayed may be affected by other options such as <B>-anchor</B> or
+ <B>-rotate</B>.
+
+ <B>WINDOW</B> <B>MARKERS</B>
+ A window marker displays a widget at a given position. Window markers
+ are created with the marker's <B>create</B> operation in the form: <I>pathName</I>
+ <B>marker</B> <B>create</B> <B>window</B> ?<I>option</I> <I>value</I>?... There may be many <I>option</I>-<I>value</I>
+ pairs, each sets a configuration option for the marker. These same
+ <I>option</I>-<I>value</I> pairs may be used with the marker's <B>configure</B> command.
+
+ The following options are specific to window markers:
+
+ <B>-anchor</B> <I>anchor</I>
+ <I>Anchor</I> tells how to position the widget relative to the posi-
+ tioning point for the widget. For example, if <I>anchor</I> is center
+ then the widget is centered on the point; if <I>anchor</I> is n then
+ the widget will be displayed such that the top center point of
+ the rectangular region occupied by the widget will be at the
+ positioning point. This option defaults to center.
+
+
+</PRE>
+<H2>GRAPH COMPONENT BINDINGS</H2><PRE>
+ Specific barchart components, such as elements, markers and legend
+ entries, can have a command trigger when event occurs in them, much
+ like canvas items in Tk's canvas widget. Not all event sequences are
+ valid. The only binding events that may be specified are those related
+ to the mouse and keyboard (such as <B>Enter</B>, <B>Leave</B>, <B>ButtonPress</B>, <B>Motion</B>,
+ and <B>KeyPress</B>).
+
+ Only one element or marker can be picked during an event. This means,
+ that if the mouse is directly over both an element and a marker, only
+ the uppermost component is selected. This isn't true for legend
+ entries. Both a legend entry and an element (or marker) binding com-
+ mands will be invoked if both items are picked.
+
+ It is possible for multiple bindings to match a particular event. This
+ could occur, for example, if one binding is associated with the element
+ name and another is associated with one of the element's tags (see the
+ <B>-bindtags</B> option). When this occurs, all of the matching bindings are
+ invoked. A binding associated with the element name is invoked first,
+ followed by one binding for each of the element's bindtags. If there
+ are multiple matching bindings for a single tag, then only the most
+ specific binding is invoked. A continue command in a binding script
+ terminates that script, and a break command terminates that script and
+ skips any remaining scripts for the event, just as for the bind com-
+ mand.
+
+ The <B>-bindtags</B> option for these components controls addition tag names
+ which can be matched. Implicitly elements and markers always have tags
+ matching their names. Setting the value of the <B>-bindtags</B> option
+ doesn't change this.
+
+
+</PRE>
+<H2>C LANGUAGE API</H2><PRE>
+ You can manipulate data elements from the C language. There may be
+ situations where it is too expensive to translate the data values from
+ ASCII strings. Or you might want to read data in a special file for-
+ mat.
+
+ Data can manipulated from the C language using BLT vectors. You spec-
+ ify the X-Y data coordinates of an element as vectors and manipulate
+ the vector from C. The barchart will be redrawn automatically after
+ the vectors are updated.
+
+ From Tcl, create the vectors and configure the element to use them.
+ vector X Y .g element configure line1 -xdata X -ydata Y To set data
+ points from C, you pass the values as arrays of doubles using the
+ <B>Blt_ResetVector</B> call. The vector is reset with the new data and at the
+ next idle point (when Tk re-enters its event loop), the graph will be
+ redrawn automatically. #include &lt;tcl.h&gt; #include &lt;blt.h&gt;
+
+ register int i; Blt_Vector *xVec, *yVec; double x[50], y[50];
+
+ /* Get the BLT vectors "X" and "Y" (created above from Tcl) */ if
+ There may be cases where the bar chart needs to be drawn and updated as
+ quickly as possible. If drawing speed becomes a big problem, here are
+ a few tips to speed up displays.
+
+ <B>o</B> Try to minimize the number of data points. The more data points
+ looked at, the more work the bar chart must do.
+
+ <B>o</B> If your data is generated as floating point values, the time required
+ to convert the data values to and from ASCII strings can be signifi-
+ cant, especially when there any many data points. You can avoid the
+ redundant string-to-decimal conversions using the C API to BLT vec-
+ tors.
+
+ <B>o</B> Don't stipple or dash the element. Solid bars are much faster.
+
+ <B>o</B> If you update data elements frequently, try turning off the widget's
+ <B>-bufferelements</B> option. When the bar chart is first displayed, it
+ draws data elements into an internal pixmap. The pixmap acts as a
+ cache, so that when the bar chart needs to be redrawn again, and the
+ data elements or coordinate axes haven't changed, the pixmap is sim-
+ ply copied to the screen. This is especially useful when you are
+ using markers to highlight points and regions on the bar chart. But
+ if the bar chart is updated frequently, changing either the element
+ data or coordinate axes, the buffering becomes redundant.
+
+
+</PRE>
+<H2>LIMITATIONS</H2><PRE>
+ Auto-scale routines do not use requested min/max limits as boundaries
+ when the axis is logarithmically scaled.
+
+ The PostScript output generated for polygons with more than 1500 points
+ may exceed the limits of some printers (See PostScript Language Refer-
+ ence Manual, page 568). The work-around is to break the polygon into
+ separate pieces.
+
+
+</PRE>
+<H2>KEYWORDS</H2><PRE>
+ bar chart, widget
+
+
+
+BLT BLT_VERSION barchart(n)
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/graph.html b/doc/graph.html
new file mode 100644
index 0000000..412c817
--- /dev/null
+++ b/doc/graph.html
@@ -0,0 +1,1751 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>graph</B> <I>pathName</I> ?<I>option</I> <I>value</I>?...
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>graph</B> command creates a graph for plotting two-dimensional data
+ (X-Y coordinates). It has many configurable components: coordinate
+ axes, elements, legend, grid lines, cross hairs, etc. They allow you
+ to customize the look and feel of the graph.
+
+
+</PRE>
+<H2>INTRODUCTION</H2><PRE>
+ The <B>graph</B> command creates a new window for plotting two-dimensional
+ data (X-Y coordinates). Data points are plotted in a rectangular area
+ displayed in the center of the new window. This is the <I>plotting</I> <I>area</I>.
+ The coordinate axes are drawn in the margins around the plotting area.
+ By default, the legend is displayed in the right margin. The title is
+ displayed in top margin.
+
+ The <B>graph</B> widget is composed of several components: coordinate axes,
+ data elements, legend, grid, cross hairs, pens, postscript, and annota-
+ tion markers.
+
+ axis The graph has four standard axes (x, x2, y, and y2), but you
+ can create and display any number of axes. Axes control what
+ region of data is displayed and how the data is scaled. Each
+ axis consists of the axis line, title, major and minor ticks,
+ and tick labels. Tick labels display the value at each major
+ tick.
+
+ crosshairs
+ Cross hairs are used to position the mouse pointer relative
+ to the X and Y coordinate axes. Two perpendicular lines,
+ intersecting at the current location of the mouse, extend
+ across the plotting area to the coordinate axes.
+
+ element An element represents a set of data points. Elements can be
+ plotted with a symbol at each data point and lines connecting
+ the points. The appearance of the element, such as its sym-
+ bol, line width, and color is configurable.
+
+ grid Extends the major and minor ticks of the X-axis and/or Y-axis
+ across the plotting area.
+
+ legend The legend displays the name and symbol of each data element.
+ The legend can be drawn in any margin or in the plotting
+ area.
+
+ marker Markers are used annotate or highlight areas of the graph.
+ For example, you could use a polygon marker to fill an area
+ under a curve, or a text marker to label a particular data
+ point. Markers come in various forms: text strings, bitmaps,
+ connected line segments, images, polygons, or embedded wid-
+ gets.
+
+ <B>graph</B> <I>pathName</I> ?<I>option</I> <I>value</I>?... The <B>graph</B> command creates a new win-
+ dow <I>pathName</I> and makes it into a <B>graph</B> widget. At the time this com-
+ mand is invoked, there must not exist a window named <I>pathName</I>, but
+ <I>pathName</I>'s parent must exist. Additional options may be specified on
+ the command line or in the option database to configure aspects of the
+ graph such as its colors and font. See the <B>configure</B> operation below
+ for the exact details about what <I>option</I> and <I>value</I> pairs are valid.
+
+ If successful, <B>graph</B> returns the path name of the widget. It also cre-
+ ates a new Tcl command by the same name. You can use this command to
+ invoke various operations that query or modify the graph. The general
+ form is: <I>pathName</I> <I>operation</I> ?<I>arg</I>?... Both <I>operation</I> and its arguments
+ determine the exact behavior of the command. The operations available
+ for the graph are described in the <B>GRAPH</B> <B>OPERATIONS</B> section.
+
+ The command can also be used to access components of the graph. <I>path-</I>
+ <I>Name</I> <I>component</I> <I>operation</I> ?<I>arg</I>?... The operation, now located after the
+ name of the component, is the function to be performed on that compo-
+ nent. Each component has its own set of operations that manipulate that
+ component. They will be described below in their own sections.
+
+
+</PRE>
+<H2>EXAMPLE</H2><PRE>
+ The <B>graph</B> command creates a new graph. # Create a new graph. Plotting
+ area is black. graph .g -plotbackground black A new Tcl command .g is
+ also created. This command can be used to query and modify the graph.
+ For example, to change the title of the graph to "My Plot", you use the
+ new command and the graph's <B>configure</B> operation. # Change the title.
+ .g configure -title "My Plot" A graph has several components. To access
+ a particular component you use the component's name. For example, to
+ add data elements, you use the new command and the <B>element</B> component.
+ # Create a new element named "line1" .g element create line1 \
+ -xdata { 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 } \ -ydata {
+ 26.18 50.46 72.85 93.31 111.86 128.47 143.14 155.85 166.60
+ 175.38 } The element's X-Y coordinates are specified using lists of
+ numbers. Alternately, BLT vectors could be used to hold the X-Y coor-
+ dinates. # Create two vectors and add them to the graph. vector xVec
+ yVec xVec set { 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 } yVec set {
+ 26.18 50.46 72.85 93.31 111.86 128.47 143.14 155.85 166.60 175.38
+ } .g element create line1 -xdata xVec -ydata yVec The advantage of
+ using vectors is that when you modify one, the graph is automatically
+ redrawn to reflect the new values. # Change the y coordinate of the
+ first point. set <B>yVector(0)</B> 25.18 An element named e1 is now created
+ in .b. It is automatically added to the display list of elements. You
+ can use this list to control in what order elements are displayed. To
+ query or reset the element display list, you use the element's <B>show</B>
+ operation. # Get the current display list set elemList [.b element
+ show] # Remove the first element so it won't be displayed. .b element
+ show [lrange $elemList 0 end] The element will be displayed by as many
+ bars as there are data points (in this case there are ten). The bars
+ will be drawn centered at the x-coordinate of the data point. All the
+ bars will have the same attributes (colors, stipple, etc). The width
+ of each bar is by default one unit. You can change this with using the
+ example, you change the scale of the Y-axis from linear to log using
+ the <B>axis</B> component. # Y-axis is log scale. .g axis configure y
+ -logscale yes One important way axes are used is to zoom in on a par-
+ ticular data region. Zooming is done by simply specifying new axis
+ limits using the <B>-min</B> and <B>-max</B> configuration options. .g axis config-
+ ure x -min 1.0 -max 1.5 .g axis configure y -min 12.0 -max 55.15 To
+ zoom interactively, you link the <B>axis</B> <B>configure</B> operations with some
+ user interaction (such as pressing the mouse button), using the <B>bind</B>
+ command. To convert between screen and graph coordinates, use the
+ <B>invtransform</B> operation. # Click the button to set a new minimum bind
+ .g &lt;ButtonPress-1&gt; {
+ %W axis configure x -min [%W axis invtransform x %x]
+ %W axis configure x -min [%W axis invtransform x %y] } By default,
+ the limits of the axis are determined from data values. To reset back
+ to the default limits, set the <B>-min</B> and <B>-max</B> options to the empty
+ value. # Reset the axes to autoscale again. .g axis configure x -min
+ {} -max {} .g axis configure y -min {} -max {} By default, the legend
+ is drawn in the right margin. You can change this or any legend con-
+ figuration options using the <B>legend</B> component. # Configure the legend
+ font, color, and relief .g legend configure -position left -relief
+ raised \ -font fixed -fg blue To prevent the legend from being
+ displayed, turn on the <B>-hide</B> option. # Don't display the legend. .g
+ legend configure -hide yes The <B>graph</B> widget has simple drawing proce-
+ dures called markers. They can be used to highlight or annotate data
+ in the graph. The types of markers available are bitmaps, images, poly-
+ gons, lines, or windows. Markers can be used, for example, to mark or
+ brush points. In this example, is a text marker that labels the data
+ first point. Markers are created using the <B>marker</B> component. # Create
+ a label for the first data point of "line1". .g marker create text
+ -name first_marker -coords { 0.2 26.18 } \ -text "start" -anchor
+ se -xoffset -10 -yoffset -10 This creates a text marker named
+ first_marker. It will display the text "start" near the coordinates of
+ the first data point. The <B>-anchor</B>, <B>-xoffset</B>, and <B>-yoffset</B> options are
+ used to display the marker above and to the left of the data point, so
+ that the data point isn't covered by the marker. By default, markers
+ are drawn last, on top of data. You can change this with the <B>-under</B>
+ option. # Draw the label before elements are drawn. .g marker config-
+ ure first_marker -under yes You can add cross hairs or grid lines using
+ the <B>crosshairs</B> and <B>grid</B> components. # Display both cross hairs and
+ grid lines. .g crosshairs configure -hide no -color red .g grid con-
+ figure -hide no -dashes { 2 2 } # Set up a binding to reposition the
+ crosshairs. bind .g &lt;Motion&gt; {
+ .g crosshairs configure -position @%x,%y } The crosshairs are repo-
+ sitioned as the mouse pointer is moved in the graph. The pointer X-Y
+ coordinates define the center of the crosshairs.
+
+ Finally, to get hardcopy of the graph, use the <B>postscript</B> component. #
+ Print the graph into file "file.ps" .g postscript output file.ps -max-
+ pect yes -decorations no This generates a file file.ps containing the
+ encapsulated PostScript of the graph. The option <B>-maxpect</B> says to
+ scale the plot to the size of the page. Turning off the <B>-decorations</B>
+ option denotes that no borders or color backgrounds should be drawn
+ <I>option</I>. <I>Option</I> may be any option described below for the <B>con-</B>
+ <B>figure</B> operation.
+
+ <I>pathName</I> <B>configure</B> ?<I>option</I> <I>value</I>?...
+ Queries or modifies the configuration options of the graph. If
+ <I>option</I> isn't specified, a list describing the current options
+ for <I>pathName</I> is returned. If <I>option</I> is specified, but not
+ <I>value</I>, then a list describing <I>option</I> is returned. If one or
+ more <I>option</I> and <I>value</I> pairs are specified, then for each pair,
+ the option <I>option</I> is set to <I>value</I>. The following options are
+ valid.
+
+ <B>-aspect</B> <I>width/height</I>
+ Force a fixed aspect ratio of <I>width/height</I>, a floating
+ point number.
+
+ <B>-background</B> <I>color</I>
+ Sets the background color. This includes the margins and
+ legend, but not the plotting area.
+
+ <B>-borderwidth</B> <I>pixels</I>
+ Sets the width of the 3-D border around the outside edge
+ of the widget. The <B>-relief</B> option determines if the bor-
+ der is to be drawn. The default is 2.
+
+ <B>-bottommargin</B> <I>pixels</I>
+ If non-zero, overrides the computed size of the margin
+ extending below the X-coordinate axis. If <I>pixels</I> is 0,
+ the automatically computed size is used. The default is
+ 0.
+
+ <B>-bufferelements</B> <I>boolean</I>
+ Indicates whether an internal pixmap to buffer the dis-
+ play of data elements should be used. If <I>boolean</I> is
+ true, data elements are drawn to an internal pixmap.
+ This option is especially useful when the graph is
+ redrawn frequently while the remains data unchanged (for
+ example, moving a marker across the plot). See the <B>SPEED</B>
+ <B>TIPS</B> section. The default is 1.
+
+ <B>-cursor</B> <I>cursor</I>
+ Specifies the widget's cursor. The default cursor is
+ crosshair.
+
+ <B>-font</B> <I>fontName</I>
+ Specifies the font of the graph title. The default is
+ *-Helvetica-Bold-R-Normal-*-18-180-*.
+
+ <B>-halo</B> <I>pixels</I>
+ Specifies a maximum distance to consider when searching
+ for the closest data point (see the element's <B>closest</B>
+ operation below). Data points further than <I>pixels</I> away
+ text. <I>Justify</I> must be left, right, or center. The
+ default is center.
+
+ <B>-leftmargin</B> <I>pixels</I>
+ If non-zero, overrides the computed size of the margin
+ extending from the left edge of the window to the Y-coor-
+ dinate axis. If <I>pixels</I> is 0, the automatically computed
+ size is used. The default is 0.
+
+ <B>-plotbackground</B> <I>color</I>
+ Specifies the background color of the plotting area. The
+ default is white.
+
+ <B>-plotborderwidth</B> <I>pixels</I>
+ Sets the width of the 3-D border around the plotting
+ area. The <B>-plotrelief</B> option determines if a border is
+ drawn. The default is 2.
+
+ <B>-plotpadx</B> <I>pad</I>
+ Sets the amount of padding to be added to the left and
+ right sides of the plotting area. <I>Pad</I> can be a list of
+ one or two screen distances. If <I>pad</I> has two elements,
+ the left side of the plotting area entry is padded by the
+ first distance and the right side by the second. If <I>pad</I>
+ is just one distance, both the left and right sides are
+ padded evenly. The default is 8.
+
+ <B>-plotpady</B> <I>pad</I>
+ Sets the amount of padding to be added to the top and
+ bottom of the plotting area. <I>Pad</I> can be a list of one or
+ two screen distances. If <I>pad</I> has two elements, the top
+ of the plotting area is padded by the first distance and
+ the bottom by the second. If <I>pad</I> is just one distance,
+ both the top and bottom are padded evenly. The default
+ is 8.
+
+ <B>-plotrelief</B> <I>relief</I>
+ Specifies the 3-D effect for the plotting area. <I>Relief</I>
+ specifies how the interior of the plotting area should
+ appear relative to rest of the graph; for example, raised
+ means the plot should appear to protrude from the graph,
+ relative to the surface of the graph. The default is
+ sunken.
+
+ <B>-relief</B> <I>relief</I>
+ Specifies the 3-D effect for the graph widget. <I>Relief</I>
+ specifies how the graph should appear relative to widget
+ it is packed into; for example, raised means the graph
+ should appear to protrude. The default is flat.
+
+ <B>-rightmargin</B> <I>pixels</I>
+ If non-zero, overrides the computed size of the margin
+
+ <B>-tile</B> <I>image</I>
+ Specifies a tiled background for the widget. If <I>image</I>
+ isn't "", the background is tiled using <I>image</I>. Other-
+ wise, the normal background color is drawn (see the
+ <B>-background</B> option). <I>Image</I> must be an image created
+ using the Tk <B>image</B> command. The default is "".
+
+ <B>-title</B> <I>text</I>
+ Sets the title to <I>text</I>. If <I>text</I> is "", no title will be
+ displayed.
+
+ <B>-topmargin</B> <I>pixels</I>
+ If non-zero, overrides the computed size of the margin
+ above the x2 axis. If <I>pixels</I> is 0, the automatically
+ computed size is used. The default is 0.
+
+ <B>-width</B> <I>pixels</I>
+ Specifies the requested width of the widget. The default
+ is 5i.
+
+ <I>pathName</I> <B>crosshairs</B> <I>operation</I> ?<I>arg</I>?
+ See the <B>CROSSHAIRS</B> <B>COMPONENT</B> section.
+
+ <I>pathName</I> <B>element</B> <I>operation</I> ?<I>arg</I>?...
+ See the <B>ELEMENT</B> <B>COMPONENTS</B> section.
+
+ <I>pathName</I> <B>extents</B> <I>item</I>
+ Returns the size of a particular item in the graph. <I>Item</I> must
+ be either leftmargin, rightmargin, topmargin, bottommargin,
+ plotwidth, or plotheight.
+
+ <I>pathName</I> <B>grid</B> <I>operation</I> ?<I>arg</I>?...
+ See the <B>GRID</B> <B>COMPONENT</B> section.
+
+ <I>pathName</I> <B>invtransform</B> <I>winX</I> <I>winY</I>
+ Performs an inverse coordinate transformation, mapping window
+ coordinates back to graph coordinates, using the standard X-axis
+ and Y-axis. Returns a list of containing the X-Y graph coordi-
+ nates.
+
+ <I>pathName</I> <B>inside</B> <I>x</I> <I>y</I>
+ Returns 1 is the designated screen coordinate (<I>x</I> and <I>y</I>) is
+ inside the plotting area and 0 otherwise.
+
+ <I>pathName</I> <B>legend</B> <I>operation</I> ?<I>arg</I>?...
+ See the <B>LEGEND</B> <B>COMPONENT</B> section.
+
+ <I>pathName</I> <B>line</B> <B>operation</B> <B>arg</B>...
+ The operation is the same as <B>element</B>.
+
+ <I>pathName</I> <B>marker</B> <I>operation</I> ?<I>arg</I>?...
+ photo Saves a Tk photo image. <I>OutputName</I> represents
+ the name of a Tk photo image that must already
+ have been created.
+
+ wmf Saves an Aldus Placeable Metafile. <I>OutputName</I>
+ represents the filename where the metafile is
+ written. If <I>outputName</I> is CLIPBOARD, then out-
+ put is written directly to the Windows clip-
+ board. This format is available only under
+ Microsoft Windows.
+
+ emf Saves an Enhanced Metafile. <I>OutputName</I> repre-
+ sents the filename where the metafile is writ-
+ ten. If <I>outputName</I> is CLIPBOARD, then output
+ is written directly to the Windows clipboard.
+ This format is available only under Microsoft
+ Windows.
+
+ <B>-height</B> <I>size</I>
+ Specifies the height of the graph. <I>Size</I> is a screen
+ distance. The graph will be redrawn using this dimen-
+ sion, rather than its current window height.
+
+ <B>-width</B> <I>size</I>
+ Specifies the width of the graph. <I>Size</I> is a screen
+ distance. The graph will be redrawn using this dimen-
+ sion, rather than its current window width.
+
+ <I>pathName</I> <B>transform</B> <I>x</I> <I>y</I>
+ Performs a coordinate transformation, mapping graph coordinates
+ to window coordinates, using the standard X-axis and Y-axis.
+ Returns a list containing the X-Y screen coordinates.
+
+ <I>pathName</I> <B>xaxis</B> <I>operation</I> ?<I>arg</I>?...
+
+ <I>pathName</I> <B>x2axis</B> <I>operation</I> ?<I>arg</I>?...
+
+ <I>pathName</I> <B>yaxis</B> <I>operation</I> ?<I>arg</I>?...
+
+ <I>pathName</I> <B>y2axis</B> <I>operation</I> ?<I>arg</I>?...
+ See the <B>AXIS</B> <B>COMPONENTS</B> section.
+
+
+</PRE>
+<H2>GRAPH COMPONENTS</H2><PRE>
+ A graph is composed of several components: coordinate axes, data ele-
+ ments, legend, grid, cross hairs, postscript, and annotation markers.
+ Instead of one big set of configuration options and operations, the
+ graph is partitioned, where each component has its own configuration
+ options and operations that specifically control that aspect or part of
+ the graph.
+
+ <B>AXIS</B> <B>COMPONENTS</B>
+ Four coordinate axes are automatically created: two X-coordinate axes
+ You can have several axes. To create an axis, invoke the axis component
+ and its create operation. # Create a new axis called "tempAxis" .g
+ axis create tempAxis You map data elements to an axis using the ele-
+ ment's -mapy and -mapx configuration options. They specify the coordi-
+ nate axes an element is mapped onto. # Now map the tempAxis data to
+ this axis. .g element create "e1" -xdata $x -ydata $y -mapy tempAxis
+ Any number of axes can be displayed simultaneously. They are drawn in
+ the margins surrounding the plotting area. The default axes x and y
+ are drawn in the bottom and left margins. The axes x2 and y2 are drawn
+ in top and right margins. By default, only x and y are shown. Note
+ that the axes can have different scales.
+
+ To display a different axis or more than one axis, you invoke one of
+ the following components: <B>xaxis</B>, <B>yaxis</B>, <B>x2axis</B>, and <B>y2axis</B>. Each com-
+ ponent has a <B>use</B> operation that designates the axis (or axes) to be
+ drawn in that corresponding margin: <B>xaxis</B> in the bottom, <B>yaxis</B> in the
+ left, <B>x2axis</B> in the top, and <B>y2axis</B> in the right. # Display the axis
+ tempAxis in the left margin. .g yaxis use tempAxis The <B>use</B> operation
+ takes a list of axis names as its last argument. This is the list of
+ axes to be drawn in this margin.
+
+ You can configure axes in many ways. The axis scale can be linear or
+ logarithmic. The values along the axis can either monotonically
+ increase or decrease. If you need custom tick labels, you can specify
+ a Tcl procedure to format the label any way you wish. You can control
+ how ticks are drawn, by changing the major tick interval or the number
+ of minor ticks. You can define non-uniform tick intervals, such as for
+ time-series plots.
+
+
+ <I>pathName</I> <B>axis</B> <B>bind</B> <I>tagName</I> ?<I>sequence</I>? ?<I>command</I>?
+ Associates <I>command</I> with <I>tagName</I> such that whenever the event
+ sequence given by <I>sequence</I> occurs for an axis with this tag,
+ <I>command</I> will be invoked. The syntax is similar to the <B>bind</B> com-
+ mand except that it operates on graph axes, rather than widgets.
+ See the <B>bind</B> manual entry for complete details on <I>sequence</I> and
+ the substitutions performed on <I>command</I> before invoking it.
+
+ If all arguments are specified then a new binding is created,
+ replacing any existing binding for the same <I>sequence</I> and <I>tag-</I>
+ <I>Name</I>. If the first character of <I>command</I> is + then <I>command</I> aug-
+ ments an existing binding rather than replacing it. If no <I>com-</I>
+ <I>mand</I> argument is provided then the command currently associated
+ with <I>tagName</I> and <I>sequence</I> (it's an error occurs if there's no
+ such binding) is returned. If both <I>command</I> and <I>sequence</I> are
+ missing then a list of all the event sequences for which bind-
+ ings have been defined for <I>tagName</I>.
+
+ <I>pathName</I> <B>axis</B> <B>cget</B> <I>axisName</I> <I>option</I>
+ Returns the current value of the option given by <I>option</I> for
+ <I>axisName</I>. <I>Option</I> may be any option described below for the axis
+ <B>configure</B> operation.
+ the list matching the current event sequence will have
+ its Tcl command executed. Implicitly the name of the
+ element is always the first tag in the list. The default
+ value is all.
+
+ <B>-color</B> <I>color</I>
+ Sets the color of the axis and tick labels. The default
+ is black.
+
+ <B>-command</B> <I>prefix</I>
+ Specifies a Tcl command to be invoked when formatting the
+ axis tick labels. <I>Prefix</I> is a string containing the name
+ of a Tcl proc and any extra arguments for the procedure.
+ This command is invoked for each major tick on the axis.
+ Two additional arguments are passed to the procedure: the
+ pathname of the widget and the current the numeric value
+ of the tick. The procedure returns the formatted tick
+ label. If "" is returned, no label will appear next to
+ the tick. You can get the standard tick labels again by
+ setting <I>prefix</I> to "". The default is "".
+
+ Please note that this procedure is invoked while the
+ graph is redrawn. You may query configuration options.
+ But do not them, because this can have unexpected
+ results.
+
+ <B>-descending</B> <I>boolean</I>
+ Indicates whether the values along the axis are monotoni-
+ cally increasing or decreasing. If <I>boolean</I> is true, the
+ axis values will be decreasing. The default is 0.
+
+ <B>-hide</B> <I>boolean</I>
+ Indicates if the axis is displayed. If <I>boolean</I> is false
+ the axis will be displayed. Any element mapped to the
+ axis is displayed regardless. The default value is 0.
+
+ <B>-justify</B> <I>justify</I>
+ Specifies how the axis title should be justified. This
+ matters only when the axis title contains more than one
+ line of text. <I>Justify</I> must be left, right, or center.
+ The default is center.
+
+ <B>-limits</B> <I>formatStr</I>
+ Specifies a printf-like description to format the minimum
+ and maximum limits of the axis. The limits are displayed
+ at the top/bottom or left/right sides of the plotting
+ area. <I>FormatStr</I> is a list of one or two format descrip-
+ tions. If one description is supplied, both the minimum
+ and maximum limits are formatted in the same way. If
+ two, the first designates the format for the minimum
+ limit, the second for the maximum. If "" is given as
+ either description, then the that limit will not be dis-
+ loosely, at the outer tick intervals. If the axis limit
+ is set with the -min or -max option, the axes are dis-
+ played tightly. If <I>boolean</I> is true, the axis range is
+ "loose". The default is 0.
+
+ <B>-majorticks</B> <I>majorList</I>
+ Specifies where to display major axis ticks. You can use
+ this option to display ticks at non-uniform intervals.
+ <I>MajorList</I> is a list of axis coordinates designating the
+ location of major ticks. No minor ticks are drawn. If
+ <I>majorList</I> is "", major ticks will be automatically com-
+ puted. The default is "".
+
+ <B>-max</B> <I>value</I>
+ Sets the maximum limit of <I>axisName</I>. Any data point
+ greater than <I>value</I> is not displayed. If <I>value</I> is "", the
+ maximum limit is calculated using the largest data value.
+ The default is "".
+
+ <B>-min</B> <I>value</I>
+ Sets the minimum limit of <I>axisName</I>. Any data point less
+ than <I>value</I> is not displayed. If <I>value</I> is "", the minimum
+ limit is calculated using the smallest data value. The
+ default is "".
+
+ <B>-minorticks</B> <I>minorList</I>
+ Specifies where to display minor axis ticks. You can use
+ this option to display minor ticks at non-uniform inter-
+ vals. <I>MinorList</I> is a list of real values, ranging from
+ 0.0 to 1.0, designating the placement of a minor tick.
+ No minor ticks are drawn if the <B>-majortick</B> option is also
+ set. If <I>minorList</I> is "", minor ticks will be automati-
+ cally computed. The default is "".
+
+ <B>-rotate</B> <I>theta</I>
+ Specifies the how many degrees to rotate the axis tick
+ labels. <I>Theta</I> is a real value representing the number of
+ degrees to rotate the tick labels. The default is 0.0
+ degrees.
+
+ <B>-scrollcommand</B> <I>command</I>
+ Specify the prefix for a command used to communicate with
+ scrollbars for this axis, such as <I>.sbar</I> <I>set</I>.
+
+ <B>-scrollmax</B> <I>value</I>
+ Sets the maximum limit of the axis scroll region. If
+ <I>value</I> is "", the maximum limit is calculated using the
+ largest data value. The default is "".
+
+ <B>-scrollmin</B> <I>value</I>
+ Sets the minimum limit of axis scroll region. If <I>value</I>
+ is "", the minimum limit is calculated using the smallest
+ Indicates how many minor axis ticks are to be drawn. For
+ example, if <I>number</I> is two, only one minor tick is drawn.
+ If <I>number</I> is one, no minor ticks are displayed. The
+ default is 2.
+
+ <B>-tickfont</B> <I>fontName</I>
+ Specifies the font for axis tick labels. The default is
+ *-Courier-Bold-R-Normal-*-100-*.
+
+ <B>-ticklength</B> <I>pixels</I>
+ Sets the length of major and minor ticks (minor ticks are
+ half the length of major ticks). If <I>pixels</I> is less than
+ zero, the axis will be inverted with ticks drawn pointing
+ towards the plot. The default is 0.1i.
+
+ <B>-title</B> <I>text</I>
+ Sets the title of the axis. If <I>text</I> is "", no axis title
+ will be displayed.
+
+ <B>-titlealternate</B> <I>boolean</I>
+ Indicates to display the axis title in its alternate
+ location. Normally the axis title is centered along the
+ axis. This option places the axis either to the right
+ (horizontal axes) or above (vertical axes) the axis. The
+ default is 0.
+
+ <B>-titlecolor</B> <I>color</I>
+ Sets the color of the axis title. The default is black.
+
+ <B>-titlefont</B> <I>fontName</I>
+ Specifies the font for axis title. The default is *-Hel-
+ vetica-Bold-R-Normal-*-14-140-*.
+
+ Axis configuration options may be also be set by the <B>option</B> com-
+ mand. The resource class is Axis. The resource names are the
+ names of the axes (such as x or x2). option add
+ *Graph.Axis.Color blue option add *Graph.x.LogScale true
+ option add *Graph.x2.LogScale false
+
+ <I>pathName</I> <B>axis</B> <B>create</B> <I>axisName</I> ?<I>option</I> <I>value</I>?...
+ Creates a new axis by the name <I>axisName</I>. No axis by the same
+ name can already exist. <I>Option</I> and <I>value</I> are described in above
+ in the axis <B>configure</B> operation.
+
+ <I>pathName</I> <B>axis</B> <B>delete</B> ?<I>axisName</I>?...
+ Deletes the named axes. An axis is not really deleted until it
+ is not longer in use, so it's safe to delete axes mapped to ele-
+ ments.
+
+ <I>pathName</I> <B>axis</B> <B>invtransform</B> <I>axisName</I> <I>value</I>
+ Performs the inverse transformation, changing the screen coordi-
+ nate <I>value</I> to a graph coordinate, mapping the value mapped to
+
+ <I>pathName</I> <B>axis</B> <B>view</B> <I>axisName</I>
+ Change the viewable area of this axis. Use as an argument to a
+ scrollbar's "<I>-command</I>".
+
+ The default axes are x, y, x2, and y2. But you can display more than
+ four axes simultaneously. You can also swap in a different axis with
+ <B>use</B> operation of the special axis components: <B>xaxis</B>, <B>x2axis</B>, <B>yaxis</B>, and
+ <B>y2axis</B>. .g create axis temp .g create axis time ... .g xaxis use temp
+ .g yaxis use time Only the axes specified for use are displayed on the
+ screen.
+
+ The <B>xaxis</B>, <B>x2axis</B>, <B>yaxis</B>, and <B>y2axis</B> components operate on an axis
+ location rather than a specific axis like the more general <B>axis</B> compo-
+ nent does. They implicitly control the axis that is currently using to
+ that location. By default, <B>xaxis</B> uses the x axis, <B>yaxis</B> uses y, <B>x2axis</B>
+ uses x2, and <B>y2axis</B> uses y2. When more than one axis is displayed in a
+ margin, it represents the first axis displayed.
+
+ The following operations are available for axes. They mirror exactly
+ the operations of the <B>axis</B> component. The <I>axis</I> argument must be <B>xaxis</B>,
+ <B>x2axis</B>, <B>yaxis</B>, or <B>y2axis</B>. This feature is deprecated since more than
+ one axis can now be used a margin. You should only use the <B>xaxis</B>,
+ <B>x2axis</B>, <B>yaxis</B>, and <B>y2axis</B> components with the <B>use</B> operation. For all
+ other operations, use the general <B>axis</B> component instead.
+
+ <I>pathName</I> <I>axis</I> <B>cget</B> <I>option</I>
+
+ <I>pathName</I> <I>axis</I> <B>configure</B> ?<I>option</I> <I>value</I>?...
+
+ <I>pathName</I> <I>axis</I> <B>invtransform</B> <I>value</I>
+
+ <I>pathName</I> <I>axis</I> <B>limits</B>
+
+ <I>pathName</I> <I>axis</I> <B>transform</B> <I>value</I>
+
+ <I>pathName</I> <I>axis</I> <B>use</B> ?<I>axisName</I>?
+ Designates the axis <I>axisName</I> is to be displayed at this loca-
+ tion. <I>AxisName</I> can not be already in use at another location.
+ This command returns the name of the axis currently using this
+ location.
+
+ <B>CROSSHAIRS</B> <B>COMPONENT</B>
+ Cross hairs consist of two intersecting lines (one vertical and one
+ horizontal) drawn completely across the plotting area. They are used
+ to position the mouse in relation to the coordinate axes. Cross hairs
+ differ from line markers in that they are implemented using XOR drawing
+ primitives. This means that they can be quickly drawn and erased with-
+ out redrawing the entire graph.
+
+ The following operations are available for cross hairs:
+
+ <B>-color</B> <I>color</I>
+ Sets the color of the cross hairs. The default is black.
+
+ <B>-dashes</B> <I>dashList</I>
+ Sets the dash style of the cross hairs. <I>DashList</I> is a
+ list of up to 11 numbers that alternately represent the
+ lengths of the dashes and gaps on the cross hair lines.
+ Each number must be between 1 and 255. If <I>dashList</I> is
+ "", the cross hairs will be solid lines.
+
+ <B>-hide</B> <I>boolean</I>
+ Indicates whether cross hairs are drawn. If <I>boolean</I> is
+ true, cross hairs are not drawn. The default is yes.
+
+ <B>-linewidth</B> <I>pixels</I>
+ Set the width of the cross hair lines. The default is 1.
+
+ <B>-position</B> <I>pos</I>
+ Specifies the screen position where the cross hairs
+ intersect. <I>Pos</I> must be in the form "<I>@x,y</I>", where <I>x</I> and <I>y</I>
+ are the window coordinates of the intersection.
+
+ Cross hairs configuration options may be also be set by the
+ <B>option</B> command. The resource name and class are crosshairs and
+ Crosshairs respectively. option add *Graph.Crosshairs.LineWidth
+ 2 option add *Graph.Crosshairs.Color red
+
+ <I>pathName</I> <B>crosshairs</B> <B>off</B>
+ Turns off the cross hairs.
+
+ <I>pathName</I> <B>crosshairs</B> <B>on</B>
+ Turns on the display of the cross hairs.
+
+ <I>pathName</I> <B>crosshairs</B> <B>toggle</B>
+ Toggles the current state of the cross hairs, alternately map-
+ ping and unmapping the cross hairs.
+
+ <B>ELEMENT</B> <B>COMPONENTS</B>
+ A data element represents a set of data. It contains x and y vectors
+ containing the coordinates of the data points. Elements can be dis-
+ played with a symbol at each data point and lines connecting the
+ points. Elements also control the appearance of the data, such as the
+ symbol type, line width, color etc.
+
+ When new data elements are created, they are automatically added to a
+ list of displayed elements. The display list controls what elements
+ are drawn and in what order.
+
+ The following operations are available for elements.
+
+ <I>pathName</I> <B>element</B> <B>activate</B> <I>elemName</I> ?<I>index</I>?...
+ Specifies the data points of element <I>elemName</I> to be drawn using
+ replacing any existing binding for the same <I>sequence</I> and <I>tag-</I>
+ <I>Name</I>. If the first character of <I>command</I> is + then <I>command</I> aug-
+ ments an existing binding rather than replacing it. If no <I>com-</I>
+ <I>mand</I> argument is provided then the command currently associated
+ with <I>tagName</I> and <I>sequence</I> (it's an error occurs if there's no
+ such binding) is returned. If both <I>command</I> and <I>sequence</I> are
+ missing then a list of all the event sequences for which bind-
+ ings have been defined for <I>tagName</I>.
+
+ <I>pathName</I> <B>element</B> <B>cget</B> <I>elemName</I> <I>option</I>
+ Returns the current value of the element configuration option
+ given by <I>option</I>. <I>Option</I> may be any of the options described
+ below for the element <B>configure</B> operation.
+
+ <I>pathName</I> <B>element</B> <B>closest</B> <I>x</I> <I>y</I> ?<I>option</I> <I>value</I>?... ?<I>elemName</I>?...
+ Searches for the data point closest to the window coordinates <I>x</I>
+ and <I>y</I>. By default, all elements are searched. Hidden elements
+ (see the <B>-hide</B> option is false) are ignored. You can limit the
+ search by specifying only the elements you want to be consid-
+ ered. <I>ElemName</I> must be the name of an element that can not be
+ hidden. It returns a key-value list containing the name of the
+ closest element, the index of the closest data point, and the
+ graph-coordinates of the point. Returns "", if no data point
+ within the threshold distance can be found. The following
+ <I>option</I>-<I>value</I> pairs are available.
+
+ <B>-along</B> <I>direction</I>
+ Search for the closest element using the following crite-
+ ria:
+
+ x Find closest element vertically from the given X-
+ coordinate.
+
+ y Find the closest element horizontally from the
+ given Y-coordinate.
+
+ both Find the closest element for the given point
+ (using both the X and Y coordinates).
+
+ <B>-halo</B> <I>pixels</I>
+ Specifies a threshold distance where selected data points
+ are ignored. <I>Pixels</I> is a valid screen distance, such as
+ 2 or 1.2i. If this option isn't specified, then it
+ defaults to the value of the graph's <B>-halo</B> option.
+
+ <B>-interpolate</B> <I>string</I>
+ Indicates whether to consider projections that lie along
+ the line segments connecting data points when searching
+ for the closest point. The default value is 0. The val-
+ ues for <I>string</I> are described below.
+
+ no Search only for the closest data point.
+
+ <B>-activepen</B> <I>penName</I>
+ Specifies pen to use to draw active element. If <I>penName</I>
+ is "", no active elements will be drawn. The default is
+ activeLine.
+
+ <B>-areabackground</B> <I>color</I>
+ Specifies the background color of the area under the
+ curve. The background area color is drawn only for bit-
+ maps (see the <B>-areapattern</B> option). If <I>color</I> is "", the
+ background is transparent. The default is black.
+
+ <B>-areaforeground</B> <I>color</I>
+ Specifies the foreground color of the area under the
+ curve. The default is black.
+
+ <B>-areapattern</B> <I>pattern</I>
+ Specifies how to fill the area under the curve. <I>Pattern</I>
+ may be the name of a Tk bitmap, solid, or "". If
+ "solid", then the area under the curve is drawn with the
+ color designated by the <B>-areaforeground</B> option. If a
+ bitmap, then the bitmap is stippled across the area.
+ Here the bitmap colors are controlled by the <B>-areafore-</B>
+ <B>ground</B> and <B>-areabackground</B> options. If <I>pattern</I> is "", no
+ filled area is drawn. The default is "".
+
+ <B>-areatile</B> <I>image</I>
+ Specifies the name of a Tk image to be used to tile the
+ area under the curve. This option supersedes the <B>-areap-</B>
+ <B>attern</B> option. <I>Image</I> must be a photo image. If <I>image</I> is
+ "", no tiling is performed. The default is "".
+
+ <B>-bindtags</B> <I>tagList</I>
+ Specifies the binding tags for the element. <I>TagList</I> is a
+ list of binding tag names. The tags and their order will
+ determine how events are handled for elements. Each tag
+ in the list matching the current event sequence will have
+ its Tcl command executed. Implicitly the name of the
+ element is always the first tag in the list. The default
+ value is all.
+
+ <B>-color</B> <I>color</I>
+ Sets the color of the traces connecting the data points.
+
+ <B>-dashes</B> <I>dashList</I>
+ Sets the dash style of element line. <I>DashList</I> is a list
+ of up to 11 numbers that alternately represent the
+ lengths of the dashes and gaps on the element line. Each
+ number must be between 1 and 255. If <I>dashList</I> is "", the
+ lines will be solid.
+
+ <B>-data</B> <I>coordList</I>
+ Specifies the X-Y coordinates of the data. <I>CoordList</I> is
+ Sets the element's label in the legend. If <I>text</I> is "",
+ the element will have no entry in the legend. The
+ default label is the element's name.
+
+ <B>-linewidth</B> <I>pixels</I>
+ Sets the width of the connecting lines between data
+ points. If <I>pixels</I> is 0, no connecting lines will be
+ drawn between symbols. The default is 0.
+
+ <B>-mapx</B> <I>xAxis</I>
+ Selects the X-axis to map the element's X-coordinates
+ onto. <I>XAxis</I> must be the name of an axis. The default is
+ x.
+
+ <B>-mapy</B> <I>yAxis</I>
+ Selects the Y-axis to map the element's Y-coordinates
+ onto. <I>YAxis</I> must be the name of an axis. The default is
+ y.
+
+ <B>-offdash</B> <I>color</I>
+ Sets the color of the stripes when traces are dashed (see
+ the <B>-dashes</B> option). If <I>color</I> is "", then the "off" pix-
+ els will represent gaps instead of stripes. If <I>color</I> is
+ defcolor, then the color will be the same as the <B>-color</B>
+ option. The default is defcolor.
+
+ <B>-outline</B> <I>color</I>
+ Sets the color or the outline around each symbol. If
+ <I>color</I> is "", then no outline is drawn. If <I>color</I> is def-
+ color, then the color will be the same as the <B>-color</B>
+ option. The default is defcolor.
+
+ <B>-pen</B> <I>penname</I>
+ Set the pen to use for this element.
+
+ <B>-outlinewidth</B> <I>pixels</I>
+ Sets the width of the outline bordering each symbol. If
+ <I>pixels</I> is 0, no outline will be drawn. The default is 1.
+
+ <B>-pixels</B> <I>pixels</I>
+ Sets the size of symbols. If <I>pixels</I> is 0, no symbols
+ will be drawn. The default is 0.125i.
+
+ <B>-scalesymbols</B> <I>boolean</I>
+ If <I>boolean</I> is true, the size of the symbols drawn for
+ <I>elemName</I> will change with scale of the X-axis and Y-axis.
+ At the time this option is set, the current ranges of the
+ axes are saved as the normalized scales (i.e scale factor
+ is 1.0) and the element is drawn at its designated size
+ (see the <B>-pixels</B> option). As the scale of the axes
+ change, the symbol will be scaled according to the
+ smaller of the X-axis and Y-axis scales. If <I>boolean</I> is
+ dratic spline is used. The default is <I>linear</I>.
+
+ <B>-styles</B> <I>styleList</I>
+ Specifies what pen to use based on the range of weights
+ given. <I>StyleList</I> is a list of style specifications. Each
+ style specification, in turn, is a list consisting of a
+ pen name, and optionally a minimum and maximum range.
+ Data points whose weight (see the <B>-weight</B> option) falls
+ in this range, are drawn with this pen. If no range is
+ specified it defaults to the index of the pen in the
+ list. Note that this affects only symbol attributes.
+ Line attributes, such as line width, dashes, etc. are
+ ignored.
+
+ <B>-symbol</B> <I>symbol</I>
+ Specifies the symbol for data points. <I>Symbol</I> can be
+ either square, circle, diamond, plus, cross, splus,
+ scross, triangle, "" (where no symbol is drawn), or a
+ bitmap. Bitmaps are specified as "<I>source</I> ?<I>mask</I>?", where
+ <I>source</I> is the name of the bitmap, and <I>mask</I> is the bit-
+ map's optional mask. The default is circle.
+
+ <B>-trace</B> <I>direction</I>
+ Indicates whether connecting lines between data points
+ (whose X-coordinate values are either increasing or
+ decreasing) are drawn. <I>Direction</I> must be increasing,
+ decreasing, or both. For example, if <I>direction</I> is
+ increasing, connecting lines will be drawn only between
+ those data points where X-coordinate values are monotoni-
+ cally increasing. If <I>direction</I> is both, connecting lines
+ will be draw between all data points. The default is
+ both.
+
+ <B>-weights</B> <I>wVec</I>
+ Specifies the weights of the individual data points.
+ This, with the list pen styles (see the <B>-styles</B> option),
+ controls how data points are drawn. <I>WVec</I> is the name of
+ a BLT vector or a list of numeric expressions represent-
+ ing the weights for each data point.
+
+ <B>-xdata</B> <I>xVec</I>
+ Specifies the X-coordinates of the data. <I>XVec</I> is the
+ name of a BLT vector or a list of numeric expressions.
+
+ <B>-ydata</B> <I>yVec</I>
+ Specifies the Y-coordinates of the data. <I>YVec</I> is the
+ name of a BLT vector or a list of numeric expressions.
+
+ Element configuration options may also be set by the <B>option</B> com-
+ mand. The resource class is Element. The resource name is the
+ name of the element. option add *Graph.Element.symbol line
+ option add *Graph.e1.symbol line
+
+ <I>pathName</I> <B>element</B> <B>exists</B> <I>elemName</I>
+ Returns 1 if an element <I>elemName</I> currently exists and 0 other-
+ wise.
+
+ <I>pathName</I> <B>element</B> <B>names</B> ?<I>pattern</I>?...
+ Returns the elements matching one or more pattern. If no <I>pat-</I>
+ <I>tern</I> is given, the names of all elements is returned.
+
+ <I>pathName</I> <B>element</B> <B>show</B> ?<I>nameList</I>?
+ Queries or modifies the element display list. The element dis-
+ play list designates the elements drawn and in what order.
+ <I>NameList</I> is a list of elements to be displayed in the order they
+ are named. If there is no <I>nameList</I> argument, the current dis-
+ play list is returned.
+
+ <I>pathName</I> <B>element</B> <B>type</B> <I>elemName</I>
+ Returns the type of <I>elemName</I>. If the element is a bar element,
+ the commands returns the string "bar", otherwise it returns
+ "line".
+
+ <B>GRID</B> <B>COMPONENT</B>
+ Grid lines extend from the major and minor ticks of each axis horizon-
+ tally or vertically across the plotting area. The following operations
+ are available for grid lines.
+
+ <I>pathName</I> <B>grid</B> <B>cget</B> <I>option</I>
+ Returns the current value of the grid line configuration option
+ given by <I>option</I>. <I>Option</I> may be any option described below for
+ the grid <B>configure</B> operation.
+
+ <I>pathName</I> <B>grid</B> <B>configure</B> ?<I>option</I> <I>value</I>?...
+ Queries or modifies the configuration options for grid lines.
+ If <I>option</I> isn't specified, a list describing all the current
+ grid options for <I>pathName</I> is returned. If <I>option</I> is specified,
+ but not <I>value</I>, then a list describing <I>option</I> is returned. If
+ one or more <I>option</I> and <I>value</I> pairs are specified, then for each
+ pair, the grid line option <I>option</I> is set to <I>value</I>. The follow-
+ ing options are valid for grid lines.
+
+ <B>-color</B> <I>color</I>
+ Sets the color of the grid lines. The default is black.
+
+ <B>-dashes</B> <I>dashList</I>
+ Sets the dash style of the grid lines. <I>DashList</I> is a list
+ of up to 11 numbers that alternately represent the
+ lengths of the dashes and gaps on the grid lines. Each
+ number must be between 1 and 255. If <I>dashList</I> is "", the
+ grid will be solid lines.
+
+ <B>-hide</B> <I>boolean</I>
+ Indicates whether the grid should be drawn. If <I>boolean</I> is
+
+ <B>-minor</B> <I>boolean</I>
+ Indicates whether the grid lines should be drawn for
+ minor ticks. If <I>boolean</I> is true, the lines will appear
+ at minor tick intervals. The default is 1.
+
+ Grid configuration options may also be set by the <B>option</B> com-
+ mand. The resource name and class are grid and Grid respec-
+ tively. option add *Graph.grid.LineWidth 2 option add
+ *Graph.Grid.Color black
+
+ <I>pathName</I> <B>grid</B> <B>off</B>
+ Turns off the display the grid lines.
+
+ <I>pathName</I> <B>grid</B> <B>on</B>
+ Turns on the display the grid lines.
+
+ <I>pathName</I> <B>grid</B> <B>toggle</B>
+ Toggles the display of the grid.
+
+ <B>LEGEND</B> <B>COMPONENT</B>
+ The legend displays a list of the data elements. Each entry consists
+ of the element's symbol and label. The legend can appear in any margin
+ (the default location is in the right margin). It can also be posi-
+ tioned anywhere within the plotting area.
+
+ The following operations are valid for the legend.
+
+ <I>pathName</I> <B>legend</B> <B>activate</B> <I>pattern</I>...
+ Selects legend entries to be drawn using the active legend col-
+ ors and relief. All entries whose element names match <I>pattern</I>
+ are selected. To be selected, the element name must match only
+ one <I>pattern</I>.
+
+ <I>pathName</I> <B>legend</B> <B>bind</B> <I>tagName</I> ?<I>sequence</I>? ?<I>command</I>?
+ Associates <I>command</I> with <I>tagName</I> such that whenever the event
+ sequence given by <I>sequence</I> occurs for a legend entry with this
+ tag, <I>command</I> will be invoked. Implicitly the element names in
+ the entry are tags. The syntax is similar to the <B>bind</B> command
+ except that it operates on legend entries, rather than widgets.
+ See the <B>bind</B> manual entry for complete details on <I>sequence</I> and
+ the substitutions performed on <I>command</I> before invoking it.
+
+ If all arguments are specified then a new binding is created,
+ replacing any existing binding for the same <I>sequence</I> and <I>tag-</I>
+ <I>Name</I>. If the first character of <I>command</I> is + then <I>command</I> aug-
+ ments an existing binding rather than replacing it. If no <I>com-</I>
+ <I>mand</I> argument is provided then the command currently associated
+ with <I>tagName</I> and <I>sequence</I> (it's an error occurs if there's no
+ such binding) is returned. If both <I>command</I> and <I>sequence</I> are
+ missing then a list of all the event sequences for which bind-
+ ings have been defined for <I>tagName</I>.
+
+ <B>-activebackground</B> <I>color</I>
+ Sets the background color for active legend entries. All
+ legend entries marked active (see the legend <B>activate</B>
+ operation) are drawn using this background color.
+
+ <B>-activeborderwidth</B> <I>pixels</I>
+ Sets the width of the 3-D border around the outside edge
+ of the active legend entries. The default is 2.
+
+ <B>-activeforeground</B> <I>color</I>
+ Sets the foreground color for active legend entries. All
+ legend entries marked as active (see the legend <B>activate</B>
+ operation) are drawn using this foreground color.
+
+ <B>-activerelief</B> <I>relief</I>
+ Specifies the 3-D effect desired for active legend
+ entries. <I>Relief</I> denotes how the interior of the entry
+ should appear relative to the legend; for example, raised
+ means the entry should appear to protrude from the leg-
+ end, relative to the surface of the legend. The default
+ is flat.
+
+ <B>-anchor</B> <I>anchor</I>
+ Tells how to position the legend relative to the posi-
+ tioning point for the legend. This is dependent on the
+ value of the <B>-position</B> option. The default is center.
+
+ left or right
+ The anchor describes how to position the leg-
+ end vertically.
+
+ top or bottom
+ The anchor describes how to position the leg-
+ end horizontally.
+
+ @x,y The anchor specifies how to position the leg-
+ end relative to the positioning point. For
+ example, if <I>anchor</I> is center then the legend
+ is centered on the point; if <I>anchor</I> is n then
+ the legend will be drawn such that the top
+ center point of the rectangular region occu-
+ pied by the legend will be at the positioning
+ point.
+
+ plotarea The anchor specifies how to position the leg-
+ end relative to the plotting area. For exam-
+ ple, if <I>anchor</I> is center then the legend is
+ centered in the plotting area; if <I>anchor</I> is
+ ne then the legend will be drawn such that
+ occupies the upper right corner of the plot-
+ ting area.
+
+ Sets the width of the 3-D border around the outside edge
+ of the legend (if such border is being drawn; the <B>relief</B>
+ option determines this). The default is 2 pixels.
+
+ <B>-font</B> <I>fontName</I>
+ <I>FontName</I> specifies a font to use when drawing the labels
+ of each element into the legend. The default is *-Hel-
+ vetica-Bold-R-Normal-*-12-120-*.
+
+ <B>-foreground</B> <I>color</I>
+ Sets the foreground color of the text drawn for the ele-
+ ment's label. The default is black.
+
+ <B>-hide</B> <I>boolean</I>
+ Indicates whether the legend should be displayed. If
+ <I>boolean</I> is true, the legend will not be draw. The
+ default is no.
+
+ <B>-ipadx</B> <I>pad</I>
+ Sets the amount of internal padding to be added to the
+ width of each legend entry. <I>Pad</I> can be a list of one or
+ two screen distances. If <I>pad</I> has two elements, the left
+ side of the legend entry is padded by the first distance
+ and the right side by the second. If <I>pad</I> is just one
+ distance, both the left and right sides are padded
+ evenly. The default is 2.
+
+ <B>-ipady</B> <I>pad</I>
+ Sets an amount of internal padding to be added to the
+ height of each legend entry. <I>Pad</I> can be a list of one or
+ two screen distances. If <I>pad</I> has two elements, the top
+ of the entry is padded by the first distance and the bot-
+ tom by the second. If <I>pad</I> is just one distance, both the
+ top and bottom of the entry are padded evenly. The
+ default is 2.
+
+ <B>-padx</B> <I>pad</I>
+ Sets the padding to the left and right exteriors of the
+ legend. <I>Pad</I> can be a list of one or two screen dis-
+ tances. If <I>pad</I> has two elements, the left side of the
+ legend is padded by the first distance and the right side
+ by the second. If <I>pad</I> has just one distance, both the
+ left and right sides are padded evenly. The default is
+ 4.
+
+ <B>-pady</B> <I>pad</I>
+ Sets the padding above and below the legend. <I>Pad</I> can be
+ a list of one or two screen distances. If <I>pad</I> has two
+ elements, the area above the legend is padded by the
+ first distance and the area below by the second. If <I>pad</I>
+ is just one distance, both the top and bottom areas are
+ padded evenly. The default is 0.
+ plotting area. If <I>boolean</I> is true, the legend will be
+ drawn on top of any elements that may overlap it. The
+ default is no.
+
+ <B>-relief</B> <I>relief</I>
+ Specifies the 3-D effect for the border around the leg-
+ end. <I>Relief</I> specifies how the interior of the legend
+ should appear relative to the graph; for example, raised
+ means the legend should appear to protrude from the
+ graph, relative to the surface of the graph. The default
+ is sunken.
+
+ Legend configuration options may also be set by the <B>option</B> com-
+ mand. The resource name and class are legend and Legend respec-
+ tively. option add *Graph.legend.Foreground blue option add
+ *Graph.Legend.Relief raised
+
+ <I>pathName</I> <B>legend</B> <B>deactivate</B> <I>pattern</I>...
+ Selects legend entries to be drawn using the normal legend col-
+ ors and relief. All entries whose element names match <I>pattern</I>
+ are selected. To be selected, the element name must match only
+ one <I>pattern</I>.
+
+ <I>pathName</I> <B>legend</B> <B>get</B> <I>pos</I>
+ Returns the name of the element whose entry is at the screen
+ position <I>pos</I> in the legend. <I>Pos</I> must be in the form "<I>@x,y</I>",
+ where <I>x</I> and <I>y</I> are window coordinates. If the given coordinates
+ do not lie over a legend entry, "" is returned.
+
+ <B>PEN</B> <B>COMPONENTS</B>
+ Pens define attributes (both symbol and line style) for elements. Pens
+ mirror the configuration options of data elements that pertain to how
+ symbols and lines are drawn. Data elements use pens to determine how
+ they are drawn. A data element may use several pens at once. In this
+ case, the pen used for a particular data point is determined from each
+ element's weight vector (see the element's <B>-weight</B> and <B>-style</B> options).
+
+ One pen, called activeLine, is automatically created. It's used as the
+ default active pen for elements. So you can change the active
+ attributes for all elements by simply reconfiguring this pen. .g pen
+ configure "activeLine" -color green You can create and use several
+ pens. To create a pen, invoke the pen component and its create opera-
+ tion. .g pen create myPen You map pens to a data element using either
+ the element's <B>-pen</B> or <B>-activepen</B> options. .g element create "line1"
+ -xdata $x -ydata $tempData \
+ -pen myPen An element can use several pens at once. This is done by
+ specifying the name of the pen in the element's style list (see the
+ <B>-styles</B> option). .g element configure "line1" -styles { myPen 2.0 3.0
+ } This says that any data point with a weight between 2.0 and 3.0 is to
+ be drawn using the pen myPen. All other points are drawn with the ele-
+ ment's default attributes.
+
+ specified, then for each pair, the pen option <I>option</I> is set to
+ <I>value</I>. The following options are valid for pens.
+
+ <B>-color</B> <I>color</I>
+ Sets the color of the traces connecting the data points.
+
+ <B>-dashes</B> <I>dashList</I>
+ Sets the dash style of element line. <I>DashList</I> is a list
+ of up to 11 numbers that alternately represent the
+ lengths of the dashes and gaps on the element line. Each
+ number must be between 1 and 255. If <I>dashList</I> is "", the
+ lines will be solid.
+
+ <B>-fill</B> <I>color</I>
+ Sets the interior color of symbols. If <I>color</I> is "", then
+ the interior of the symbol is transparent. If <I>color</I> is
+ defcolor, then the color will be the same as the <B>-color</B>
+ option. The default is defcolor.
+
+ <B>-linewidth</B> <I>pixels</I>
+ Sets the width of the connecting lines between data
+ points. If <I>pixels</I> is 0, no connecting lines will be
+ drawn between symbols. The default is 0.
+
+ <B>-offdash</B> <I>color</I>
+ Sets the color of the stripes when traces are dashed (see
+ the <B>-dashes</B> option). If <I>color</I> is "", then the "off" pix-
+ els will represent gaps instead of stripes. If <I>color</I> is
+ defcolor, then the color will be the same as the <B>-color</B>
+ option. The default is defcolor.
+
+ <B>-outline</B> <I>color</I>
+ Sets the color or the outline around each symbol. If
+ <I>color</I> is "", then no outline is drawn. If <I>color</I> is def-
+ color, then the color will be the same as the <B>-color</B>
+ option. The default is defcolor.
+
+ <B>-outlinewidth</B> <I>pixels</I>
+ Sets the width of the outline bordering each symbol. If
+ <I>pixels</I> is 0, no outline will be drawn. The default is 1.
+
+ <B>-pixels</B> <I>pixels</I>
+ Sets the size of symbols. If <I>pixels</I> is 0, no symbols
+ will be drawn. The default is 0.125i.
+
+ <B>-symbol</B> <I>symbol</I>
+ Specifies the symbol for data points. <I>Symbol</I> can be
+ either square, circle, diamond, plus, cross, splus,
+ scross, triangle, "" (where no symbol is drawn), or a
+ bitmap. Bitmaps are specified as "<I>source</I> ?<I>mask</I>?", where
+ <I>source</I> is the name of the bitmap, and <I>mask</I> is the bit-
+ map's optional mask. The default is circle.
+
+ Creates a new pen by the name <I>penName</I>. No pen by the same name
+ can already exist. <I>Option</I> and <I>value</I> are described in above in
+ the pen <B>configure</B> operation.
+
+ <I>pathName</I> <B>pen</B> <B>delete</B> ?<I>penName</I>?...
+ Deletes the named pens. A pen is not really deleted until it is
+ not longer in use, so it's safe to delete pens mapped to ele-
+ ments.
+
+ <I>pathName</I> <B>pen</B> <B>names</B> ?<I>pattern</I>?...
+ Returns a list of pens matching zero or more patterns. If no
+ <I>pattern</I> argument is give, the names of all pens are returned.
+
+ <B>POSTSCRIPT</B> <B>COMPONENT</B>
+ The graph can generate encapsulated PostScript output. There are sev-
+ eral configuration options you can specify to control how the plot will
+ be generated. You can change the page dimensions and borders. The
+ plot itself can be scaled, centered, or rotated to landscape. The
+ PostScript output can be written directly to a file or returned through
+ the interpreter.
+
+ The following postscript operations are available.
+
+ <I>pathName</I> <B>postscript</B> <B>cget</B> <I>option</I>
+ Returns the current value of the postscript option given by
+ <I>option</I>. <I>Option</I> may be any option described below for the post-
+ script <B>configure</B> operation.
+
+ <I>pathName</I> <B>postscript</B> <B>configure</B> ?<I>option</I> <I>value</I>?...
+ Queries or modifies the configuration options for PostScript
+ generation. If <I>option</I> isn't specified, a list describing the
+ current postscript options for <I>pathName</I> is returned. If <I>option</I>
+ is specified, but not <I>value</I>, then a list describing <I>option</I> is
+ returned. If one or more <I>option</I> and <I>value</I> pairs are specified,
+ then for each pair, the postscript option <I>option</I> is set to
+ <I>value</I>. The following postscript options are available.
+
+ <B>-center</B> <I>boolean</I>
+ Indicates whether the plot should be centered on the
+ PostScript page. If <I>boolean</I> is false, the plot will be
+ placed in the upper left corner of the page. The default
+ is 1.
+
+ <B>-colormap</B> <I>varName</I>
+ <I>VarName</I> must be the name of a global array variable that
+ specifies a color mapping from the X color name to Post-
+ Script. Each element of <I>varName</I> must consist of Post-
+ Script code to set a particular color value (e.g. ``1.0
+ 1.0 0.0 setrgbcolor''). When generating color informa-
+ tion in PostScript, the array variable <I>varName</I> is checked
+ if an element of the name as the color exists. If so, it
+ uses its value as the PostScript command to set the
+ Script. Each element of <I>varName</I> must consist of a Tcl
+ list with one or two elements; the name and point size of
+ a PostScript font. When outputting PostScript commands
+ for a particular font, the array variable <I>varName</I> is
+ checked to see if an element by the specified font
+ exists. If there is such an element, then the font
+ information contained in that element is used in the
+ PostScript output. (If the point size is omitted from
+ the list, the point size of the X font is used). Other-
+ wise the X font is examined in an attempt to guess what
+ PostScript font to use. This works only for fonts whose
+ foundry property is <I>Adobe</I> (such as Times, Helvetica,
+ Courier, etc.). If all of this fails then the font
+ defaults to Helvetica-Bold.
+
+ <B>-decorations</B> <I>boolean</I>
+ Indicates whether PostScript commands to generate color
+ backgrounds and 3-D borders will be output. If <I>boolean</I>
+ is false, the background will be white and no 3-D borders
+ will be generated. The default is 1.
+
+ <B>-height</B> <I>pixels</I>
+ Sets the height of the plot. This lets you print the
+ graph with a height different from the one drawn on the
+ screen. If <I>pixels</I> is 0, the height is the same as the
+ widget's height. The default is 0.
+
+ <B>-landscape</B> <I>boolean</I>
+ If <I>boolean</I> is true, this specifies the printed area is to
+ be rotated 90 degrees. In non-rotated output the X-axis
+ of the printed area runs along the short dimension of the
+ page (``portrait'' orientation); in rotated output the
+ X-axis runs along the long dimension of the page (``land-
+ scape'' orientation). Defaults to 0.
+
+ <B>-maxpect</B> <I>boolean</I>
+ Indicates to scale the plot so that it fills the Post-
+ Script page. The aspect ratio of the graph is still
+ retained. The default is 0.
+
+ <B>-padx</B> <I>pad</I>
+ Sets the horizontal padding for the left and right page
+ borders. The borders are exterior to the plot. <I>Pad</I> can
+ be a list of one or two screen distances. If <I>pad</I> has two
+ elements, the left border is padded by the first distance
+ and the right border by the second. If <I>pad</I> has just one
+ distance, both the left and right borders are padded
+ evenly. The default is 1i.
+
+ <B>-pady</B> <I>pad</I>
+ Sets the vertical padding for the top and bottom page
+ borders. The borders are exterior to the plot. <I>Pad</I> can
+ The default width is 8.5i.
+
+ <B>-width</B> <I>pixels</I>
+ Sets the width of the plot. This lets you generate a
+ plot of a width different from that of the widget. If
+ <I>pixels</I> is 0, the width is the same as the widget's width.
+ The default is 0.
+
+ Postscript configuration options may be also be set by the
+ <B>option</B> command. The resource name and class are postscript and
+ Postscript respectively. option add *Graph.postscript.Decora-
+ tions false option add *Graph.Postscript.Landscape true
+
+ <I>pathName</I> <B>postscript</B> <B>output</B> ?<I>fileName</I>? ?<I>option</I> <I>value</I>?...
+ Outputs a file of encapsulated PostScript. If a <I>fileName</I> argu-
+ ment isn't present, the command returns the PostScript. If any
+ <I>option-value</I> pairs are present, they set configuration options
+ controlling how the PostScript is generated. <I>Option</I> and <I>value</I>
+ can be anything accepted by the postscript <B>configure</B> operation
+ above.
+
+ <B>MARKER</B> <B>COMPONENTS</B>
+ Markers are simple drawing procedures used to annotate or highlight
+ areas of the graph. Markers have various types: text strings, bitmaps,
+ images, connected lines, windows, or polygons. They can be associated
+ with a particular element, so that when the element is hidden or un-
+ hidden, so is the marker. By default, markers are the last items
+ drawn, so that data elements will appear in behind them. You can
+ change this by configuring the <B>-under</B> option.
+
+ Markers, in contrast to elements, don't affect the scaling of the coor-
+ dinate axes. They can also have <I>elastic</I> coordinates (specified by -Inf
+ and Inf respectively) that translate into the minimum or maximum limit
+ of the axis. For example, you can place a marker so it always remains
+ in the lower left corner of the plotting area, by using the coordinates
+ -Inf,-Inf.
+
+ The following operations are available for markers.
+
+ <I>pathName</I> <B>marker</B> <B>after</B> <I>markerId</I> ?<I>afterId</I>?
+ Changes the order of the markers, drawing the first marker after
+ the second. If no second <I>afterId</I> argument is specified, the
+ marker is placed at the end of the display list. This command
+ can be used to control how markers are displayed since markers
+ are drawn in the order of this display list.
+
+ <I>pathName</I> <B>marker</B> <B>before</B> <I>markerId</I> ?<I>beforeId</I>?
+ Changes the order of the markers, drawing the first marker
+ before the second. If no second <I>beforeId</I> argument is specified,
+ the marker is placed at the beginning of the display list. This
+ command can be used to control how markers are displayed since
+ markers are drawn in the order of this display list.
+ with <I>tagName</I> and <I>sequence</I> (it's an error occurs if there's no
+ such binding) is returned. If both <I>command</I> and <I>sequence</I> are
+ missing then a list of all the event sequences for which bind-
+ ings have been defined for <I>tagName</I>.
+
+ <I>pathName</I> <B>marker</B> <B>cget</B> <I>option</I>
+ Returns the current value of the marker configuration option
+ given by <I>option</I>. <I>Option</I> may be any option described below in
+ the <B>configure</B> operation.
+
+ <I>pathName</I> <B>marker</B> <B>configure</B> <I>markerId</I> ?<I>option</I> <I>value</I>?...
+ Queries or modifies the configuration options for markers. If
+ <I>option</I> isn't specified, a list describing the current options
+ for <I>markerId</I> is returned. If <I>option</I> is specified, but not
+ <I>value</I>, then a list describing <I>option</I> is returned. If one or
+ more <I>option</I> and <I>value</I> pairs are specified, then for each pair,
+ the marker option <I>option</I> is set to <I>value</I>.
+
+ The following options are valid for all markers. Each type of
+ marker also has its own type-specific options. They are
+ described in the sections below.
+
+ <B>-bindtags</B> <I>tagList</I>
+ Specifies the binding tags for the marker. <I>TagList</I> is a
+ list of binding tag names. The tags and their order will
+ determine how events for markers are handled. Each tag
+ in the list matching the current event sequence will have
+ its Tcl command executed. Implicitly the name of the
+ marker is always the first tag in the list. The default
+ value is all.
+
+ <B>-coords</B> <I>coordList</I>
+ Specifies the coordinates of the marker. <I>CoordList</I> is a
+ list of graph coordinates. The number of coordinates
+ required is dependent on the type of marker. Text,
+ image, and window markers need only two coordinates (an
+ X-Y coordinate). Bitmap markers can take either two or
+ four coordinates (if four, they represent the corners of
+ the bitmap). Line markers need at least four coordinates,
+ polygons at least six. If <I>coordList</I> is "", the marker
+ will not be displayed. The default is "".
+
+ <B>-element</B> <I>elemName</I>
+ Links the marker with the element <I>elemName</I>. The marker
+ is drawn only if the element is also currently displayed
+ (see the element's <B>show</B> operation). If <I>elemName</I> is "",
+ the marker is always drawn. The default is "".
+
+ <B>-hide</B> <I>boolean</I>
+ Indicates whether the marker is drawn. If <I>boolean</I> is
+ true, the marker is not drawn. The default is no.
+
+ <B>-under</B> <I>boolean</I>
+ Indicates whether the marker is drawn below/above data
+ elements. If <I>boolean</I> is true, the marker is be drawn
+ underneath the data element symbols and lines. Other-
+ wise, the marker is drawn on top of the element. The
+ default is 0.
+
+ <B>-xoffset</B> <I>pixels</I>
+ Specifies a screen distance to offset the marker horizon-
+ tally. <I>Pixels</I> is a valid screen distance, such as 2 or
+ 1.2i. The default is 0.
+
+ <B>-yoffset</B> <I>pixels</I>
+ Specifies a screen distance to offset the markers verti-
+ cally. <I>Pixels</I> is a valid screen distance, such as 2 or
+ 1.2i. The default is 0.
+
+ Marker configuration options may also be set by the <B>option</B> com-
+ mand. The resource class is either BitmapMarker, ImageMarker,
+ LineMarker, PolygonMarker, TextMarker, or WindowMarker, depend-
+ ing on the type of marker. The resource name is the name of the
+ marker. option add *Graph.TextMarker.Foreground white option
+ add *Graph.BitmapMarker.Foreground white option add
+ *Graph.m1.Background blue
+
+ <I>pathName</I> <B>marker</B> <B>create</B> <I>type</I> ?<I>option</I> <I>value</I>?...
+ Creates a marker of the selected type. <I>Type</I> may be either text,
+ line, bitmap, image, polygon, or window. This command returns
+ the marker identifier, used as the <I>markerId</I> argument in the
+ other marker-related commands. If the <B>-name</B> option is used,
+ this overrides the normal marker identifier. If the name pro-
+ vided is already used for another marker, the new marker will
+ replace the old.
+
+ <I>pathName</I> <B>marker</B> <B>delete</B> ?<I>name</I>?...
+ Removes one of more markers. The graph will automatically be
+ redrawn without the marker..
+
+ <I>pathName</I> <B>marker</B> <B>exists</B> <I>markerId</I>
+ Returns 1 if the marker <I>markerId</I> exists and 0 otherwise.
+
+ <I>pathName</I> <B>marker</B> <B>names</B> ?<I>pattern</I>?
+ Returns the names of all the markers that currently exist. If
+ <I>pattern</I> is supplied, only those markers whose names match it
+ will be returned.
+
+ <I>pathName</I> <B>marker</B> <B>type</B> <I>markerId</I>
+ Returns the type of the marker given by <I>markerId</I>, such as line
+ or text. If <I>markerId</I> is not a valid a marker identifier, "" is
+ returned.
+
+ <B>BITMAP</B> <B>MARKERS</B>
+ The following options are specific to bitmap markers:
+
+ <B>-background</B> <I>color</I>
+ Same as the <B>-fill</B> option.
+
+ <B>-bitmap</B> <I>bitmap</I>
+ Specifies the bitmap to be displayed. If <I>bitmap</I> is "", the
+ marker will not be displayed. The default is "".
+
+ <B>-fill</B> <I>color</I>
+ Sets the background color of the bitmap. If <I>color</I> is the empty
+ string, no background will be transparent. The default back-
+ ground color is "".
+
+ <B>-foreground</B> <I>color</I>
+ Same as the <B>-outline</B> option.
+
+ <B>-mask</B> <I>mask</I>
+ Specifies a mask for the bitmap to be displayed. This mask is a
+ bitmap itself, denoting the pixels that are transparent. If
+ <I>mask</I> is "", all pixels of the bitmap will be drawn. The default
+ is "".
+
+ <B>-outline</B> <I>color</I>
+ Sets the foreground color of the bitmap. The default value is
+ black.
+
+ <B>-rotate</B> <I>theta</I>
+ Sets the rotation of the bitmap. <I>Theta</I> is a real number repre-
+ senting the angle of rotation in degrees. The marker is first
+ rotated and then placed according to its anchor position. The
+ default rotation is 0.0.
+
+ <B>IMAGE</B> <B>MARKERS</B>
+ A image marker displays an image. Image markers are created with the
+ marker's <B>create</B> operation in the form: <I>pathName</I> <B>marker</B> <B>create</B> <B>image</B>
+ ?<I>option</I> <I>value</I>?... There may be many <I>option</I>-<I>value</I> pairs, each sets a
+ configuration option for the marker. These same <I>option</I>-<I>value</I> pairs may
+ be used with the marker's <B>configure</B> operation.
+
+ The following options are specific to image markers:
+
+ <B>-anchor</B> <I>anchor</I>
+ <I>Anchor</I> tells how to position the image relative to the position-
+ ing point for the image. For example, if <I>anchor</I> is center then
+ the image is centered on the point; if <I>anchor</I> is n then the
+ image will be drawn such that the top center point of the rect-
+ angular region occupied by the image will be at the positioning
+ point. This option defaults to center.
+
+ <B>-image</B> <I>image</I>
+ Specifies the image to be drawn. If <I>image</I> is "", the marker
+ gaps on the line. Each number must be between 1 and 255. If
+ <I>dashList</I> is "", the marker line will be solid.
+
+ <B>-fill</B> <I>color</I>
+ Sets the background color of the line. This color is used with
+ striped lines (see the <B>-fdashes</B> option). If <I>color</I> is the empty
+ string, no background color is drawn (the line will be dashed,
+ not striped). The default background color is "".
+
+ <B>-linewidth</B> <I>pixels</I>
+ Sets the width of the lines. The default width is 0.
+
+ <B>-outline</B> <I>color</I>
+ Sets the foreground color of the line. The default value is
+ black.
+
+ <B>-stipple</B> <I>bitmap</I>
+ Specifies a stipple pattern used to draw the line, rather than a
+ solid line. <I>Bitmap</I> specifies a bitmap to use as the stipple
+ pattern. If <I>bitmap</I> is "", then the line is drawn in a solid
+ fashion. The default is "".
+
+ <B>POLYGON</B> <B>MARKERS</B>
+ A polygon marker displays a closed region described as two or more con-
+ nected line segments. It is assumed the first and last points are con-
+ nected. Polygon markers are created using the marker <B>create</B> operation
+ in the form: <I>pathName</I> <B>marker</B> <B>create</B> <B>polygon</B> ?<I>option</I> <I>value</I>?... There
+ may be many <I>option</I>-<I>value</I> pairs, each sets a configuration option for
+ the marker. These same <I>option</I>-<I>value</I> pairs may be used with the <B>marker</B>
+ <B>configure</B> command to change the marker's configuration. The following
+ options are supported for polygon markers:
+
+ <B>-dashes</B> <I>dashList</I>
+ Sets the dash style of the outline of the polygon. <I>DashList</I> is a
+ list of up to 11 numbers that alternately represent the lengths
+ of the dashes and gaps on the outline. Each number must be
+ between 1 and 255. If <I>dashList</I> is "", the outline will be a
+ solid line.
+
+ <B>-fill</B> <I>color</I>
+ Sets the fill color of the polygon. If <I>color</I> is "", then the
+ interior of the polygon is transparent. The default is white.
+
+ <B>-linewidth</B> <I>pixels</I>
+ Sets the width of the outline of the polygon. If <I>pixels</I> is zero,
+ no outline is drawn. The default is 0.
+
+ <B>-outline</B> <I>color</I>
+ Sets the color of the outline of the polygon. If the polygon is
+ stippled (see the <B>-stipple</B> option), then this represents the
+ foreground color of the stipple. The default is black.
+
+ the marker's <B>configure</B> operation.
+
+ The following options are specific to text markers:
+
+ <B>-anchor</B> <I>anchor</I>
+ <I>Anchor</I> tells how to position the text relative to the position-
+ ing point for the text. For example, if <I>anchor</I> is center then
+ the text is centered on the point; if <I>anchor</I> is n then the text
+ will be drawn such that the top center point of the rectangular
+ region occupied by the text will be at the positioning point.
+ This default is center.
+
+ <B>-background</B> <I>color</I>
+ Same as the <B>-fill</B> option.
+
+ <B>-font</B> <I>fontName</I>
+ Specifies the font of the text. The default is *-Helvetica-
+ Bold-R-Normal-*-120-*.
+
+ <B>-fill</B> <I>color</I>
+ Sets the background color of the text. If <I>color</I> is the empty
+ string, no background will be transparent. The default back-
+ ground color is "".
+
+ <B>-foreground</B> <I>color</I>
+ Same as the <B>-outline</B> option.
+
+ <B>-justify</B> <I>justify</I>
+ Specifies how the text should be justified. This matters only
+ when the marker contains more than one line of text. <I>Justify</I>
+ must be left, right, or center. The default is center.
+
+ <B>-outline</B> <I>color</I>
+ Sets the color of the text. The default value is black.
+
+ <B>-padx</B> <I>pad</I>
+ Sets the padding to the left and right exteriors of the text.
+ <I>Pad</I> can be a list of one or two screen distances. If <I>pad</I> has
+ two elements, the left side of the text is padded by the first
+ distance and the right side by the second. If <I>pad</I> has just one
+ distance, both the left and right sides are padded evenly. The
+ default is 4.
+
+ <B>-pady</B> <I>pad</I>
+ Sets the padding above and below the text. <I>Pad</I> can be a list of
+ one or two screen distances. If <I>pad</I> has two elements, the area
+ above the text is padded by the first distance and the area
+ below by the second. If <I>pad</I> is just one distance, both the top
+ and bottom areas are padded evenly. The default is 4.
+
+ <B>-rotate</B> <I>theta</I>
+ Specifies the number of degrees to rotate the text. <I>Theta</I> is a
+
+ <I>option</I>-<I>value</I> pairs may be used with the marker's <B>configure</B> command.
+
+ The following options are specific to window markers:
+
+ <B>-anchor</B> <I>anchor</I>
+ <I>Anchor</I> tells how to position the widget relative to the posi-
+ tioning point for the widget. For example, if <I>anchor</I> is center
+ then the widget is centered on the point; if <I>anchor</I> is n then
+ the widget will be displayed such that the top center point of
+ the rectangular region occupied by the widget will be at the
+ positioning point. This option defaults to center.
+
+ <B>-height</B> <I>pixels</I>
+ Specifies the height to assign to the marker's window. If this
+ option isn't specified, or if it is specified as "", then the
+ window is given whatever height the widget requests internally.
+
+ <B>-width</B> <I>pixels</I>
+ Specifies the width to assign to the marker's window. If this
+ option isn't specified, or if it is specified as "", then the
+ window is given whatever width the widget requests internally.
+
+ <B>-window</B> <I>pathName</I>
+ Specifies the widget to be managed by the graph. <I>PathName</I> must
+ be a child of the <B>graph</B> widget.
+
+
+</PRE>
+<H2>GRAPH COMPONENT BINDINGS</H2><PRE>
+ Specific graph components, such as elements, markers and legend
+ entries, can have a command trigger when event occurs in them, much
+ like canvas items in Tk's canvas widget. Not all event sequences are
+ valid. The only binding events that may be specified are those related
+ to the mouse and keyboard (such as <B>Enter</B>, <B>Leave</B>, <B>ButtonPress</B>, <B>Motion</B>,
+ and <B>KeyPress</B>).
+
+ Only one element or marker can be picked during an event. This means,
+ that if the mouse is directly over both an element and a marker, only
+ the uppermost component is selected. This isn't true for legend
+ entries. Both a legend entry and an element (or marker) binding com-
+ mands will be invoked if both items are picked.
+
+ It is possible for multiple bindings to match a particular event. This
+ could occur, for example, if one binding is associated with the element
+ name and another is associated with one of the element's tags (see the
+ <B>-bindtags</B> option). When this occurs, all of the matching bindings are
+ invoked. A binding associated with the element name is invoked first,
+ followed by one binding for each of the element's bindtags. If there
+ are multiple matching bindings for a single tag, then only the most
+ specific binding is invoked. A continue command in a binding script
+ terminates that script, and a break command terminates that script and
+ skips any remaining scripts for the event, just as for the bind com-
+ mand.
+
+ vectors are updated.
+
+ From Tcl, create the vectors and configure the element to use them.
+ vector X Y .g element configure line1 -xdata X -ydata Y To set data
+ points from C, you pass the values as arrays of doubles using the
+ <B>Blt_ResetVector</B> call. The vector is reset with the new data and at the
+ next idle point (when Tk re-enters its event loop), the graph will be
+ redrawn automatically. #include &lt;tcl.h&gt; #include &lt;blt.h&gt;
+
+ register int i; Blt_Vector *xVec, *yVec; double x[50], y[50];
+
+ /* Get the BLT vectors "X" and "Y" (created above from Tcl) */ if
+ ((Blt_GetVector(interp, "X", &amp;xVec) != TCL_OK) ||
+ (Blt_GetVector(interp, "Y", &amp;yVec) != TCL_OK)) {
+ return TCL_ERROR; }
+
+ for (i = 0; i &lt; 50; i++) {
+ x[i] = i * 0.02;
+ y[i] = sin(x[i]); }
+
+ /* Put the data into BLT vectors */ if ((Blt_ResetVector(xVec, x, 50,
+ 50, TCL_VOLATILE) != TCL_OK) ||
+ (Blt_ResetVector(yVec, y, 50, 50, TCL_VOLATILE) != TCL_OK)) {
+ return TCL_ERROR; } See the <B>vector</B> manual page for more details.
+
+
+</PRE>
+<H2>SPEED TIPS</H2><PRE>
+ There may be cases where the graph needs to be drawn and updated as
+ quickly as possible. If drawing speed becomes a big problem, here are
+ a few tips to speed up displays.
+
+ <B>o</B> Try to minimize the number of data points. The more data points the
+ looked at, the more work the graph must do.
+
+ <B>o</B> If your data is generated as floating point values, the time required
+ to convert the data values to and from ASCII strings can be signifi-
+ cant, especially when there any many data points. You can avoid the
+ redundant string-to-decimal conversions using the C API to BLT vec-
+ tors.
+
+ <B>o</B> Data elements without symbols are drawn faster than with symbols.
+ Set the data element's <B>-symbol</B> option to none. If you need to draw
+ symbols, try using the simple symbols such as splus and scross.
+
+ <B>o</B> Don't stipple or dash the element. Solid lines are much faster.
+
+ <B>o</B> If you update data elements frequently, try turning off the widget's
+ <B>-bufferelements</B> option. When the graph is first displayed, it draws
+ data elements into an internal pixmap. The pixmap acts as a cache,
+ so that when the graph needs to be redrawn again, and the data ele-
+ ments or coordinate axes haven't changed, the pixmap is simply copied
+ to the screen. This is especially useful when you are using markers
+ to highlight points and regions on the graph. But if the graph is
+
+
+
+BLT BLT_VERSION graph(n)
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
diff --git a/doc/vector.html b/doc/vector.html
new file mode 100644
index 0000000..37ad3c3
--- /dev/null
+++ b/doc/vector.html
@@ -0,0 +1,704 @@
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>blt::vector</B> <B>create</B> <I>vecName</I> ?<I>vecName</I>...? ?<I>switches</I>?
+
+ <B>blt::vector</B> <B>destroy</B> <I>vecName</I> ?<I>vecName</I>...?
+
+ <B>blt::vector</B> <B>expr</B> <I>expression</I>
+
+ <B>blt::vector</B> <B>names</B> ?<I>pattern</I>...?
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>vector</B> command creates an array of floating point values. The vec-
+ tor's components can be manipulated in three ways: through a Tcl array
+ variable, a Tcl command, or the C API.
+
+
+</PRE>
+<H2>INTRODUCTION</H2><PRE>
+ A vector is an ordered set of real numbers. The components of a vector
+ are indexed by integers.
+
+ Vectors are common data structures for many applications. For example,
+ a graph may use two vectors to represent the X-Y coordinates of the
+ data plotted. The graph will automatically be redrawn when the vectors
+ are updated or changed. By using vectors, you can separate data analy-
+ sis from the graph widget. This makes it easier, for example, to add
+ data transformations, such as splines. It's possible to plot the same
+ data to in multiple graphs, where each graph presents a different view
+ or scale of the data.
+
+ You could try to use Tcl's associative arrays as vectors. Tcl arrays
+ are easy to use. You can access individual elements randomly by speci-
+ fying the index, or the set the entire array by providing a list of
+ index and value pairs for each element. The disadvantages of associa-
+ tive arrays as vectors lie in the fact they are implemented as hash
+ tables.
+
+ <B>o</B> There's no implied ordering to the associative arrays. If you used
+ vectors for plotting, you would want to insure the second component
+ comes after the first, an so on. This isn't possible since arrays
+ are actually hash tables. For example, you can't get a range of val-
+ ues between two indices. Nor can you sort an array.
+
+ <B>o</B> Arrays consume lots of memory when the number of elements becomes
+ large (tens of thousands). This is because each element's index and
+ value are stored as strings in the hash table.
+
+ <B>o</B> The C programming interface is unwieldy. Normally with vectors, you
+ would like to view the Tcl array as you do a C array, as an array of
+ floats or doubles. But with hash tables, you must convert both the
+ index and value to and from decimal strings, just to access an ele-
+ ment in the array. This makes it cumbersome to perform operations on
+ the array as a whole.
+
+ The <B>vector</B> command tries to overcome these disadvantages while still
+ 0.0. In addition, both a Tcl command and array variable, both named y,
+ are created. You can use either the command or variable to query or
+ modify components of the vector. # Set the first value. set <B>y(0)</B> 9.25
+ puts "y has [y length] components" The array y can be used to read or
+ set individual components of the vector. Vector components are indexed
+ from zero. The array index must be a number less than the number of
+ components. For example, it's an error if you try to set the 51st ele-
+ ment of y. # This is an error. The vector only has 50 components. set
+ <B>y(50)</B> 0.02 You can also specify a range of indices using a colon (:) to
+ separate the first and last indices of the range. # Set the first six
+ components of y set y(0:5) 25.2 If you don't include an index, then it
+ will default to the first and/or last component of the vector. # Print
+ out all the components of y puts "y = $y(:)" There are special non-
+ numeric indices. The index end, specifies the last component of the
+ vector. It's an error to use this index if the vector is empty (length
+ is zero). The index ++end can be used to extend the vector by one com-
+ ponent and initialize it to a specific value. You can't read from the
+ array using this index, though. # Extend the vector by one component.
+ set y(++end) 0.02 The other special indices are min and max. They
+ return the current smallest and largest components of the vector. #
+ Print the bounds of the vector puts "min=$y(min) max=$y(max)" To delete
+ components from a vector, simply unset the corresponding array element.
+ In the following example, the first component of y is deleted. All the
+ remaining components of y will be moved down by one index as the length
+ of the vector is reduced by one. # Delete the first component unset
+ <B>y(0)</B> puts "new first element is $<B>y(0)</B>" The vector's Tcl command can
+ also be used to query or set the vector. # Create and set the compo-
+ nents of a new vector blt::vector create x x set { 0.02 0.04 0.06 0.08
+ 0.10 0.12 0.14 0.16 0.18 0.20 } Here we've created a vector x without a
+ initial length specification. In this case, the length is zero. The
+ <B>set</B> operation resets the vector, extending it and setting values for
+ each new component.
+
+ There are several operations for vectors. The <B>range</B> operation lists
+ the components of a vector between two indices. # List the components
+ puts "x = [x range 0 end]" You can search for a particular value using
+ the <B>search</B> operation. It returns a list of indices of the components
+ with the same value. If no component has the same value, it returns
+ "". # Find the index of the biggest component set indices [x search
+ $x(max)] Other operations copy, append, or sort vectors. You can
+ append vectors or new values onto an existing vector with the <B>append</B>
+ operation. # Append assorted vectors and values to x x append x2 x3 {
+ 2.3 4.5 } x4 The <B>sort</B> operation sorts the vector. If any additional
+ vectors are specified, they are rearranged in the same order as the
+ vector. For example, you could use it to sort data points represented
+ by x and y vectors. # Sort the data points x sort y The vector x is
+ sorted while the components of y are rearranged so that the original
+ x,y coordinate pairs are retained.
+
+ The <B>expr</B> operation lets you perform arithmetic on vectors. The result
+ is stored in the vector. # Add the two vectors and a scalar x expr { x
+ + y } x expr { x * 2 } When a vector is modified, resized, or deleted,
+ Vectors are created using the <B>vector</B> <B>create</B> operation. Th <B>create</B> oper-
+ ation can be invoked in one of three forms:
+
+ <B>blt::vector</B> <B>create</B> <I>vecName</I>
+ This creates a new vector <I>vecName</I> which initially has no compo-
+ nents.
+
+ <B>blt::vector</B> <B>create</B> <I>vecName</I>(<I>size</I>)
+ This second form creates a new vector which will contain <I>size</I>
+ number of components. The components will be indexed starting
+ from zero (0). The default value for the components is 0.0.
+
+ <B>blt::vector</B> <B>create</B> <I>vecName</I>(<I>first</I>:<I>last</I>)
+ The last form creates a new vector of indexed <I>first</I> through
+ <I>last</I>. <I>First</I> and <I>last</I> can be any integer value so long as <I>first</I>
+ is less than <I>last</I>.
+
+ Vector names must start with a letter and consist of letters, digits,
+ or underscores. # Error: must start with letter blt::vector create
+ 1abc You can automatically generate vector names using the "#auto" vec-
+ tor name. The <B>create</B> operation will generate a unique vector name.
+ set vec [blt::vector create #auto] puts "$vec has [$vec length] compo-
+ nents"
+
+ <B>VECTOR</B> <B>INDICES</B>
+ Vectors are indexed by integers. You can access the individual vector
+ components via its array variable or Tcl command. The string repre-
+ senting the index can be an integer, a numeric expression, a range, or
+ a special keyword.
+
+ The index must lie within the current range of the vector, otherwise an
+ an error message is returned. Normally the indices of a vector are
+ start from 0. But you can use the <B>offset</B> operation to change a vec-
+ tor's indices on-the-fly. puts $<B>vecName(0)</B> vecName offset -5 puts
+ $vecName(-5) You can also use numeric expressions as indices. The
+ result of the expression must be an integer value. set n 21 set vec-
+ Name($n+3) 50.2 The following special non-numeric indices are avail-
+ able: min, max, end, and ++end. puts "min = $vecName($min)" set vec-
+ Name(end) -1.2 The indices min and max will return the minimum and max-
+ imum values of the vector. The index end returns the value of the last
+ component in the vector. The index ++end is used to append new value
+ onto the vector. It automatically extends the vector by one component
+ and sets its value. # Append an new component to the end set vec-
+ Name(++end) 3.2 A range of indices can be indicated by a colon (:). #
+ Set the first six components to 1.0 set vecName(0:5) 1.0 If no index is
+ supplied the first or last component is assumed. # Print the values of
+ all the components puts $vecName(:)
+
+
+</PRE>
+<H2>VECTOR OPERATIONS</H2><PRE>
+ <B>blt::vector</B> <B>create</B> <I>vecName</I>?(<I>size</I>)?... ?<I>switches</I>?
+ The <B>create</B> operation creates a new vector <I>vecName</I>. Both a Tcl
+ command and array variable <I>vecName</I> are also created. The name
+ then no variable will be mapped. You can always map a
+ variable back to the vector using the vector's <B>variable</B>
+ operation.
+
+ <B>-command</B> <I>cmdName</I>
+ Maps a Tcl command to the vector. The vector can be
+ accessed using <I>cmdName</I> and one of the vector instance
+ operations. A Tcl command by that name cannot already
+ exist. If <I>cmdName</I> is the empty string, no command map-
+ ping will be made.
+
+ <B>-watchunset</B> <I>boolean</I>
+ Indicates that the vector should automatically delete
+ itself if the variable associated with the vector is
+ unset. By default, the vector will not be deleted. This
+ is different from previous releases. Set <I>boolean</I> to
+ "true" to get the old behavior.
+
+ <B>blt::vector</B> <B>destroy</B> <I>vecName</I> ?<I>vecName...</I>?
+ Deletes one or more vectors. Both the Tcl command and array
+ variable are removed also.
+
+ <B>blt::vector</B> <B>expr</B> <I>expression</I>
+ All binary operators take vectors as operands (remember that
+ numbers are treated as one-component vectors). The exact action
+ of binary operators depends upon the length of the second oper-
+ and. If the second operand has only one component, then each
+ element of the first vector operand is computed by that value.
+ For example, the expression "x * 2" multiples all elements of
+ the vector x by 2. If the second operand has more than one com-
+ ponent, both operands must be the same length. Each pair of
+ corresponding elements are computed. So "x + y" adds the the
+ first components of x and y together, the second, and so on.
+
+ The valid operators are listed below, grouped in decreasing
+ order of precedence:
+
+ <B>-</B> <B>!</B> Unary minus and logical NOT. The unary
+ minus flips the sign of each component in
+ the vector. The logical not operator
+ returns a vector of whose values are 0.0 or
+ 1.0. For each non-zero component 1.0 is
+ returned, 0.0 otherwise.
+
+ <B>^</B> Exponentiation.
+
+ <B>*</B> <B>/</B> <B>%</B> Multiply, divide, remainder.
+
+ <B>+</B> <B>-</B> Add and subtract.
+
+ <B>&lt;&lt;</B> <B>&gt;&gt;</B> Left and right shift. Circularly shifts the
+ values of the vector (not implemented yet).
+
+ <B>&amp;&amp;</B> Logical AND. Produces a 1 result if both
+ operands are non-zero, 0 otherwise.
+
+ <B>||</B> Logical OR. Produces a 0 result if both op-
+ erands are zero, 1 otherwise.
+
+ <I>x</I><B>?</B><I>y</I><B>:</B><I>z</I> If-then-else, as in C. (Not implemented
+ yet).
+
+ See the C manual for more details on the results produced by
+ each operator. All of the binary operators group left-to-right
+ within the same precedence level.
+
+ Several mathematical functions are supported for vectors. Each
+ of the following functions invokes the math library function of
+ the same name; see the manual entries for the library functions
+ for details on what they do. The operation is applied to all
+ elements of the vector returning the results.
+ <B>acos</B> <B>cos</B> <B>hypot</B> <B>sinh</B>
+ <B>asin</B> <B>cosh</B> <B>log</B> <B>sqrt</B>
+ <B>atan</B> <B>exp</B> <B>log10</B> <B>tan</B>
+ <B>ceil</B> <B>floor</B> <B>sin</B> <B>tanh</B> Additional functions
+ are:
+
+ <B>abs</B> Returns the absolute value of each component.
+
+ <B>random</B> Returns a vector of non-negative values uniformly dis-
+ tributed between [0.0, 1.0) using <I>drand48</I>. The seed
+ comes from the internal clock of the machine or may be
+ set manual with the srandom function.
+
+ <B>round</B> Rounds each component of the vector.
+
+ <B>srandom</B> Initializes the random number generator using <I>srand48</I>.
+ The high order 32-bits are set using the integral por-
+ tion of the first vector component. All other compo-
+ nents are ignored. The low order 16-bits are set to
+ an arbitrary value.
+
+ The following functions return a single value.
+
+ <B>adev</B> Returns the average deviation (defined as the sum of
+ the absolute values of the differences between compo-
+ nent and the mean, divided by the length of the vec-
+ tor).
+
+ <B>kurtosis</B> Returns the degree of peakedness (fourth moment) of
+ the vector.
+
+ <B>length</B> Returns the number of components in the vector.
+
+ <B>max</B> Returns the vector's maximum value.
+ root of the variance) of the vector.
+
+ <B>skew</B> Returns the skewness (or third moment) of the vector.
+ This characterizes the degree of asymmetry of the vec-
+ tor about the mean.
+
+ <B>sum</B> Returns the sum of the components.
+
+ <B>var</B> Returns the variance of the vector. The sum of the
+ squared differences between each component and the
+ mean is computed. The variance is the sum divided by
+ the length of the vector minus 1.
+
+ The last set returns a vector of the same length as the argu-
+ ment.
+
+ <B>norm</B> Scales the values of the vector to lie in the range
+ [0.0..1.0].
+
+ <B>sort</B> Returns the vector components sorted in ascending
+ order.
+
+ <B>vector</B> <B>names</B> ?<I>pattern</I>?
+
+
+</PRE>
+<H2>INSTANCE OPERATIONS</H2><PRE>
+ You can also use the vector's Tcl command to query or modify it. The
+ general form is <I>vecName</I> <I>operation</I> ?<I>arg</I>?... Both <I>operation</I> and its
+ arguments determine the exact behavior of the command. The operations
+ available for vectors are listed below.
+
+ <I>vecName</I> <B>append</B> <I>item</I> ?<I>item</I>?...
+ Appends the component values from <I>item</I> to <I>vecName</I>. <I>Item</I> can be
+ either the name of a vector or a list of numeric values.
+
+ <I>vecName</I> <B>binread</B> <I>channel</I> ?<I>length</I>? ?<I>switches</I>?
+ Reads binary values from a Tcl channel. Values are either
+ appended to the end of the vector or placed at a given index
+ (using the <B>-at</B> option), overwriting existing values. Data is
+ read until EOF is found on the channel or a specified number of
+ values <I>length</I> are read (note that this is not necessarily the
+ same as the number of bytes). The following switches are sup-
+ ported:
+
+ <B>-swap</B> Swap bytes and words. The default endian is the host
+ machine.
+
+ <B>-at</B> <I>index</I>
+ New values will start at vector index <I>index</I>. This will
+ overwrite any current values.
+
+ <B>-format</B> <I>format</I>
+ Specifies the format of the data. <I>Format</I> can be one of
+
+ This command removes the index and value strings from the array.
+ This is useful when the vector is large.
+
+ <I>vecName</I> <B>delete</B> <I>index</I> ?<I>index</I>?...
+ Deletes the <I>index</I>th component from the vector <I>vecName</I>. <I>Index</I> is
+ the index of the element to be deleted. This is the same as
+ unsetting the array variable element <I>index</I>. The vector is com-
+ pacted after all the indices have been deleted.
+
+ <I>vecName</I> <B>dup</B> <I>destName</I>
+ Copies <I>vecName</I> to <I>destName</I>. <I>DestName</I> is the name of a destina-
+ tion vector. If a vector <I>destName</I> already exists, it is over-
+ written with the components of <I>vecName</I>. Otherwise a new vector
+ is created.
+
+ <I>vecName</I> <B>expr</B> <I>expression</I>
+ Computes the expression and resets the values of the vector
+ accordingly. Both scalar and vector math operations are
+ allowed. All values in expressions are either real numbers or
+ names of vectors. All numbers are treated as one component vec-
+ tors.
+
+ <I>vecName</I> <B>length</B> ?<I>newSize</I>?
+ Queries or resets the number of components in <I>vecName</I>. <I>NewSize</I>
+ is a number specifying the new size of the vector. If <I>newSize</I>
+ is smaller than the current size of <I>vecName</I>, <I>vecName</I> is trun-
+ cated. If <I>newSize</I> is greater, the vector is extended and the
+ new components are initialized to 0.0. If no <I>newSize</I> argument
+ is present, the current length of the vector is returned.
+
+ <I>vecName</I> <B>merge</B> <I>srcName</I> ?<I>srcName</I>?...
+ Merges the named vectors into a single vector. The resulting
+ vector is formed by merging the components of each source vector
+ one index at a time.
+
+ <I>vecName</I> <B>notify</B> <I>keyword</I>
+ Controls how vector clients are notified of changes to the vec-
+ tor. The exact behavior is determined by <I>keyword</I>.
+
+ always Indicates that clients are to be notified immediately
+ whenever the vector is updated.
+
+ never Indicates that no clients are to be notified.
+
+ whenidle
+ Indicates that clients are to be notified at the next
+ idle point whenever the vector is updated.
+
+ now If any client notifications is currently pending, they
+ are notified immediately.
+
+ cancel Cancels pending notifications of clients using the vec-
+ interval between each of the original components will contain a
+ <I>density</I> number of new components, whose values are evenly dis-
+ tributed between the original components values. This is useful
+ for generating abscissas to be interpolated along a spline.
+
+ <I>vecName</I> <B>range</B> <I>firstIndex</I> ?<I>lastIndex</I>?...
+ Returns a list of numeric values representing the vector compo-
+ nents between two indices. Both <I>firstIndex</I> and <I>lastIndex</I> are
+ indices representing the range of components to be returned. If
+ <I>lastIndex</I> is less than <I>firstIndex</I>, the components are listed in
+ reverse order.
+
+ <I>vecName</I> <B>search</B> <I>value</I> ?<I>value</I>?
+ Searches for a value or range of values among the components of
+ <I>vecName</I>. If one <I>value</I> argument is given, a list of indices of
+ the components which equal <I>value</I> is returned. If a second <I>value</I>
+ is also provided, then the indices of all components which lie
+ within the range of the two values are returned. If no compo-
+ nents are found, then "" is returned.
+
+ <I>vecName</I> <B>set</B> <I>item</I>
+ Resets the components of the vector to <I>item</I>. <I>Item</I> can be either
+ a list of numeric expressions or another vector.
+
+ <I>vecName</I> <B>seq</B> <I>start</I> ?<I>finish</I>? ?<I>step</I>?
+ Generates a sequence of values starting with the value <I>start</I>.
+ <I>Finish</I> indicates the terminating value of the sequence. The
+ vector is automatically resized to contain just the sequence.
+ If three arguments are present, <I>step</I> designates the interval.
+
+ With only two arguments (no <I>finish</I> argument), the sequence will
+ continue until the vector is filled. With one argument, the
+ interval defaults to 1.0.
+
+ <I>vecName</I> <B>sort</B> ?<B>-reverse</B>? ?<I>argName</I>?...
+ Sorts the vector <I>vecName</I> in increasing order. If the <B>-reverse</B>
+ flag is present, the vector is sorted in decreasing order. If
+ other arguments <I>argName</I> are present, they are the names of vec-
+ tors which will be rearranged in the same manner as <I>vecName</I>.
+ Each vector must be the same length as <I>vecName</I>. You could use
+ this to sort the x vector of a graph, while still retaining the
+ same x,y coordinate pairs in a y vector.
+
+ <I>vecName</I> <B>variable</B> <I>varName</I>
+ Maps a Tcl variable to the vector, creating another means for
+ accessing the vector. The variable <I>varName</I> can't already exist.
+ This overrides any current variable mapping the vector may have.
+
+
+</PRE>
+<H2>C LANGUAGE API</H2><PRE>
+ You can create, modify, and destroy vectors from C code, using library
+ routines. You need to include the header file blt.h. It contains the
+ definition of the structure <B>Blt_Vector</B>, which represents the vector.
+
+ <B>Blt_CreateVector</B>
+
+ Synopsis: int <B>Blt_CreateVector</B> (<I>interp</I>, <I>vecName</I>, <I>length</I>, <I>vecPtrPtr</I>)
+ Tcl_Interp *<I>interp</I>; char *<I>vecName</I>; int <I>length</I>; Blt_Vec-
+ tor **<I>vecPtrPtr</I>;
+
+ Description:
+ Creates a new vector <I>vecName</I> with a length of <I>length</I>.
+ <B>Blt_CreateVector</B> creates both a new Tcl command and array
+ variable <I>vecName</I>. Neither a command nor variable named
+ <I>vecName</I> can already exist. A pointer to the vector is
+ placed into <I>vecPtrPtr</I>.
+
+ Results: Returns TCL_OK if the vector is successfully created. If
+ <I>length</I> is negative, a Tcl variable or command <I>vecName</I>
+ already exists, or memory cannot be allocated for the vec-
+ tor, then TCL_ERROR is returned and <I>interp-&gt;result</I> will
+ contain an error message.
+
+
+ <B>Blt_DeleteVectorByName</B>
+
+ Synopsis: int <B>Blt_DeleteVectorByName</B> (<I>interp</I>, <I>vecName</I>)
+ Tcl_Interp *<I>interp</I>; char *<I>vecName</I>;
+
+ Description:
+ Removes the vector <I>vecName</I>. <I>VecName</I> is the name of a vec-
+ tor which must already exist. Both the Tcl command and
+ array variable <I>vecName</I> are destroyed. All clients of the
+ vector will be notified immediately that the vector has
+ been destroyed.
+
+ Results: Returns TCL_OK if the vector is successfully deleted. If
+ <I>vecName</I> is not the name a vector, then TCL_ERROR is
+ returned and <I>interp-&gt;result</I> will contain an error message.
+
+
+ <B>Blt_DeleteVector</B>
+
+ Synopsis: int <B>Blt_DeleteVector</B> (<I>vecPtr</I>)
+ Blt_Vector *<I>vecPtr</I>;
+
+ Description:
+ Removes the vector pointed to by <I>vecPtr</I>. <I>VecPtr</I> is a
+ pointer to a vector, typically set by <B>Blt_GetVector</B> or
+ <B>Blt_CreateVector</B>. Both the Tcl command and array variable
+ of the vector are destroyed. All clients of the vector
+ will be notified immediately that the vector has been
+ destroyed.
+
+ Results: Returns TCL_OK if the vector is successfully deleted. If
+
+ Results: Returns TCL_OK if the vector is successfully retrieved. If
+ <I>vecName</I> is not the name of a vector, then TCL_ERROR is
+ returned and <I>interp-&gt;result</I> will contain an error message.
+
+
+ <B>Blt_ResetVector</B>
+
+
+ Synopsis: int <B>Blt_ResetVector</B> (<I>vecPtr</I>, <I>dataArr</I>, <I>numVal-</I>
+ <I>ues</I>, <I>arraySize</I>, <I>freeProc</I>)
+ Blt_Vector *<I>vecPtr</I>; double *<I>dataArr</I>; int *<I>numValues</I>; int
+ *<I>arraySize</I>; Tcl_FreeProc *<I>freeProc</I>;
+
+ Description:
+ Resets the components of the vector pointed to by <I>vecPtr</I>.
+ Calling <B>Blt_ResetVector</B> will trigger the vector to dispatch
+ notifications to its clients. <I>DataArr</I> is the array of dou-
+ bles which represents the vector data. <I>NumValues</I> is the
+ number of elements in the array. <I>ArraySize</I> is the actual
+ size of the array (the array may be bigger than the number
+ of values stored in it). <I>FreeProc</I> indicates how the storage
+ for the vector component array (<I>dataArr</I>) was allocated. It
+ is used to determine how to reallocate memory when the vec-
+ tor is resized or destroyed. It must be TCL_DYNAMIC,
+ TCL_STATIC, TCL_VOLATILE, or a pointer to a function to
+ free the memory allocated for the vector array. If <I>freeProc</I>
+ is TCL_VOLATILE, it indicates that <I>dataArr</I> must be copied
+ and saved. If <I>freeProc</I> is TCL_DYNAMIC, it indicates that
+ <I>dataArr</I> was dynamically allocated and that Tcl should free
+ <I>dataArr</I> if necessary. Static indicates that nothing should
+ be done to release storage for <I>dataArr</I>.
+
+ Results: Returns TCL_OK if the vector is successfully resized. If
+ <I>newSize</I> is negative, a vector <I>vecName</I> does not exist, or
+ memory cannot be allocated for the vector, then TCL_ERROR
+ is returned and <I>interp-&gt;result</I> will contain an error mes-
+ sage.
+
+
+ <B>Blt_ResizeVector</B>
+
+ Synopsis: int <B>Blt_ResizeVector</B> (<I>vecPtr</I>, <I>newSize</I>)
+ Blt_Vector *<I>vecPtr</I>; int <I>newSize</I>;
+
+ Description:
+ Resets the length of the vector pointed to by <I>vecPtr</I> to
+ <I>newSize</I>. If <I>newSize</I> is smaller than the current size of
+ the vector, it is truncated. If <I>newSize</I> is greater, the
+ vector is extended and the new components are initialized
+ to 0.0. Calling <B>Blt_ResetVector</B> will trigger the vector to
+ dispatch notifications.
+
+ Results: Returns 1 if a vector <I>vecName</I> exists and 0 otherwise.
+
+
+ If your application needs to be notified when a vector changes, it
+ can allocate a unique <I>client</I> <I>identifier</I> for itself. Using this iden-
+ tifier, you can then register a call-back to be made whenever the
+ vector is updated or destroyed. By default, the call-backs are made
+ at the next idle point. This can be changed to occur at the time the
+ vector is modified. An application can allocate more than one iden-
+ tifier for any vector. When the client application is done with the
+ vector, it should free the identifier.
+
+ The call-back routine must of the following type.
+
+ typedef void (<B>Blt_VectorChangedProc</B>) (Tcl_Interp *<I>interp</I>,
+ ClientData <I>clientData</I>, Blt_VectorNotify <I>notify</I>);
+
+ <I>ClientData</I> is passed to this routine whenever it is called. You can
+ use this to pass information to the call-back. The <I>notify</I> argument
+ indicates whether the vector has been updated of destroyed. It is an
+ enumerated type.
+
+ typedef enum {
+ BLT_VECTOR_NOTIFY_UPDATE=1,
+ BLT_VECTOR_NOTIFY_DESTROY=2 } <B>Blt_VectorNotify</B>;
+
+
+ <B>Blt_AllocVectorId</B>
+
+ Synopsis: Blt_VectorId <B>Blt_AllocVectorId</B> (<I>interp</I>, <I>vecName</I>)
+ Tcl_Interp *<I>interp</I>; char *<I>vecName</I>;
+
+ Description:
+ Allocates an client identifier for with the vector <I>vec-</I>
+ <I>Name</I>. This identifier can be used to specify a call-
+ back which is triggered when the vector is updated or
+ destroyed.
+
+ Results: Returns a client identifier if successful. If <I>vecName</I>
+ is not the name of a vector, then NULL is returned and
+ <I>interp-&gt;result</I> will contain an error message.
+
+
+ <B>Blt_GetVectorById</B>
+
+ Synopsis: int <B>Blt_GetVector</B> (<I>interp</I>, <I>clientId</I>, <I>vecPtrPtr</I>)
+ Tcl_Interp *<I>interp</I>; Blt_VectorId <I>clientId</I>; Blt_Vector
+ **<I>vecPtrPtr</I>;
+
+ Description:
+ Retrieves the vector used by <I>clientId</I>. <I>ClientId</I> is a
+
+ Description:
+ Specifies a call-back routine to be called whenever the
+ vector associated with <I>clientId</I> is updated or deleted.
+ <I>Proc</I> is a pointer to call-back routine and must be of
+ the type <B>Blt_VectorChangedProc</B>. <I>ClientData</I> is a one-
+ word value to be passed to the routine when it is
+ invoked. If <I>proc</I> is NULL, then the client is not noti-
+ fied.
+
+ Results: The designated call-back procedure will be invoked when
+ the vector is updated or destroyed.
+
+
+ <B>Blt_FreeVectorId</B>
+
+ Synopsis: void <B>Blt_FreeVectorId</B> (<I>clientId</I>);
+ Blt_VectorId <I>clientId</I>;
+
+ Description:
+ Frees the client identifier. Memory allocated for the
+ identifier is released. The client will no longer be
+ notified when the vector is modified.
+
+ Results: The designated call-back procedure will be no longer be
+ invoked when the vector is updated or destroyed.
+
+
+ <B>Blt_NameOfVectorId</B>
+
+ Synopsis: char *<B>Blt_NameOfVectorId</B> (<I>clientId</I>);
+ Blt_VectorId <I>clientId</I>;
+
+ Description:
+ Retrieves the name of the vector associated with the
+ client identifier <I>clientId</I>.
+
+ Results: Returns the name of the vector associated with <I>clientId</I>.
+ If <I>clientId</I> is not an identifier or the vector has been
+ destroyed, NULL is returned.
+
+
+ <B>Blt_InstallIndexProc</B>
+
+ Synopsis: void <B>Blt_InstallIndexProc</B> (<I>indexName</I>, <I>procPtr</I>)
+ char *<I>indexName</I>; Blt_VectorIndexProc *<I>procPtr</I>;
+
+ Description:
+ Registers a function to be called to retrieved the index
+ <I>indexName</I> from the vector's array variable.
+
+ typedef double Blt_VectorIndexProc(Vector *vecPtr);
+
+ difference what the initial size of the vector is since it will be
+ reset shortly. The vector is updated when <B>lt_ResetVector</B> is called.
+ Blt_ResetVector makes the changes visible to the Tcl interface and
+ other vector clients (such as a graph widget).
+
+ #include &lt;tcl.h&gt; #include &lt;blt.h&gt; Blt_Vector
+ *vecPtr; double *newArr; FILE *f; struct stat statBuf; int numBytes,
+ numValues;
+
+ f = fopen("binary.dat", "r"); fstat(fileno(f), &amp;statBuf); numBytes =
+ (int)statBuf.st_size;
+
+ /* Allocate an array big enough to hold all the data */ newArr = (dou-
+ ble *)malloc(numBytes); numValues = numBytes / sizeof(double);
+ fread((void *)newArr, numValues, sizeof(double), f); fclose(f);
+
+ if (Blt_VectorExists(interp, "data")) {
+ if (Blt_GetVector(interp, "data", &amp;vecPtr) != TCL_OK) {
+ return TCL_ERROR;
+ } } else {
+ if (Blt_CreateVector(interp, "data", 0, &amp;vecPtr) != TCL_OK) {
+ return TCL_ERROR;
+ } } /*
+ * Reset the vector. Clients will be notified when Tk is idle.
+ * TCL_DYNAMIC tells the vector to free the memory allocated
+ * if it needs to reallocate or destroy the vector.
+ */ if (Blt_ResetVector(vecPtr, newArr, numValues, numValues,
+ TCL_DYNAMIC) != TCL_OK) {
+ return TCL_ERROR; }
+
+
+</PRE>
+<H2>INCOMPATIBILITIES</H2><PRE>
+ In previous versions, if the array variable isn't global (i.e. local to
+ a Tcl procedure), the vector is automatically destroyed when the proce-
+ dure returns. proc doit {} {
+ # Temporary vector x
+ vector <B>x(10)</B>
+ set <B>x(9)</B> 2.0
+ ... }
+
+ This has changed. Variables are not automatically destroyed when their
+ variable is unset. You can restore the old behavior by setting the
+ "-watchunset" switch.
+
+
+</PRE>
+<H2>KEYWORDS</H2><PRE>
+ vector, graph, widget
+
+
+
+BLT BLT_VERSION blt::vector(n)
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>