sliddy sliddy - 6 months ago 21
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?

Updated

use strict;
use GD::Graph::bars;
use GD::Graph::hbars;
use GD::Graph::Data;
require 'save.pl';

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";

$my_graph->set(
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

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.