Co-incidently I've embarked on this mission also. I want to create some graphs dynamically, overlay an image map and pump it all out to the browser without hitting the disk.

The code is extremely rough at this stage, and is an example of what not to put into production. There is much polishing to do.

#!/usr/bin/perl -w use GD::Graph::bars; use GD::Graph::Map; use CGI qw/:standard/; use Date::Calc qw/Delta_Days Date_to_Text Add_Delta_Days/; my @data = ( ["node1"], ); my @dates = ("11-3-2002","12-4-2002", "15-5-2002","31-12-2002"); my $startdate = $dates[0]; for (my $i=0;$i<$#dates;$i+=1){ my @basedate = split(/-/, $dates[$i] ); my @nextdate = split(/-/, $dates[$i+1]); my $dd = Delta_Days($basedate[2],$basedate[1],$basedate[0], $nextdate[2],$nextdate[1],$nextdate[0]); push @data, [$dd]; } my $my_graph = new GD::Graph::bars(200,500); $my_graph->set( x_label => 'Node', y_label => 'Date', title => "Technology", y_max_value => 365, y_tick_number => 10, y_label_skip => 2, y_number_format => \&y_format, cumulate => 1, borderclrs => 'black', bar_spacing => 4, bar_width => 30, values_vertical => 1, accntclr => 'lgreen', transparent => 0, ); sub y_format { my $val = shift; my @ysd = split(/-/, $startdate); my @delta = Add_Delta_Days($ysd[2],$ysd[1],$ysd[0], int($val) ); return substr(Date_to_Text(@delta), 4); } $my_graph->set_legend( qw(COM21 euroDOCSIS DOCSIS)); my $format= $my_graph->export_format; if (length (my $info = path_info())) { print header("image/$format"), $my_graph->plot(\@data)->$format(); my $map = new GD::Graph::Map($my_graph, info => '%l: x=%x y=%y' +); } print header; my $session = "graph"; my $map = new GD::Graph::Map($my_graph, info => '%l: x=%x y=%y'); print "hey this is way cool dude"; print $map->imagemap(url()."/$session.png", \@data, noImgMarkup=>1);

The generated image is a one stacked bar, with dates on the y.

Merlyn has a column that sends a dynamically created image to the browser, from which I've learnt, and adapted.


In reply to Re: Working with images by Ryszard
in thread Working with images by Anonymous Monk

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.