in reply to Re: hbar or bar chart for my top 20 mail users with GD::Graph::hbars or GD::Graph::bars
in thread hbar or bar chart for my top 20 mail users with GD::Graph::hbars or GD::Graph::bars
> 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
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: hbar or bar chart for my top 20 mail users with GD::Graph::hbars or GD::Graph::bars
by hippo (Archbishop) on Aug 08, 2018 at 09:52 UTC |