azredwing has asked for the wisdom of the Perl Monks concerning the following question:

Hi all,

I stumbled up GD::Graph and it looks like the exact module I want to use to create graphs with in a script of mine. The thing is, apparently I cannot set the origin of a scatter plot to the bottom left corner of the plot. The y-axis zero point begins at the bottom left corner, but the x-axis zero point is some distance away from that corner.

So say I wanted to graph y=x: the points are (0,0), (1,1), etc. When I graph the function, it's shifted over to the right and doesn't intersect the origin of the graph. (If you're being pedantic, it intersects the origin but the origin isn't the bottom left corner of the screen.)

I went over the manpage at CPAN about a billion times, and I can't find how to move the x-axis zero point. Can anyone help me out here, or refer me to a module that can? I need to be able to do multiple plots on the same graph.

Thanks for the help!

Replies are listed 'Best First'.
Re: Using GD::Graph and setting the origin
by zentara (Cardinal) on Jul 10, 2008 at 11:16 UTC
Re: Using GD::Graph and setting the origin
by explodec14 (Novice) on Jan 07, 2010 at 12:18 UTC
    I have also this problem. I can't set the origin of x-axis to zero. this is the code:
    #!/usr/bin/perl -w use strict; use CGI; use CGI::Carp qw(fatalsToBrowser warningsToBrowser); use GD::Graph::area; use GD::Graph::colour qw(hex2rgb); print "Content-Type: image/png\n\n"; my @data = ( [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ); my @names = qw/sample21/; for my $graph (GD::Graph::area->new) { my $name = shift @names; #print STDERR "Processing $name\n"; $graph->set( title => 'An Area Graph', dclrs => ['green'], #accentclr=>'red', y_max_value => 10, x_max_value => 10, x_min_value=>0, y_min_value=>0, y_tick_number => 5, x_tick_number => 5, overwrite=>1, #ticks_length=>, #y_label_skip => 2, #x_label_skip => 0, x_tick_offset=>1, #y_plot_values=>1, #x_plot_values=>1, #correct_width=>1, #accent_treshold => 20, transparent => 1 ); #$graph->set_legend( 'one', 'two' ); my $im = $graph->plot(\@data); print $im->png; }
    Can anyone help me on this please ?
Re: Using GD::Graph and setting the origin
by Anonymous Monk on Jul 10, 2008 at 08:47 UTC
      Not loud enough for me, I fear.

      In that grep there are only three matches for "origin", the rest is for "original" and derivations.

      Those three matches refer to a module that is only used internally, and doesn't contain any POD.

      To me it's not obvious how that might help solving the OP's problem.

        Um, azredwing needs to show code, sample input data ... it might help the op if hes willing to USTL and figure out sub val_to_pixel