in reply to Re^2: Hide plotted data that exceeds y_max_value in graph produced by GD::Graph::Lines
in thread Hide plotted data that exceeds y_max_value in graph produced by GD::Graph::Lines

What I really need is for GD::Graph to extrapolate and not really represent where the data point should be plotted.

What do you mean by that?

  1. Do you want GD::Graph to simply omit any point outside the limits you specify?

    If so, should it connect the previous point directly to next?

  2. Or, do you want the graph drawn in full, but with any points or line sections that would go above or below the Y scale clipped?

    If so, one way to tackle this is two plot two graphs. Each with the same options, but one with null data ([[0],[0]]). You then blit (copy) that section of the full graph over the blank graph and print that.

    It's easier to demonstrate than describe:

    #! perl -slw use strict; use GD::Graph::lines; my @logConc = 1 .. 50; my @data = map{ -3 + rand( 6 ) } 1 .. 50; my @graphs = map GD::Graph::lines->new(500,300, 1), 1..2; for ( @graphs ) { $_->set( x_label => 'Logged stuff', y_label => 'Intensity', title => "Plot of stuff", line_width => 1, legend_spacing => 5, x_tick_number => 'auto', box_axis => 0, y_min_value => -2, y_max_value => 2, transparent => 0 ) or die $_->error; $_->set_legend('legend'); } ## Draw the full graph my $gd1 = $graphs[ 0 ]->plot( [ \@logConc, \@data ] ) or die $graphs[0]->error; ## Draw another with the same size and options, but null data. my $gd2 = $graphs[ 1 ]->plot([[0],[0]]); ## Copy the relevant portion of the full graph over the empty one $gd2->copy( $gd1, 0, 20, 0, 20, 500, 230 ); ## And display the latter. open PNG, '>:raw', 'junk.png'; print PNG $gd2->png(); close PNG; system 'junk.png';

    In theory, you could use just one graph by plotting an empty dataset, getting the gd object, setting the clip region and then plotting again with the real dataset. Unfortunately, the plots don't align correctly ;(


Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"I'd rather go naked than blow up my ass"
  • Comment on Re^3: Hide plotted data that exceeds y_max_value in graph produced by GD::Graph::Lines
  • Select or Download Code