sliddy
sliddy

Reputation: 135

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);
}

Upvotes: 0

Views: 1331

Answers (3)

user3241388
user3241388

Reputation: 1

Could you do what you need with Graph::Easy ?

Graph::Easy - Convert or render graphs (as ASCII, HTML, SVG or via
Graphviz)

Upvotes: 0

xxfelixxx
xxfelixxx

Reputation: 6592

You could try hbar and modify it to suit your needs:

https://github.com/xxfelixxx/perl-term-colormap/blob/master/bin/hbar

  echo '
     1  one
     1  one
     2  two
     5  five
     8  eight
     13 thirteen
     21 twenty one
  ' | hbar

hbar e

Upvotes: 2

Dave Cross
Dave Cross

Reputation: 69244

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.

Upvotes: 3

Related Questions