[rrd-users] Problems graphing

Laura McCord mccordl at southwestern.edu
Fri Sep 26 17:05:21 CEST 2008

```I have my data loaded into an array but everytime I try to graph the
data I get a "Can't call method "png" on an undefined value...

I am using Perl and the Graph module to produce a bar graph. Here is a
sample of my data and my source code. Perhaps someone will notice what I
am doing wrong.

Thanks.

Here is some sample data:

Fri Sep 26 00:00:00 2008          0.1
Fri Sep 26 01:00:00 2008          0.0
Fri Sep 26 02:00:00 2008          0.1
Fri Sep 26 03:00:00 2008          0.1
Fri Sep 26 04:00:00 2008          0.2
Fri Sep 26 05:00:00 2008          0.1
Fri Sep 26 06:00:00 2008          0.2
Fri Sep 26 07:00:00 2008          0.1
Fri Sep 26 08:00:00 2008          0.2
Fri Sep 26 09:00:00 2008          0.2
Fri Sep 26 10:00:00 2008          0.2

Here is a snippet of code:
#Every Hour
my \$res = '60';

# Start on Sep 1st
my \$start_t = "1220227200";
my \$start_t_res = int(\$start_t/\$res)*\$res;

#End on Today's Date
my \$end_t = "(int(\$start_t/\$res)*\$res)";
my (\$start,\$step,\$names,\$data) =
RRDs::fetch("stats.rrd","AVERAGE","-r","\$res","-s",
"\$start_t_res","-e","now");

print "Start:       ", scalar localtime(\$start), " (\$start)\n";
print "Step size:   \$step seconds\n";
print "DS names:    ", join (", ", @\$names)."\n";
print "Data points: ", \$#\$data + 1, "\n";
print "Data:\n";
foreach my \$line (@\$data) {
\$start += \$step;
\$min++;
if(\$min == 60){
\$array1[\$i] = localtime(\$start);
foreach my \$val (@\$line) {
\$array2[\$i] = \$val;
}
\$i++;
\$min=0;
}
}

for(\$i=0;\$i < @array1; \$i++){
print \$array1[\$i]." ";
printf "%12.1f ", \$array2[\$i];
print "\n";
}

@actualdata = (\@array1,\@array2);

my \$graph = new GD::Graph::bars;
\$graph->set(
x_label         => 'Date/Time',
y_label         => 'Messages',
title           => 'Dropped Messages',
y_max_value     => 10,
y_tick_number   => 1,
y_label_skip    => 1,