in reply to GD-Graph-bars3d

This works, (don't know about get_hotspot, where do you come up with that?)
#!/usr/bin/perl use strict; use warnings; use GD::Graph::bars3d; # sample data my @data = (30, 45, 36, 42, 40, 44, 41, 39, 35, 46, 43, 38); my @dt = ('2002-10-10 00:00:00', '2002-10-10 01:00:00', '2002-10-10 02 +:00:00', '2002-10-10 03:00:00', '2002-10-10 04:00:00', '2002-10-10 05:00:00', '2002-10-10 06:00:00', '2002-10-10 07:00:00', '2002-10-10 08:00:00', '2002-10-10 09:00:00', '2002-10-10 10:00:00', '2002-10-10 11:00:00'); # setup the color set my @colors; for my $datum (@data) { push(@colors, get_color($datum)); } # create the data set for the graph my @dataset = (\@dt, \@data); # create the new graph my $graph = GD::Graph::bars3d->new( 400, 300 ); # setup the graph options $graph->set( transparent => '0', bgclr => 'lgray', boxclr => 'white', fgclr => 'white', x_label => 'Date / Time', y_label => 'Number of Woozles Sold', title => 'World Wide Woozle Sales', dclrs => \@colors, cycle_clrs => 1, # this is mandatory for this to work x_labels_vertical => 1, ); # plot the graph my $gd = $graph->plot(\@dataset); # create a PNG file of the graph open(IMG, ">$0.png") or die $!; binmode IMG; print IMG $gd->png; # returns the color name based on the value given # this is only an example # you should base your numbers off of your actual data sub get_color { my $value = shift; return "dpurple" if ($value < 34); return "lpurple" if ($value < 36); return "blue" if ($value < 38); return "green" if ($value < 40); return "yellow" if ($value < 42); return "orange" if ($value < 44); return "red"; }

I'm not really a human, but I play one on earth. flash japh

Replies are listed 'Best First'.
Re^2: GD-Graph-bars3d
by ikegami (Patriarch) on Apr 03, 2006 at 17:17 UTC

    That's an image, not an imagemap. An imagemap is a list of shapes defining the mouse-clickabable areas of an image. Maybe you should have read up on get_hotspots in the GD::Graph documentation before declaring it irrelevant.

    And the OP is correct, it's not supported by bars3d. I looked at the source code. bars sets $self->{_hotspots}->[$ds]->[$i], but bars3d does not. The newest GD::Graph3d is 4 years older than the newest GD::Graph. Hotspot support probably didn't exist in GD::Graph back then, given that it's currently in beta.

      Well you know more than me.:-) I'm glad that you recognized that a subroutine, that does not exist in the module, is somehow relevant.

      I'm not really a human, but I play one on earth. flash japh
        I didn't know more than you. I researched the subject before answering. I was suggesting that you do the same.