49472


現在、RubyからDBのデータを元に人物の相関図を作りたいと考えているのですが、良いツールが見つからなくて困っています。

この相関図に求める機能としては、「絵＋名前で要素を表現したい」「人物の数が100以上なので、全体的に見た時に横長ではなく正方形で表示したい」「要素を結ぶ線をある程度カスタマイズできるといい」です。

私が調べた限りでは、これらの要素を満たすものとしては[blockdiag](http://blockdiag.com/ja/blockdiag/examples.html#simple-
diagram-for-master-data-
manager)です。ただ問題点としてはこのツールは相関図を書くプログラムではないため、うまく正方形にするには、要素数を計算して上手くグループして縦、横に並べるプログラムを書く必要性がありそうな点です。

そこで質問なのですが、相関図をプログラムからないしはCUIから書けるツールをごぞんではないでしょうか？ご回答宜しくお願いいたします。


CC BY-SA 4.0
2018-10-20T01:59:28.817
49468
2018-10-20T05:30:05.050
15186
question
ruby
プログラムから操作できる、相関図を作るツールを探しています


この手の図は(graphvizなどが採用している)dot言語で書くのが定番だと思います。Rubyで書いたDSLからdotに変換するツールもいくつかあるようなので、試してみてはいかがでしょうか。

dot言語自体は、

  * ノードやエッジの形状はカスタマイズ可能。
  * 画像の出力はノードにimageを指定することで可能。
  * 正方形への出力は、size で出力サイズ(インチ)を1つ(縦と横に共用する=正方形)指定の上、 [ratio](http://www.graphviz.org/doc/info/attrs.html#a:ratio) に fill を指定すれば、指定サイズいっぱいにひろがるようノード間隔を調整する機能があるようです。

とりあえずsize指定に加えて `ratio = fill`
がない場合とある場合の比較をしてみましたが、もともとある程度正方形に近かったので、若干引き伸ばされた程度の差しか出ず、分かりにくいかもしれません。

[![ratioなし](https://i.stack.imgur.com/MFunm.png)](https://i.stack.imgur.com/MFunm.png)

[![ratioあり](https://i.stack.imgur.com/7TGWt.png)](https://i.stack.imgur.com/7TGWt.png)


CC BY-SA 4.0
2018-10-20T05:30:05.050
49472
2018-10-20T05:30:05.050
17037
49468
answer