古い記事
ランダムジャンプ
新しい記事
コマンドラインで簡単に棒グラフを表示するやつ。
TSVを入力として、指定のカラムの数値を棒グラフ化。
棒はTSVの最後に追加して出力。
よくワンライナーでやってるんだけど、スクリプト版もあった(発掘した)ので公開。
Perl です。

入力データ(2009.tsv): 空白のところはタブです。
2009-01	439	69305
2009-02	336	45463
2009-03	373	45845
2009-04	430	46441
2009-05	306	49709
2009-06	407	66057
2009-07	551	88944
2009-08	402	60289
2009-09	442	52836
2009-10	505	59128
2009-11	557	71414
2009-12	525	81157

実行例:第3カラム(5桁の数値の列)を指定(-k 3)、長さはマックス30文字(-w 30)、使う文字はピリオド(-c .)。
$ ./tsv2bargraph.pl -k 3 -c . -w 30 2009.tsv
2009-01	439	69305	.......................
2009-02	336	45463	...............
2009-03	373	45845	...............
2009-04	430	46441	...............
2009-05	306	49709	................
2009-06	407	66057	......................
2009-07	551	88944	..............................
2009-08	402	60289	....................
2009-09	442	52836	.................
2009-10	505	59128	...................
2009-11	557	71414	........................
2009-12	525	81157	...........................
ちょっと見やすく:
$ ./tsv2bargraph.pl -k 3 -c x -w 50 2009.tsv | cut -f1,4
2009-01	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-02	xxxxxxxxxxxxxxxxxxxxxxxxx
2009-03	xxxxxxxxxxxxxxxxxxxxxxxxx
2009-04	xxxxxxxxxxxxxxxxxxxxxxxxxx
2009-05	xxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-06	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-07	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-08	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-09	xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-10	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-11	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2009-12	xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

コード(tsv2bargraph.pl):
#!/usr/bin/env perl
use strict;
use warnings;
use List::Util qw(max);
use Getopt::Long;
my $key = 1;
my $width = 50;
my $ch = "|";
GetOptions(
    "key=s" => \$key,
    "width=s" => \$width,
    "char=s" => \$ch,
    );
$key-- if $key;
my @lines = map {chomp; [split(/\t/, $_)]} <>;
my $max = max(map {$_->[$key]} @lines);
foreach my $lr (@lines) {
    my $len = int($lr->[$key] / $max * $width);
    print join("\t", @$lr, ($ch x $len))."\n";
}

関連記事