The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Tk::Graph - A graphical Chartmaker at Canvas (Realtime).

SYNOPSIS

   use Tk;
   use Tk::Graph; 
   
   $mw = MainWindow->new;
   
   my $data = {
        Sleep   => 51, 
        Work    => 135, 
        Access  => 124, 
        mySQL   => 5
   };
   
   my $ca = $mw->Graph(
                -type  => 'BARS',
        )->pack(
                -expand => 1,
                -fill => 'both',
        );
   
   $ca->configure(-variable => $data);     # bind to data
   
   # or ...
   
   $ca->set($data);        # set data 
   
   MainLoop;

DESCRIPTION

A graphical Chartmaker at Canvas (Realtime). This is a real Canvas widget, so you can draw with the standard routines in the Canvas object. For example, you can draw a line with $chart->line(x,y,...). This is useful for you when you will add a logo or write some text in your created Chart.

WIDGET-SPECIFIC OPTIONS

-debug [0|1]

This is the switch for debug output at the normal console (STDOUT)

-type (Automatic, Line, Bars, HBars, Circle)

This is the type of Graph to display the data.

Automatic - analyze the datahash and choose a Chart:

 Hash with values -> PieChart 
 Hash with keys with hashes or values (not all) -> Barchart per Key 
 Hash with keys with arrays -> Linechart per Key 
 Array -> Linechart 

Line - Linechart,

Bars - Barchart with vertical Bars,

HBars - Barchart with horizontal bars,

Circle - PieChart

-foreground (black)

Color for the Axis, Legend and Labels.

-title -titlecolor (brown)

Message at the top of the Widget.

-headroom (20)

The headroom in percent. This is a clean area at the top of the widget. When a value is in this area, the graph is redrawn to preserve this headroom.

-max

Maximum Value for the axis. If this set, the axis is not dynamically redrawn to the next maximum value from the data. Only used in Lines and Bars!

-sortnames ('alpha' | 'num') -sortreverse (0, 1)

sort the keys from the data hash.

-config (\%cfghash)

A config hash with optional added parameters for more flexibility. The first is the name of the key from your data hash, followed by a config hash with parameters. example:

        -config         => {
                'fr' => {
                        -title => 'Free',
                        -color => 'green',
                },
                'sl' => {
                        -title => 'Sleep',
                        -color => 'yellow',
                },
                ...
        },

-title

Here you can write another Name to display.

-color

Key name displayed in this color.

-fill ('both')

The same as in perl/tk pack. Redraw only in x,y or both direction(s).

-xlabel -ylabel (text)

This displays a description for x and y axis.

-xtick -ytick (5)

Number of ticks at the x or y axis.

-xformat ('%s') -yformat ('%g')

This if the sprintf format for display of the value or key for the axis. example:

        -xformat => '%d%%'      # This will eg. Display '50%'
        -yformat => '%s host'   # This will eg. Display 'first host'

-padding ([15,20,20,50])

Margin display from the Widget border, in this order top, right, bottom, left.

-linewidth (1)

The weight of the border for the dots, circle and lines.

-printvalue

This is the sprintf format and switch for display of the value.

-maxmin

Draw max/average/min value lines in Bars and Line charts

-legend [0|1]

Switch on/off the legend in Circle or Lines

-colors (red, green, ...)

A comma-separated list with the allowed colors.

-shadow ('gray50') -shadowdepth (0)

You can add a shadow to all Charts, the switch is -shadowdepth. This is also the depth in Pixels for the shadow. -shadow is the color for the shadow.

-wire ('white')

Switch on/off a wire grid in background from line and bars chart.

-reference ('name', 'value')

This give a Reference value for the keys in datahash. I.e. the data values are displayed relative to this reference value.

example:

        -reference      => 'Free, 1024',        # Free space at host

-look ('count')

The number of values to display in a line chart. When you refresh the data hash (maybe with the methods set or variable), then this will display eg. the last 50 values.

example:

        -look   => 50,  # 50 values to display pro key

-dots ('width')

The width and switch for the dots in line chart.

-barwidth (30)

The width for bars in bar charts.

-balloon (0|1)

Switch on/off ballon help for segements or lines. The text format is used from the -printvalue option.

-font ('-*-Helvetica-Medium-R-Normal--*-100-*-*-*-*-*-*')

Draw text in this font.

-lineheight (15)

The line height in pixels for text in the legend.

METHODS

Here come the methods that you can use with this Widget.

$chart->set($data);

Set the data hash to display.

$chart->variable($data);

Bind the data hash to display the data, write to $data will redraw the widget.

$chart->redraw();

Redraw chart

$chart->redraw();

Clear the canvas.

EXAMPLES

Please see for examples in 'demos' directory in this distribution.

AUTHOR

Frank Herrmann xpix@netzwert.ag http://www.netzwert.ag

SEE ALSO

Tk, Tk::Trace, Tk::Canvas,