#!/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;
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|