#!/usr/bin/env perl use Modern::Perl; use DateTime; use GD::Graph::points; my @x_vals = ( '2012-11-07', '2012-11-08', '2012-11-15', '2012-11-19', '2012-11-30', ); my @y_vals = ( 11, 12, 13, 14, 15, ); # ------------------------------------------- my @epoch_x_vals = (); for my $d (@x_vals) { my ($y, $m, $d) = split /-/, $d; push @epoch_x_vals, DateTime->new(year => $y, month => $m, day => $d) ->epoch; } my @data = (\@epoch_x_vals, \@y_vals); sub x_number_formatter { my ($e) = @_; my $dt = DateTime->from_epoch(epoch => $e); return $dt->ymd; } my $graph = GD::Graph::points->new(400, 300); $graph->set( x_label => 'X label', x_labels_vertical => 1, x_tick_number => 10, # experimented with this value a bit x_number_format => \&x_number_formatter, y_label => 'Y label', title => 'some title', ) or die $graph->error; my $gd = $graph->plot(\@data) or die $graph->error; open(my $img, '> plot.png') or die $!; binmode $img; print $img $gd->png;