My advice is to break down the problem into small junks which you can understand. First, see if you can create a GD graph manually with your data, then if successful,
see if your object output is suitable for input to GD::graph.
GD graph has some nested arrays it uses for input, for example, see how the data
is arranged in the following example. Make sure your input is like that.
my @data = ( [qw(a b c d e f g)], [1,2,3,4,5,6,7] );
my $graph = GD::Graph::bars->new(200, 200);
transparent => '0',
bgclr => 'lgray',
boxclr => 'white',
fgclr => 'white',
cycle_clrs => '1',
x_label => 'X Label',
y_label => 'Y label',
my $gd = $graph->plot(\@data);
#print "Content-type: image/png\n\n";