Text-Histogram
Text::Histogram creates graphical charts for terminal displays or any other display device where bitmap graphics is not available!
You can supply the Y axel legend (vertical) values or Text::Histogram can calculate them from the input values.
require Text::Histogram;
my $chart = Text::Histogram->new();
@values = (1, 2, 3, 4, 5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -4, -3, -2, -1, 0);
@legend_values = (4, 3, 2, 1, 0, -1, -2, -3, -4);
$chart->{'values'} = \@values;
$chart->{'legend_values'} = \@legend_values;
$chart->{'screen_height'} = 9; # (height reserved for the graph.)
$chart->{'roof_value'} = 0; # (active if != 0), # Arbitrarily squeeze or extend the size (height) of bars (not screen)
$chart->{'floor_value'} = 0; # (the "floor" of the chart, default: 0)
$chart->{'write_floor'} = 1; # (make floor visible)
$chart->{'use_floor'} = 1; # (use the floor value)
$chart->{'write_floor_value'} = 1; # If value == floor_value, then write value (mostly "0").
$chart->{'write_legend'} = 1; # (Prepend legend to each row.)
$chart->{'legend_horizontal_width'} = 4; # width of the space left for legend (left edge of chart)
$chart->{'horizontal_width'} = 2; # Horizontal width of one bar. This parameter directly influences the width of the screen (i.e. chart).
$chart->{'write_value'} = 1; # (YES = 1, NO = 0, default: no; write the value on the end of the bar),
$chart->{'write_always_over_value'} = 0; # (YES = 1, NO = 0, default: yes; write the value only if it is too high for the graph),
$chart->{'write_always_under_value'} = 0; # (YES = 1, NO = 0, default: yes; write the value only if it is too low for the graph),
$chart->{'bar_char'} = '|'; # (default: '|')
$chart->{'floor_char'} = '-'; # (default '-' )
$chart->{'over_value_char'} = '+'; # (default: '+')
$chart->{'under_value_char'} = '_'; # (default: '-' )
$rval = $chart->chart();
if($rval >= 1) {
my @ready_chart = @{$chart->{'screen'}};
print (join '\n', @ready_chart) . "\n";
} else {
print "Error in creating chart: " . $chart->error_string . "\n";
}
# Result:
# 4 4 5 4
# 3 3 | | | 3
# 2 2 | | | | | 2
# 1 1 | | | | | | | 1
# 0 ------------------0 ------------------0
# -1 -1| | | | | | | -1
# -2 -2| | | | | -2
# -3 -3| | | -3
# -4 -4-5-4
INSTALLATION
To install this module, run the following commands:
perl Makefile.PL
make
make test
make install
SUPPORT AND DOCUMENTATION
After installing, you can find documentation for this module with the
perldoc command.
perldoc Text::Histogram
You can also look for information at:
RT, CPAN's request tracker (report bugs here)
AnnoCPAN, Annotated CPAN documentation
CPAN Ratings
Search CPAN
LICENSE AND COPYRIGHT
Copyright (C) 2012 Mikko Koivunalho
This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.