How do I use Perl to create graphs?
I\'m running scheduled job that creates text reports. I\'d like to move this to the next step (for the management) and also crea
Spreadsheet::WriteExcel::Chart
You might need something like strawberry or vanilla Perl to get this to compile. Or PPM might have the module.
Tutorial link: http://search.cpan.org/dist/Spreadsheet-WriteExcel/charts/charts.pod
PGPlot does great graphs. There are some examples here. It works fine with Perl 5.8.8 but is broken in 5.10.0
Haven't tried it yet but Chart::Clicker looks quite nifty.
I think it uses the Cairo graphic library (alternative to GD) but is actually built on top of Graphics::Primitive which is an "interesting" graphics agnostic package.
The author in question (GPHAT) seems to be putting together some integrated tools for producing reports... http://www.onemogin.com/blog/582-pixels-and-painting-my-recent-cpan-releases
On a side note... have used both ChartDirector and OFC and both are good (especially if web based).
At work we have used the excellent Chartdirector.
It's not free, but is very cheap (maybe 50 bucks or so). The cost is well worth it, as the API and docs are both excellent (way better than GD!), so easily saved more than that amount of my time.
There's also a free version, which includes a small yellow banner advertising the product on each chart - to be honest if this is for personal use, you can go for that as it's really not very intrusive at all.
Chartdirector is available for lots of platforms (Win, Linux, Solaris, BSD, OSX) and has an API for lots of languages, too (Perl, ASP, .NET, Java, PHP, Python, Ruby, C++).
The output is easy on the eye, as you can see at their examples page.
GD and GD::Graph are probably your best bets, you can use them to create images that you can then embed into whatever you need.
Also you can take a look at Google Charts CPAN module
use Google::Chart;
my $chart = Google::Chart->new(
type => "Bar",
data => [ 1, 2, 3, 4, 5 ]
);
print $chart->as_uri, "\n"; # or simply print $chart, "\n"
$chart->render_to_file( filename => 'filename.png' );