use GD::Graph::lines; my @data = ( ["1st","2nd","3rd","4th","5th","6th","7th", "8th", "9th"], [ 1, 2, 5, 6, 3, 1.5, 1, 3, 4], [ sort { $a <=> $b } (1, 2, 5, 6, 3, 1.5, 1, 3, 4) ] ); my $graph = GD::Graph::lines->new(400, 300); $graph->set( x_label => 'X Label', y_label => 'Y label', title => 'Some simple graph', y_max_value => 8, y_tick_number => 8, y_label_skip => 2 ) or die $graph->error; # plot it to get some of the data values we want into $graph object my $gd = $graph->plot(\@data) or die $graph->error; # you may need to look at the object if your line pos is less simple #use Data::Dumper; #print Dumper $graph; # this is the hack..... my $x_zero = $graph->{left}; # abs zero point co-ord my $x_step = $graph->{x_step}; # x step pixels my $xp = $x_zero + $x_step * 5; # the 5th data point abs x co-ord my $t = $graph->{top}; # top abs y co-ord my $b = $graph->{bottom}; # bottom abs y co-ord my $mclr = 2; # 1 = blue, 2 = grey, 3 = red ... # now draw the line in...... $graph->{graph}->line($xp, $t, $xp, $b, $mclr); open(IMG, '>C:/file.png') or die $!; binmode IMG; print IMG $gd->png; close IMG;