質問: 現在、RubyからDBのデータを元に人物の相関図を作りたいと考えているのですが、良いツールが見つからなくて困っています。 この相関図に求める機能としては、「絵+名前で要素を表現したい」「人物の数が100以上なので、全体的に見た時に横長ではなく正方形で表示したい」「要素を結ぶ線をある程度カスタマイズできるといい」です。 私が調べた限りでは、これらの要素を満たすものとしてはblockdiagです。ただ問題点としてはこのツールは相関図を書くプログラムではないため、うまく正方形にするには、要素数を計算して上手くグループして縦、横に並べるプログラムを書く必要性がありそうな点です。 そこで質問なのですが、相関図をプログラムからないしはCUIから書けるツールをごぞんではないでしょうか?ご回答宜しくお願いいたします。
回答: この手の図は(graphvizなどが採用している)dot言語で書くのが定番だと思います。Rubyで書いたDSLからdotに変換するツールもいくつかあるようなので、試してみてはいかがでしょうか。 dot言語自体は、 * ノードやエッジの形状はカスタマイズ可能。 * 画像の出力はノードにimageを指定することで可能。 * 正方形への出力は、size で出力サイズ(インチ)を1つ(縦と横に共用する=正方形)指定の上、 ratio に fill を指定すれば、指定サイズいっぱいにひろがるようノード間隔を調整する機能があるようです。 とりあえずsize指定に加えて `ratio = fill` がない場合とある場合の比較をしてみましたが、もともとある程度正方形に近かったので、若干引き伸ばされた程度の差しか出ず、分かりにくいかもしれません。 !ratioなし !ratioあり