in reply to No-Frills Curve Sketches
YuckFrill
Example:
perl -e 'print "$_ " . sin($_ / 10) . "\n" for (1..64)' | graph.pl
#!/usr/bin/perl use strict; my ($WIDE) = @ARGV; $WIDE ||= 80; my (@list, $min, $max); my ($maxval, $maxkey); while (my $line = <STDIN>) { chomp $line; my ($key, $val) = split(' ', $line); if (defined($key) && defined($val)) { push (@list, { key => $key, val => $val}); if (!defined($min) || $val < $min) { $min = $val; } if (!defined($max) || $val > $max) { $max = $val; } if (!defined($maxkey) || length($key) > $maxkey) { $maxkey = length($key); } if (!defined($maxval) || length($val) > $maxval) { $maxval = length($val); } } } my $factor = ($max - $min) / ($WIDE - $maxkey - $maxval - 2); for my $i (@list) { printf STDOUT "%-*.*s %s $i->{val}\n", $maxkey, $maxkey, $i->{key}, '*' x (($i->{val} - $min) / $factor +); }
|
|---|