#!/usr/bin/perl -Tw
# quickrep-graph.pl
#
# Converts output from quickrep.pl
# <http://perlmonks.org/index.pl?node_id=111464> into a PNG bar chart
+to
# show how many of your nodes have a given reputation
#
# Tom Hukins <tom@eborcom.com> (tomhukins on Perl Monks) - 20011022
#
# This program is free software; you can redistribute it and/or modify
# it under the same terms as Perl itself
use strict;
use GD::Graph::bars ();
use XML::Simple qw(XMLin);
{
# Allow the user to specify an alternative output filename on the
# command line
my $output_filename = shift || 'quickrep.png';
my($ratings, $username) = &derive_stats();
&draw_graph($ratings, $username, $output_filename);
}
sub derive_stats {
my $xml = XMLin('./quickrep.xml') or die "$!";
my $username = $xml->{INFO}{foruser};
my @ratings; # Counts the number of nodes with a given rating
while (my($id, $node) = each %{ $xml->{NODE} }) {
@ratings[ $node->{reputation} ]++;
}
my $max_reputation = scalar(@ratings) - 1;
return([ [0..$max_reputation], [@ratings] ], $username);
}
sub draw_graph {
my($ratings, $username, $output_filename) = @_;
my $graph = new GD::Graph::bars( 600, 400 );
$graph->set(
x_label => 'Reputation',
y_label => 'Number of Nodes',
title => "PerlMonks Nodes by Reputation for $username"
) or die "$!";
my $gd = $graph->plot( $ratings );
open(IMG, ">$output_filename") or die "$!";
binmode IMG;
print IMG $gd->png;
close IMG;
}
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
|
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
|
|