sliddy sliddy - 1 year ago 119
Perl Question

Print graph into terminal. Perl

I just found the GD::Graph module, but it prints graph into file.

I want to create a kind of a monitor which prints on to terminal.

For example how could i print a graph (not exactly, but similar so it fits to terminal) like this onto a terminal?


use strict;
use GD::Graph::bars;
use GD::Graph::hbars;
use GD::Graph::Data;
require '';

my $data = GD::Graph::Data->new([
["1st","2nd","3rd","4th","5th","6th","7th", "8th", "9th"],
[ 1, 2, 5, 6, 3, 1.5, 1, 3, 4],
]) or die GD::Graph::Data->error;

my @names = qw/sample11 sample11-h/;

for my $my_graph (GD::Graph::bars->new, GD::Graph::hbars->new)
my $name = shift @names;

print STDERR "Processing $name\n";

x_label => 'X Label',
y_label => 'Y label',
title => 'A Simple Bar Chart',
#y_max_value => 8,
#y_tick_number => 8,
#y_label_skip => 2,

#x_labels_vertical => 1,

# shadows
bar_spacing => 8,
shadow_depth => 4,
shadowclr => 'dred',

transparent => 0,
or warn $my_graph->error;

$my_graph->plot($data) or die $my_graph->error;
save_chart($my_graph, $name);

Answer Source

Well, it's simple enough to print the graph to STDOUT. Instead of calling save_chart(), you'd just do something like:

print $my_graph->png;

But it's very unlikely that your monitor can understand raw PNG data being thrown at it. You'll want to write the plot to an image file and display the file in some way.

But it's hard to be more helpful without knowing more about what you're trying to do.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download