DBD::Chart 3D bargraphs with temporal datatype as X

DBD::Chart 3D bargraphs with temporal datatype as X

am 13.06.2007 17:15:04 von frederic.soriano

Hi list,

I tried to produce a 3D barchart with DBD::Chart thanks to this code
sample (source: Perl for Oracle DBAs, ORA):

--snip--
use DBI;
use strict;
my $dbh= DBI->connect('dbi:Chart:', undef, undef, { PrintError => 1,
RaiseError => 1 });

$dbh->do('CREATE TABLE spiritaxis (
Month char(3),
Visitors integer,
Monument varchar(11))');

my @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my @monuments = qw(Stonehenge Avebury SilburyHill Glastonbury
WhiteHorse);

my $sth = $dbh->prepare('INSERT INTO spiritaxis VALUES(?, ?, ?)');

foreach my $month (@months) {
foreach my $visitors (@monuments) {
$sth->execute($month, 1 * int(rand(2000)), $visitors);
}
}

$sth = $dbh->prepare(
"SELECT BARCHART, IMAGEMAP
FROM spiritaxis
WHERE WIDTH=1000 AND HEIGHT=600 AND
TITLE = 'Visitors Per Saturday' AND
SIGNATURE = 'Copyright(C) 2002, Andy Duncan' AND
X-AXIS = 'Month' AND
Y-AXIS = 'Visitors' AND
Z-AXIS = 'Monument' AND
COLORS=(white) AND
SHOWGRID = 1"
);
$sth->execute;
my $row = $sth->fetchrow_arrayref;

open(BAR, '>/tmp/spiritaxis.png');
binmode BAR;
print BAR $$row[0];
close BAR;

$dbh->do('DROP TABLE spiritaxis');
--snip--

This works like a charm, producing a neat 3D barchart.

Now, if I am replacing the string values composing X-axis with date
datatypes, as in this example:

--snip--
use DBI;
use strict;
my $dbh= DBI->connect('dbi:Chart:', undef, undef, { PrintError => 1,
RaiseError => 1 });

$dbh->do('CREATE TABLE spiritaxis (
Dates date,
Visitors integer,
Monument varchar(11))');

my @dates = qw(2007-01-01 2007-02-01 2007-03-01 2007-04-01 2007-05-01
2007-06-01 2007-07-01 2007-08-01 2007-09-01 2007-10-01 2007-11-01
2007-12-01);
my @months = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
my @monuments = qw(Stonehenge Avebury SilburyHill Glastonbury
WhiteHorse);

my $sth = $dbh->prepare('INSERT INTO spiritaxis VALUES(?, ?, ?)');

foreach my $date (@dates) {
foreach my $visitors (@monuments) {
$sth->execute($date, 1 * int(rand(2000)), $visitors);
}
}

$sth = $dbh->prepare(
"SELECT BARCHART, IMAGEMAP
FROM spiritaxis
WHERE WIDTH=1000 AND HEIGHT=600 AND
TITLE = 'Visitors Per Saturday' AND
SIGNATURE = 'Copyright(C) 2002, Andy Duncan' AND
X-AXIS = 'Dates' AND
Y-AXIS = 'Visitors' AND
Z-AXIS = 'Monument' AND
COLORS=(white) AND
SHOWGRID = 1"
);
$sth->execute;
my $row = $sth->fetchrow_arrayref;

open(BAR, '>/tmp/spiritaxis.png');
binmode BAR;
print BAR $$row[0];
close BAR;

$dbh->do('DROP TABLE spiritaxis');

--snip--

Now the graph is produced BUT all bars are not represented correctly
(everything is collapsed on a single graphical area, with all domain
values overlapped). I have a correct behavior if I change datatypes
from date to e.g. varchar(20), but they're no more dates...

Thanks for help & congrats for this great module!
Fred.

Re: DBD::Chart 3D bargraphs with temporal datatype as X

am 13.06.2007 21:01:57 von darnold

frederic.soriano@gmail.com wrote:
> Hi list,
>
> I tried to produce a 3D barchart with DBD::Chart thanks to this code
> sample (source: Perl for Oracle DBAs, ORA):
>

Could you send me (not the list) copies of the images ?

I can't promise much, as I'm on my way out the door for a long
vacation, but I'll be dragging the laptop along and will
review when I get a chance.

Regards,
Dean Arnold
Presicient Corp.