added notes on escaping colons in COMMENT and put deprecated forms of command to...
[rrdtool.git] / doc / rrdgraph_graph.pod
index eed7610..23e3235 100644 (file)
@@ -1,53 +1,53 @@
-=head1 NAME
+=pod 
 
-rrdtool graph - Round Robin Database tool grapher functions
+=head1 NAME  
 
-WARNING: This is for version 1.1.x which is B<I<BETA>> software.
-The software may contain serious bugs. Some of the items
-described in here may not yet exist (although this should
-be mentioned) or still be in the alpha stage.  As with every
-other RRDtool release: use at your own risk.  In contrast with
-the stable version of RRDtool, this release may contain bugs
-known to the authors.  It is highly recommended that you subscribe
-to the mailing list.
+rrdgraph_graph - rrdtool graph command reference
 
-=head1 SYNOPSYS
+=head1 SYNOPSIS
 
-I<(to be) Depriciated commands>
+B<PRINT>B<:>I<vname>B<:>I<format>
 
-[B<PRINT:>I<vname>B<:>I<CF>B<:>I<format>]
-[B<GPRINT:>I<vname>B<:>I<CF>B<:>I<format>]
-[B<HRULE:>I<value>B<#>I<rrggbb>[B<:>I<legend>]]
-[B<STACK:>I<vname>[B<#>I<rrggbb>[B<:>I<legend>]]]
+B<GPRINT>B<:>I<vname>B<:>I<format>
 
-I<(soon) available commands>
+B<COMMENT>B<:>I<text>
 
-[B<PRINT:>I<vname>B<:>I<format>]
-[B<GPRINT:>I<vname>B<:>I<format>]
-[B<COMMENT:>I<text>]
-[B<VRULE:>I<vname>B<#>I<rrggbb>[B<:>I<legend>]]
-[B<LINE>{B<1>|B<2>|B<3>}B<:>I<vname>[B<#>I<rrggbb>[B<:>I<legend>]]][B<:STACK>]
-[B<AREA:>I<vname>[B<#>I<rrggbb>[B<:>I<legend>]]][B<:STACK>]
+B<VRULE>B<:>I<vname>B<#>I<color>[B<:>I<legend>]
 
-I<to be implemented commands>
+B<LINE>I<width>B<:>I<vname>B<#>I<color>[B<:>I<legend>][B<:>B<STACK>]
 
-[B<SHIFT:>I<vname>]
-[B<PART:>I<vname>B<#>I<rrggbb>[B<:>I<legend>]]
+B<AREA>B<:>I<vname>B<#>I<color>[B<:>I<legend>][B<:>B<STACK>]
+
+B<TICK>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<fraction>[B<:>I<legend>]]
+
+B<SHIFT>B<:>I<vname>B<:>I<offset>
+
+=cut
+
+B<PART>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<legend>]
+
+=pod
+
+B<PRINT>B<:>I<vname>B<:>I<CF>B<:>I<format> (deprecated)
+
+B<GPRINT>B<:>I<vname>B<:>I<CF>B<:>I<format> (deprecated)
+
+B<HRULE>B<:>I<value>B<#>I<color>[B<:>I<legend>] (deprecated)
+
+B<STACK>B<:>I<vname>B<#>I<color>[B<:>I<legend>] (deprecated)
 
 =head1 DESCRIPTION
 
 These instructions allow you to generate your image or report.
 If you don't use any graph elements, no graph is generated.
-Similarly no report is generated if you don't use print options.
+Similarly, no report is generated if you don't use print options.
 
 =head1 PRINT
 
-B<PRINT:>I<vname>B<:>I<CF>B<:>I<format>
+=over 4
 
-I<Depriciated. Use the new form of this command in new scripts.>
-The first form of this command is to be used with B<CDEF> I<vname>s.
 
-B<PRINT:>I<vname>B<:>I<format>
+=item B<PRINT:>I<vname>B<:>I<format>
 
 Depending on the context, either the value component or the time
 component of a B<VDEF> is printed using I<format>. It is an error
@@ -67,23 +67,25 @@ B<%%> just prints a literal '%' character
 
 =item *
 
-B<%#.#le> (where # is an optional number) prints like 1.2346e+04
+B<%#.#le> prints numbers like 1.2346e+04. The optional integers # denote field
+width and decimal precision.
 
 =item *
 
-B<%#.#lf> prints like 12345.6789
+B<%#.#lf> prints numbers like 12345.6789, with optional field width
+and precision.
 
 =item *
 
-B<%s> place this after B<%le> or B<%lf>.  This will be replaced by the
+B<%s> place this after B<%le>, B<%lf> or B<%lg>. This will be replaced by the
 appropriate SI magnitude unit and the value will be scaled
-accordingly (123456 -> 123.456 k)
+accordingly (123456 -> 123.456 k).
 
 =item *
 
-B<%S> is similar to B<%s>. It does however use a previously defined
+B<%S> is similar to B<%s>. It does, however, use a previously defined
 magnitude unit. If there is no such unit yet, it tries to define
-one (just like B<%s>). However, if the value is zero, the magnitude
+one (just like B<%s>) unless the value is zero, in which case the magnitude
 unit stays undefined. Thus, formatter strings using B<%S> and no B<%s>
 will all use the same magnitude unit except for zero values.
 
@@ -99,141 +101,202 @@ B<%%> just prints a literal '%' character
 
 =item *
 
-B<%a, %A> prints abbreviated, full weekday name
+B<%a, %A> print the abbreviated or full name of the day of the week.
 
 =item *
 
-B<%b, %B> prints abbreviated, full month name
+B<%b, %B> print the abbreviated or full name of the month.
 
 =item *
 
-B<%d, %m, %y, %H, %M, %S> day,month,year,hour,minute,second all in two-digit format
+B<%d, %m, %y, %H, %M, %S> print day, month, year, hour, minute, and
+second in two-digit format.
 
 =item *
 
-B<%Y> year in 4-digit format
+B<%Y> prints the year in 4-digit format.
 
 =item *
 
-B<%I, %p>  hour (01..12), 'am' or 'pm'
+B<%I, %p> print the hour (01..12), 'am' or 'pm'.
 
 =item *
 
-B<%j, %w> day of the week (0..6), day of the year (1..366)
+B<%j, %w> print day of the week (0..6), day of the year (1..366)
 
 =item *
 
-B<%c, %x, %X> date+time, date, time
+B<%c, %x, %X> print date+time, date only, time only.
 
 =item *
 
-B<%U, %W> week number of the current year with either the first sunday or
-the first monday determining the first week
+B<%U, %W> number of the week of the current year, with either the
+first Sunday (%U) or the first Monday (%W) determining the first week.
 
 =item *
 
-B<%Z> time zone
+B<%Z> prints the time zone.
+
+=back
+
+=item B<PRINT:>I<vname>B<:>I<CF><:>I<format>
+
+I<Deprecated. Use the new form of this command in new scripts.>
+The first form of this command is to be used with B<CDEF> I<vname>s.
 
 =back
 
 =head1 GRAPH
 
-B<GPRINT:>I<vname>B<:>I<CF>B<:>I<format>
+=over 4
+
+=item B<GPRINT>B<:>I<vname>B<:>I<format>
 
-I<Depriciated. Use the new form of this command in new scripts.>
-This is the same as B<PRINT> but now it is printed inside the graph.
-See L<PRINT> for more information.
+This is the same as C<PRINT>, but printed inside the graph.
 
-B<GPRINT:>I<vname>B<:>I<format>
+=item B<GPRINT>B<:>I<vname>B<:>I<CF>B<:>I<format>
 
-This is the same as B<PRINT> but now it is printed inside the graph.
-See L<PRINT> for more information.
+I<Deprecated. Use the new form of this command in new scripts.>
+This is the same as C<PRINT>, but printed inside the graph.
 
-B<COMMENT:>I<text>
+=item B<COMMENT>B<:>I<text>
 
-Text is printed literally in the legend section of the graph
+Text is printed literally in the legend section of the graph. Note that in
+RRDtool 1.2 you have to escape colons in COMMENT text in the same way you
+have to escape them in B<*PRINT> commands by writing B<'\:'>.
 
-B<HRULE:>I<value>B<#>I<rrggbb>[B<:>I<legend>]
+=item B<HRULE>B<:>I<value>B<#>I<color> [ :I<legend> ]
 
-Draw an horizontal line at I<value>. Its color is composed from three
-hexadecimal numbers specifying the color components (00 is off, FF is
-maximum) red, green and blue.  Optionally a legend box and string is
-printed in the legend section. I<value> can be a variable from a B<VDEF>.
-It is an error to use I<vname>s from B<DEF> or B<CDEF> here.
+I<Deprecated. Use B<LINEx> in new scripts.>
 
-B<VRULE:>I<time>B<#>I<rrggbb>[B<:>I<legend>]
+=item B<VRULE>B<:>I<vname>B<#>I<color> [B<:>I<legend> ]
 
 Draw a vertical line at I<time>.  Its color is composed from three
-hexadecimal numbers specifying the color components (00 is off, FF is
-maximum) red, green and blue.  Optionally a legend box and string is
+hexadecimal numbers specifying the rgb color components (00 is off, FF is
+maximum) red, green and blue. Optionally, a legend box and string is
 printed in the legend section. I<time> may be a number or a variable
 from a B<VDEF>. It is an error to use I<vname>s from B<DEF> or B<CDEF> here.
 
-B<LINE>{B<1>|B<2>|B<3>}B<:>I<vname>[B<#>I<rrggbb>[B<:>I<legend>]][B<:STACK>]
+=item B<LINE>I<width>B<:>I<{vname or number}>B<#>I<color>[B<:>I<legend>]
+[ C<:STACK> ]
 
-Draw a line of the specified width into the graph. If the color
-is not specified, the drawing is done 'blind'.  This is useful when
+Draw a line of the specified width onto the graph. If the color
+is not specified, the drawing is done 'invisibly'. This is useful when
 stacking something else on top of this line. Also optional is the
 legend box and string which will be printed in the legend section
-if specified. The B<vname> can be generated by B<DEF>, B<VDEF> and
+if specified. The B<vname> can be generated by B<DEF>, B<VDEF>, and
 B<CDEF>.  If the optional B<STACK> modifier is used, this line is
 stacked on top of the previous element which can be a B<LINEx> or
 an B<AREA>
 
-B<AREA:>I<vname>[B<#>I<rrggbb>[B<:>I<legend>]][B<:STACK>]
-
-See B<LINEx>, however the area between the x-axis and the line will
-also be filled.
-
-B<STACK:>I<vname>[B<#>I<rrggbb>[B<:>I<legend>]]
+=item B<AREA>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<legend>][B<:STACK>]
 
-I<Depriciated.  Use the B<STACK> modifiers on the other commands.>
-I<Note: the comments on stacking are still valid...>
-Repeats the last B<LINEx> or B<AREA> however it doesn't start at the
-x-axis but rather on top of the previous element. This implies that
-there needs to be something to stack on. An invisible B<LINEx> or
-B<AREA> is something you can stack on!
+See B<LINE>, however the area between the x-axis and the line will
+be filled.
 
-Note: When you stack on something that was I<unknown>, the whole
-stack will be I<unknown> for that point in time. If the beginning
-is undefined, there's no way to end somewhere...  If you want to
-graph this stacked variable anyway you need to make sure that the
-B<LINEx> or B<AREA> it gets stacked on is not unknown. Use a CDEF
-instruction with B<IF> and B<UN> to do so.
+=item B<TICK>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<fraction>[B<:>I<legend>]]
 
-B<THE NEXT STUFF IS NOT YET IMPLEMENTED>
+Plot a tick mark (a vertical line) for each value of I<vname> that is
+non-zero and not *UNKNOWN*. The I<fraction> argument specifies the
+length of the tick mark as a fraction of the y-axis; the default value
+is 0.1 (10% of the axis). Note that the color specification is not
+optional.
 
-B<SHIFT:>I<offset in seconds>
+=item B<SHIFT>B<:>I<vname>B<:>I<offset>
 
 Using this command B<RRDtool> will graph the following elements
 with the specified offset.  For instance, you can specify an
-offset of S<( 7*24*60*60 = ) 604800 seconds> to "look back" one
-week. Make sure to notify the viewer you did so...
-The offset will be valid until the next B<SHIFT> command, which
-can have an offset of zero to restore normal graphing.
-As with the other grapher elements, you can specify a number or
+offset of S<( 7*24*60*60 = ) 604'800 seconds> to "look back" one
+week. Make sure to tell the viewer of your graph you did this ...
+As with the other graphing elements, you can specify a number or
 a variable here.
 
-B<RRDtool> has now support for B<pie charts>. If you include the
-B<PART> command, the canvas is extended to make room for a chart
-(or, if no other graph elements are used, the canvas is solely
-used for the pie chart). The size of the canvas is determined by
-the lesser of L<width and height|rrdgraph/item_Size>.
+=cut
+
+# This section describes the curruently defunct
+# PieChart code.
+#
+# =item B<PART>B<:>I<vname>B<#>I<rrggbb>[I<aa>][B<:>I<legend>]
+#
+# B<RRDtool> has now support for B<pie charts>. If you include the
+# B<PART> command, the canvas is extended to make room for a chart.
+# The size of the canvas is determined by the lesser of
+# L<width and height|rrdgraph/item_Size>.
+#
+# Pie parts will be concatenated, the first one will start at the
+# top and parts will be created clockwise.  The size of the part
+# is defined by the value part of the L<VDEF|rrdgraph_data/VDEF>
+# function.  It should return a number between 0 and 100, being a
+# percentage.  Providing wrong input will produce undefined results.
+#
+#
+
+=pod
+
+=item B<STACK>B<:>I<vname>B<#>I<color>[B<:>I<legend>]
+
+I<Deprecated.  Use the B<STACK> modifiers on the other commands.>
+
+=back
+
+B<Some notes on stacking>
+
+When stacking, an element is not placed above the X-axis but rather
+on top of the previous element.  There must be something to stack
+upon.
+
+You can use an B<invisible> LINEx or AREA to stacked upon.  
+
+An B<unknown> value makes the entire stack unknown from that moment on.
+You don't know where to begin (the unknown value) and therefore do
+not know where to end.
+
+If you want to make sure you will be displaying a certain variable,
+make sure never to stack upon the unknown value.  Use a CDEF instruction
+with B<IF> and B<UN> to do so.
+
+=head1 NOTES on legend arguments
+
+=head2 Escaping the colon
+
+A colon ':' in a I<legend> argument will mark the end of the
+legend. To enter a ':' as part of a legend, the colon must be escaped
+with a backslash '\:'.  Beware that many environments process
+backslashes themselves, so it may be necessary to write two
+backslashes in order to one being passed onto rrd_graph.
+
+=head2 String Formatting
+
+The text printed below the actual graph can be formatted by appending special
+escape characters at the end of a text. When ever such a character occurs,
+all pending text is pushed onto the graph according to the character
+specified.
+
+Valid markers are: B<\j> for justified, B<\l> for left aligned, B<\r> for
+right aligned, and B<\c> for centered. In the next section there is an
+example showing how to use centered formatting.
+
+Normally there are two space characters inserted between every two items
+printed into the graph. The space following a string can be suppressed by
+putting a B<\g> at the end of the string. The B<\g> also ignores any space
+inside the string if it is at the very end of the string. This can be used
+in connection with B<%s> to suppress empty unit strings.
+
+ GPRINT:a:MAX:%lf%s\g
 
-B<PART:>I<vname>B<#>I<rrggbb>[B<:>I<legend>]
+A special case is COMMENT:B<\s> which inserts some additional vertical space
+before placing the next row of legends.
 
-Draw a part of pie. Pie parts will be concatenated, the first one
-will start at the top and parts will be created clockwise.
-The size of the part is defined by the value part of
-the L<VDEF|rrdgraph_data/VDEF> function.  It should return
-a number between 0 and 100, being a percentage.
-Providing wrong input will produce undefined results.
+If you are using the proportional font in your graph, you can use tab
+characters or the sequence B<\t> to line-up legend elements. Note that
+the tabs inserted are relative to the start of the current legend
+element!
 
 =head1 SEE ALSO
 
 L<rrdgraph> gives an overview of how B<rrdtool graph> works.
-L<rrdgraph_data> describes B<DEF>,B<CDEF> and B<VDEF> in detail,
-L<rrdgraph_rpn> describes the B<RPN> language used in the B<?DEF> statements,
+L<rrdgraph_data> describes B<DEF>,B<CDEF> and B<VDEF> in detail.
+L<rrdgraph_rpn> describes the B<RPN> language used in the B<?DEF> statements.
 L<rrdgraph_graph> page describes all of the graph and print functions.
 
 Make sure to read L<rrdgraph_examples> for tipsE<amp>tricks.