GD::Graph: "mixed" graph doesn't recognize "area" graph type

Discussion in 'Perl Misc' started by Emilio Mayorga, Sep 30, 2003.

  1. Hi,

    I'm using the GD::Graph module to create some graphs (great module,
    BTW!). Everything works fine. But in a "mixed" graph, "area" graphs
    are not recognized. I get this error message:
    [snip] unknown type area, assuming lines at [snip]
    I am trying to create a chart with two lines and three area graphs.
    The lines work fine. Area graphs work fine when used by themselves
    (not in a mixed graph); I wrote a small program to test this.

    I am using ActiveState Perl 5.6.1 on Win2000; GD 1.27, GD::Graph 1.31.
    I've read in the documentation that support for "mixed" is fairly
    limited, but area is included in the sample "types" assignment in the
    documenation.

    The X-axis on my graph is numerical. I don't know if that makes a
    difference.

    Thanks!

    -Emilio
     
    Emilio Mayorga, Sep 30, 2003
    #1
    1. Advertising

  2. On 30 Sep 2003 11:55:49 -0700,
    Emilio Mayorga <> wrote:
    > Hi,
    >
    > I'm using the GD::Graph module to create some graphs (great module,
    > BTW!). Everything works fine. But in a "mixed" graph, "area" graphs
    > are not recognized. I get this error message:
    > [snip] unknown type area, assuming lines at [snip]
    > I am trying to create a chart with two lines and three area graphs.
    > The lines work fine. Area graphs work fine when used by themselves
    > (not in a mixed graph); I wrote a small program to test this.


    That's odd. Area charts should work. There's an example (sample61) in
    the distribution that uses lines, bars, points, area, and linespoints,
    all in one chart. Where is the code you tried?

    > I am using ActiveState Perl 5.6.1 on Win2000; GD 1.27, GD::Graph 1.31.


    You should upgrade GD::Graph. That's a rather old version. But I don't
    think that that is your problem. sample61 was already in the
    distribution back then.

    > I've read in the documentation that support for "mixed" is fairly
    > limited, but area is included in the sample "types" assignment in the
    > documenation.


    Indeed. And it should work.

    > The X-axis on my graph is numerical. I don't know if that makes a
    > difference.


    It might, since bar charts and area charts are not normally used with
    numerical X axes. I probably never tried them. However, I don't think
    you should get that message anyway. I just tried sample61 with numerical
    axes, in my development tree, and didn't get that message, but I'm a
    few versions ahead of you.

    You should probably just show the (minimal) code example that produces
    this problem.

    Martien
    --
    |
    Martien Verbruggen | The world is complex; sendmail.cf reflects
    | this.
    |
     
    Martien Verbruggen, Oct 1, 2003
    #2
    1. Advertising

  3. Martien Verbruggen <> wrote in message news:<>...
    > On 30 Sep 2003 11:55:49 -0700,
    > Emilio Mayorga <> wrote:
    > > Hi,
    > >
    > > I'm using the GD::Graph module to create some graphs (great module,
    > > BTW!). Everything works fine. But in a "mixed" graph, "area" graphs
    > > are not recognized. I get this error message:
    > > [snip] unknown type area, assuming lines at [snip]
    > > I am trying to create a chart with two lines and three area graphs.
    > > The lines work fine. Area graphs work fine when used by themselves
    > > (not in a mixed graph); I wrote a small program to test this.

    >
    > That's odd. Area charts should work. There's an example (sample61) in
    > the distribution that uses lines, bars, points, area, and linespoints,
    > all in one chart. Where is the code you tried?


    Thanks, Martin. BTW, I have your book; it's a great resource. I got
    GD::Graph from the ActiveState site, and it didn't come with samples.
    I went ahead and got sample61 from CPAN. It ran just fine with my
    current versions of GD and GD::Graph!!

    The code is somewhat complex. It connects to an Access database using
    Win32::OLE and the DAO (the precursor to ADO), and pulls data in. Then
    it goes off to create several graphs and png files from them, and HTML
    files. I use the GD::Graph::Data class and the add_point method to add
    data to the graphs. It's all a little messy and not so well documented
    right now. If you really want to see it, you can grab it here (I've
    removed strings that hold full file paths, to cover my back with my
    employer):
    http://www.co.snohomish.wa.us/publicwk/swm/maps/floodwarn2.pl
    You'll find a sample output graph here:
    http://www.co.snohomish.wa.us/publicwk/swm/maps/hydrograph_sens585.png
    The three colored dashed horizontal lines are the ones I'm trying to
    turn into area graphs. Each one of them is specified as a simple set
    of two points, the start and end of the line.

    As for the graph overall, basically, it's a time series with one
    vertical reference line, and three horizontal reference lines that I'd
    like to turn into area graphs.

    > > I am using ActiveState Perl 5.6.1 on Win2000; GD 1.27, GD::Graph 1.31.

    >
    > You should upgrade GD::Graph. That's a rather old version. But I don't
    > think that that is your problem. sample61 was already in the
    > distribution back then.


    Those are the versions that ActiveState had a year ago. Anyways, it
    does like the version may not be the problem. Like I said, sample61
    does work, and so does a test I ran using an area graph (not "mixed").
    I also tried creating a legend, and that worked as it should: the area
    graphs got area-type legends, even though the graph themselves gave
    me the error message and were created with the default type (lines).

    > > The X-axis on my graph is numerical. I don't know if that makes a
    > > difference.

    >
    > It might, since bar charts and area charts are not normally used with
    > numerical X axes. I probably never tried them. However, I don't think
    > you should get that message anyway. I just tried sample61 with numerical
    > axes, in my development tree, and didn't get that message, but I'm a
    > few versions ahead of you.
    >
    > You should probably just show the (minimal) code example that produces
    > this problem.


    I'm not sure where the problem is exactly, so I'm not sure what code
    fragments to show you. I've tried removing some of the graph options,
    but to no effect. Here are the lines that add the two points for each
    of the three graphs that I want to plot as area graphs:
    $data->add_point($tm{min}, undef, undef,
    $sensorgraph{$sensor_id}->{floodphase1},
    $sensorgraph{$sensor_id}->{floodphase2},
    $sensorgraph{$sensor_id}->{floodphase3});
    $data->add_point($tm{max}, undef, undef,
    $sensorgraph{$sensor_id}->{floodphase1},
    $sensorgraph{$sensor_id}->{floodphase2},
    $sensorgraph{$sensor_id}->{floodphase3});

    Points for the other two graphs (1st and 2nd graphs) are added in
    separate statements. This is the code that sets all graph options:
    $chart = GD::Graph::mixed->new(630,450); # 700,500

    # set graph layout properties
    $chart->set(
    r_margin => 20,
    t_margin => 10,
    b_margin => 20,
    transparent => 0,
    fgclr => 'dgray',
    labelclr => 'black',
    axislabelclr => 'black',
    line_width => 2,
    x_long_ticks => 0,
    x_tick_number => 36,
    x_label_skip => 3,
    x_min_value => $tm{min},
    x_max_value => $tm{max},
    x_number_format => \&x_format,
    y_label => 'Stage (ft)',
    y_long_ticks => 1,
    y_min_value => $sensorgraph{$sensor_id}->{lowgraph},
    y_max_value => $sensorgraph{$sensor_id}->{highgraph},
    types => [qw(lines lines area area area)],
    line_types => [1, 3, 2, 2, 2],
    dclrs => [qw(blue gray green lyellow lred)]
    );

    Note that I've tried it without the "line_types" option, but it made
    no difference.

    Thanks for your help!

    -Emilio
     
    Emilio Mayorga, Oct 1, 2003
    #3
  4. On 1 Oct 2003 14:42:42 -0700,
    Emilio Mayorga <> wrote:
    > Martien Verbruggen <> wrote in message news:<>...
    >> On 30 Sep 2003 11:55:49 -0700,
    >> Emilio Mayorga <> wrote:
    >> > Hi,
    >> >
    >> > I'm using the GD::Graph module to create some graphs (great module,
    >> > BTW!). Everything works fine. But in a "mixed" graph, "area" graphs
    >> > are not recognized. I get this error message:
    >> > [snip] unknown type area, assuming lines at [snip]
    >> > I am trying to create a chart with two lines and three area graphs.
    >> > The lines work fine. Area graphs work fine when used by themselves
    >> > (not in a mixed graph); I wrote a small program to test this.

    >>
    >> That's odd. Area charts should work. There's an example (sample61) in
    >> the distribution that uses lines, bars, points, area, and linespoints,
    >> all in one chart. Where is the code you tried?


    > http://www.co.snohomish.wa.us/publicwk/swm/maps/floodwarn2.pl
    > You'll find a sample output graph here:
    > http://www.co.snohomish.wa.us/publicwk/swm/maps/hydrograph_sens585.png
    > The three colored dashed horizontal lines are the ones I'm trying to
    > turn into area graphs. Each one of them is specified as a simple set
    > of two points, the start and end of the line.


    I've had a bit of a look at it, but I can't really see what's wrong with
    it (if anything at all). Would it be possible for you to just fill the
    $sensorgraph{$sensorid} hashes with some decent values, and then run the
    GD::Graph part separately? if you then still see problems, please email
    the result to me, because that probably means there is some bug or
    oddity that I need to have a look at.

    Thanks,
    Martien
    --
    |
    Martien Verbruggen |
    | The gene pool could use a little chlorine.
    |
     
    Martien Verbruggen, Oct 3, 2003
    #4
  5. Martien Verbruggen <> wrote in message news:<>...
    > On 1 Oct 2003 14:42:42 -0700,
    > Emilio Mayorga <> wrote:
    > > Martien Verbruggen <> wrote in message news:<>...
    > >> On 30 Sep 2003 11:55:49 -0700,
    > >> Emilio Mayorga <> wrote:
    > >> > Hi,
    > >> >
    > >> > I'm using the GD::Graph module to create some graphs (great module,
    > >> > BTW!). Everything works fine. But in a "mixed" graph, "area" graphs
    > >> > are not recognized. I get this error message:
    > >> > [snip] unknown type area, assuming lines at [snip]
    > >> > I am trying to create a chart with two lines and three area graphs.
    > >> > The lines work fine. Area graphs work fine when used by themselves
    > >> > (not in a mixed graph); I wrote a small program to test this.
    > >>
    > >> That's odd. Area charts should work. There's an example (sample61) in
    > >> the distribution that uses lines, bars, points, area, and linespoints,
    > >> all in one chart. Where is the code you tried?

    >
    > > http://www.co.snohomish.wa.us/publicwk/swm/maps/floodwarn2.pl
    > > You'll find a sample output graph here:
    > > http://www.co.snohomish.wa.us/publicwk/swm/maps/hydrograph_sens585.png
    > > The three colored dashed horizontal lines are the ones I'm trying to
    > > turn into area graphs. Each one of them is specified as a simple set
    > > of two points, the start and end of the line.

    >
    > I've had a bit of a look at it, but I can't really see what's wrong with
    > it (if anything at all). Would it be possible for you to just fill the
    > $sensorgraph{$sensorid} hashes with some decent values, and then run the
    > GD::Graph part separately? if you then still see problems, please email
    > the result to me, because that probably means there is some bug or
    > oddity that I need to have a look at.


    Thanks for looking into it. I'll try to do that test, but a deadline
    is creeping up on me, so it may be a while. I'll definitely try to
    follow up if the problem persists. I expect to make heavy use of
    GD::Graph for several projects in the future.

    Best,

    Emilio
     
    Emilio Mayorga, Oct 7, 2003
    #5
  6. (Emilio Mayorga) wrote in message news:<>...


    > > I've had a bit of a look at it, but I can't really see what's wrong with
    > > it (if anything at all). Would it be possible for you to just fill the
    > > $sensorgraph{$sensorid} hashes with some decent values, and then run the
    > > GD::Graph part separately? if you then still see problems, please email
    > > the result to me, because that probably means there is some bug or
    > > oddity that I need to have a look at.

    >
    > Thanks for looking into it. I'll try to do that test, but a deadline
    > is creeping up on me, so it may be a while. I'll definitely try to
    > follow up if the problem persists. I expect to make heavy use of
    > GD::Graph for several projects in the future.


    I've found the problem. The error message comes up when there are
    undef values in the area graph. I was able to reproduce it in
    sample61.pl by just setting one of the area graph values to undef.

    I suppose there is logic to why an area graph would not work when
    there is an undef, but the error message is misleading.

    I rearranged how my graphs are created so that the area graphs would
    have no undef's. That eliminated the error messages, but it also
    eliminated the graphs intended to be area graphs! They don't show up.
    I haven't figured out what's going on.

    On a more general note, it seems restrictive to have to associate all
    graphs with exactly the same set of x-values, especially for a numeric
    x-axis (continuous values). *BUT*, I really appreciate the work you've
    done in putting together this module.

    Thanks.

    -Emilio
     
    Emilio Mayorga, Oct 7, 2003
    #6
  7. On 7 Oct 2003 10:50:51 -0700,
    Emilio Mayorga <> wrote:
    > (Emilio Mayorga) wrote in message news:<>...
    >
    >
    >> > I've had a bit of a look at it, but I can't really see what's wrong with
    >> > it (if anything at all). Would it be possible for you to just fill the
    >> > $sensorgraph{$sensorid} hashes with some decent values, and then run the
    >> > GD::Graph part separately? if you then still see problems, please email
    >> > the result to me, because that probably means there is some bug or
    >> > oddity that I need to have a look at.

    >>
    >> Thanks for looking into it. I'll try to do that test, but a deadline
    >> is creeping up on me, so it may be a while. I'll definitely try to
    >> follow up if the problem persists. I expect to make heavy use of
    >> GD::Graph for several projects in the future.

    >
    > I've found the problem. The error message comes up when there are
    > undef values in the area graph. I was able to reproduce it in
    > sample61.pl by just setting one of the area graph values to undef.


    Thanks for that. I'll look into that to see why I decided to make it
    behave in that way.

    > I suppose there is logic to why an area graph would not work when
    > there is an undef, but the error message is misleading.


    There is probably a reason, yes, but I agree that the error message
    needs some work.

    > On a more general note, it seems restrictive to have to associate all
    > graphs with exactly the same set of x-values, especially for a numeric
    > x-axis (continuous values).


    I agree. Fixing that is non-trivial however, and has been on my todo
    list for quite a while. GD::Graph started its life intended for
    something much simpler than what it has evolved into and bad design
    decisions were made early on.

    Martien
    --
    |
    Martien Verbruggen | Freudian slip: when you say one thing but
    Trading Post Australia | mean your mother.
    |
     
    Martien Verbruggen, Oct 8, 2003
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Mark
    Replies:
    1
    Views:
    611
    Larry Barowski
    Jun 27, 2005
  2. Chishun Kwong
    Replies:
    0
    Views:
    419
    Chishun Kwong
    Mar 3, 2005
  3. hotadvice
    Replies:
    14
    Views:
    711
    hotadvice
    Oct 2, 2007
  4. Andy B.
    Replies:
    0
    Views:
    813
    Andy B.
    Apr 30, 2010
  5. el bilo
    Replies:
    2
    Views:
    115
    Larry
    Sep 28, 2003
Loading...

Share This Page