Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

Re: How to add two array data into one GD plot?

by BrowserUk (Patriarch)
on Jul 29, 2012 at 04:08 UTC ( [id://984261]=note: print w/replies, xml ) Need Help??


in reply to How to add two array data into one GD plot?

As the labels remain the same for the two datasets, just add the second (and subsequent) set(s) of values to the first array:

#! perl -slw use strict; use GD::Graph::bars; my @d1 = ( [ "2010/03/29 14:00:00", "2010/03/29 14:00:00" ], [ 13, 15 ], [ 20, 21 ], [ 4, 9 ], ); my $graph = GD::Graph::bars->new(1000, 800); open PNG, '>:raw', "$0.png" or die $!; print PNG $graph->plot( \@d1 )->png; close PNG; system "$0.png";

Produces:this graph.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
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.

The start of some sanity?

Replies are listed 'Best First'.
Re^2: How to add two array data into one GD plot?
by heinz_zh (Initiate) on Jul 29, 2012 at 11:00 UTC

    Hi BrowersUk,

    Actually, I have made a mistake, could you help me again, I mean date might be different. As I would like gather these two data plots into one bars.

    @data1 = ( ["2010/03/29 14:00:00","2010/03/29 14:00:00"], [13,15] ); @data2 = ( ["2010/04/29 14:00:00","2010/04/29 14:00:00"], [20,21] );

      Hm. You could just combine the two datasets into a single dataset. But that doesn't produce a very inspiring graph:

      #! perl -slw use strict; use GD::Graph::bars; my @d1 = ( [ "2010/03/29 14:00:00", "2010/03/29 14:00:00", "2010/04/29 14:00: +00", "2010/04/29 14:00:00" ], [ 13, 15, 20, 21 ], ); my $g1 = GD::Graph::bars->new( 1000, 800 ); my $img1 = $g1->plot( \@d1 ); open PNG, '>:raw', "$0.png" or die $!; print PNG $img1->png; close PNG; system "$0.png";

      or maybe you need to retain two datasets and just combine the labels, to give this:

      #! perl -slw use strict; use GD::Graph::bars; my @d1 = ( [ "2010/03/29 14:00:00", "2010/04/29 14:00:00" ], [ 13, 15 ], [ 20, 21 ], ); my $g1 = GD::Graph::bars->new( 1000, 800 ); my $img1 = $g1->plot( \@d1 ); open PNG, '>:raw', "$0.png" or die $!; print PNG $img1->png; close PNG; system "$0.png";

      .

      Or maybe I've combined the values the wrong way and what you want is this

      #! perl -slw use strict; use GD::Graph::bars; my @d1 = ( [ "2010/03/29 14:00:00", "2010/04/29 14:00:00" ], [ 13, 20 ], [ 15, 21 ], ); my $g1 = GD::Graph::bars->new( 1000, 800 ); my $img1 = $g1->plot( \@d1 ); open PNG, '>:raw', "$0.png" or die $!; print PNG $img1->png; close PNG; system "$0.png";

      And maybe you want a gap between the two this

      #! perl -slw use strict; use GD::Graph::bars; my @d1 = ( [ "2010/03/29 14:00:00", undef, "2010/04/29 14:00:00" ], [ 13, undef, 20 ], [ 15, undef, 21 ], ); my $g1 = GD::Graph::bars->new( 1000, 800 ); my $img1 = $g1->plot( \@d1 ); open PNG, '>:raw', "$0.png" or die $!; print PNG $img1->png; close PNG; system "$0.png";

      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      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.

      The start of some sanity?

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://984261]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (4)
As of 2024-04-25 15:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found