Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re: hbar or bar chart for my top 20 mail users with GD::Graph::hbars or GD::Graph::bars

by hippo (Bishop)
on Aug 07, 2018 at 11:29 UTC ( [id://1219984]=note: print w/replies, xml ) Need Help??


in reply to hbar or bar chart for my top 20 mail users with GD::Graph::hbars or GD::Graph::bars

my @word = map{ $count{$_} || 0 } qw($word); #I think This is where I + have gone wring my @count_word = map{ $count{$_} || 0 } qw($count{$word}); # I think T +his is where I have gone wring

Yes, those lines don't make a great deal of sense. Perhaps you want something more like this?

my @word = keys %count; my @count_word = map{ $count{$_} || 0 } @word;
  • Comment on Re: hbar or bar chart for my top 20 mail users with GD::Graph::hbars or GD::Graph::bars
  • Select or Download Code

Replies are listed 'Best First'.
Re^2: hbar or bar chart for my top 20 mail users with GD::Graph::hbars or GD::Graph::bars
by theravadamonk (Scribe) on Aug 08, 2018 at 09:17 UTC

    > Yes, those lines don't make a great deal of sense. Perhaps you want something more like this?

    my @word = keys %count; my @count_word = map{ $count{$_} || 0 } @word;

    Brilliant, Sir , Thanks a LOT. The above code works as expected. I Now need top 5 ( highest 5 ). So I changed the code in this way.. It works. It NOW shows top 5 as expected.

    my @word = ( (sort { $count{$b} <=> $count{$a} } keys %count) [0..4] ) +; my @count_word = map{ $count{$_} || 0 } @word;

    I have included below lines as well. I think I don't need below lines at all. I hv commented out them now

    Your IDEAS??

    #for my $word ( (sort { $count{$b} <=> $count{$a} } keys %count) [0.. +4] ) { # #print "$word $count{$word}\n"; #}

    The other thing I want to mention is that my ultimate goal is to have a STACK bar chart since I have another file /tmp/recipients.txt. This file is different from /tmp/senders.txt file.

    So, I think I can't achieve a STACK bar chart since I can't have a bar group like first highest sender and first highest recipient , 2 nd highest , 3 rd , 4th and 5 th highest sender and 5 th highest recipient

    I will have to pay attention to below lines

    my $data = GD::Graph::Data->new([ [@word], [@count_word], ]) or die GD::Graph::Data->error;

    If I can have a data structure in this way, I will be able to.

    my $data = GD::Graph::Data->new([ [@word], [@count_word], [@count_word_recip], ]) or die GD::Graph::Data->error;

    @word only contain senders, I can get @word_recip from /tmp/recipients.txt file with below code. I can include it to the same file

    my $logfile_recip = '/tmp/recipients.txt'; open my $fh, '<', $logfile_recip or die "Could not open $logfile_recip + : $!"; my %count_recip=(); while (my $line = <$fh>) { foreach my $word (split /\s+/, $line) { ++$count_recip{$word}; #print "$word\n"; #print "$count_recip{$word}\n"; #print "<br />"; #print " \n"; } } #for my $word ( (sort { $count_recip{$b} <=> $count_recip{$a} } keys +%count_recip) [0..4] ) { # #print "$word $count_recip{$word}\n"; #} close $fh; my @word_recip = ( (sort { $count_recip{$b} <=> $count_recip{$a} } key +s %count_recip) [0..4] ); my @count_word_recip = map{ $count_recip{$_} || 0 } @word_recip; #my $data = GD::Graph::Data->new([ # [@word_recip], # [@count_word_recip], #]) or die GD::Graph::Data->error;

    Hmm, Then, How can I have a BAR Group like first highest sender and first highest recipient , 2 nd highest , 3 rd , 4th and 5 th highest sender and 5 th highest recipient ?

    This may NOT work...
    my $data = GD::Graph::Data->new([ [@word @word_recip], [@count_word], [@count_word_recip], ]) or die GD::Graph::Data->error;

    Perl Monks are experts. Can I achieve a stack bar chart? I think I can't get a data structure for a stack bar chart in this way. anyway If I can't have it, I can go with 2 separate charts. Hope to hear from everyone

      I have included below lines as well. I think I don't need below lines at all. I hv commented out them now

      Yes, all the loop does is print. Since you have commented out the print line the loop becomes a no-op and may as well be removed entirely.

      my ultimate goal is to have a STACK bar chart since I have another file /tmp/recipients.txt.

      I'm not sure why you would want to stack unrelated senders and recipients. Regardless, I'll let someone who actually uses GD::Graph guide you on that one. Good luck.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others studying the Monastery: (5)
As of 2024-04-25 16:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found