Networkをマインドマップ風に表示してみる
http://del.icio.us/help/json/networkからJSONを引っ張ってきて,JSON::SyckとGraphVizでマインドマップ風にして画像化。
#!/usr/bin/perl use strict; use warnings; use LWP::Simple; use JSON::Syck; use GraphViz; my $root_user = 'higeorange'; my $limit = 2; my $s = 1; my $data = &get_json($root_user); my $graph = GraphViz->new(layout => 'fdp'); &add_node($root_user, $data, $s); print $graph->as_png("network.png"); sub add_node{ my ($ru, $data, $n) = @_; $graph->add_node($ru); for my $u (@$data) { $graph->add_node($u); $graph->add_edge($ru => $u); if ($n < $limit) { my $u_data = &get_json($u); &add_node($u, $u_data, $n+1); } } } sub get_json { my $user = shift; my $json = get('http://del.icio.us/feeds/json/network/'.$user); return JSON::Syck::Load($json); }
"$root_user"でだれから始めるか,
"$limit" でどこまで遡るかを指定。上のコードの "2" だと,ネットワークのネットワークまで。
人数が多すぎて大きな画像ファイルになったり,線が多すぎてかさなったりで,見れたもんじゃ無い…。
GraphVizでこんなのが描けるよ的なもの。