2012-01-24 10 views
3

私のプログラムのユーザーは階層的に構成されています。各ユーザはツリー内のノードであり、唯一の他のタイプのノードは部門ノードです。各ノードには、唯一の親ノード(おそらくルートノード)があります。プログラムで組織図を描画する方法は?

graphvizスイートで使用するDOTファイルを生成しましたが、結果の画像は大きすぎるため使用できません。私は兄弟ノードがたくさんあるフラットな階層を持っているので、私のニーズに合わせてこのプログラムを調整できるかどうか分かりません。そのために特別に設計されたプログラムが必要かもしれません。私は平らでないツールを試しましたが、成功しませんでした。

This is the test dot file - ドット言語は、それがより満足させるために画像を修正するには微妙な方法をたくさん持っている

+0

このような組織図(フラット階層)は完全にレイアウトされているように見えますか? – marapet

+0

あなたは確かに正しいですが、私はそれが私が考えることができるよりももっと巧妙な方法、例えばサークルで整理することを望みました。 – Raffaele

答えて

3

あなたのコメントに基づいて、ドット以外のレイアウトアルゴリズムを使用したクイックテストがあります。あなたがのサークルと言って以来、私はサーモtwopiで試してみました。改行を挿入異なっ

  • ノード
  • スタイルユーザー部門いくつかの色/形状/スタイル/フォントを追加

    • は、私がテストスクリプトに若干の変更を加えなければなりませんでしたユーザーの名前と機能の間にあります。

    長い部門名を表示するおそらく2本の線が役立つでしょう。

    digraph G { 
    overlap=false; 
    splines=true; 
    root="node0"; 
    
    node[colorscheme=paired12, fontsize=11]; 
    node0 [shape=house, label="Organizzazione", style="filled", fillcolor=3, color="4", fontsize=20, height=2, 
    fontname="Times New Roman Bold"]; 
    
    node[shape=doubleoctagon, style=filled, fillcolor=7, color=8, width=3]; 
    node24 [label="C3 TERREMOTO"]; 
    node28 [label="E POLIZIA URBANA E PROTEZIONE CIVILE"]; 
    node14 [label="D1 SERVIZI SCOLASTICI"]; 
    node35 [label="30: PROTOCOLLO ADMIN "]; 
    node18 [label="B ECONOMICO E FINANZIARIO"]; 
    node22 [label="C ASSETTO E TERRITORIO"]; 
    node41 [label="A9 UFFICIO PUBBLICAZIONI"]; 
    node38 [label="C1 TECNICO"]; 
    node31 [label="A AFFARI GENERALI"]; 
    node12 [label="A4 ANAGRAFE E STATO CIVILE"]; 
    node20 [label="B1 TRIBUTI"]; 
    node16 [label="A5 ELETTORALE E LEVA"]; 
    node40 [label="31: PUBBLICAZIONI ALBO UTENTE "]; 
    node26 [label="C2a TECNICO"]; 
    node9 [label="A3 UFFICIO PROTOCOLLO CENTRALE"]; 
    
    node[shape=box, style=filled, fillcolor="1", color="2", width=2]; 
    node0 -> node24; 
    node0 -> node28; 
    node7 [label="14: ROCCO MARINACCIO\nVISUALIZZATORE"]; 
    node0 -> node7; 
    node25 [label="27: FRANCESCO MARINO "]; 
    node26 -> node25; 
    node39 [label="5: CIRO D'EMILIO\nPROTOCOLLATORE"]; 
    node20 -> node39; 
    node4 [label="15: FRANCESCO PAZIENZA\nVISUALIZZATORE"]; 
    node0 -> node4; 
    node3 [label="18: ADRIANA NATALE\nVISUALIZZATRICE"]; 
    node0 -> node3; 
    node42 [label="4: MICHELE ROGATO\nRESP DI REPARTO"]; 
    node18 -> node42; 
    node29 [label="29: FRANCESCO NOTA "]; 
    node28 -> node29; 
    node0 -> node14; 
    node10 [label="12: STEFANO IEFFA "]; 
    node0 -> node10; 
    node13 [label="20: ANTONIO MARINO "]; 
    node14 -> node13; 
    node30 [label="3: PATRIZIA PLATANO\nPROTOCOLLATRICE"]; 
    node31 -> node30; 
    node1 [label="19: PATRIZIA PLATANO "]; 
    node0 -> node1; 
    node37 [label="6: GIUSEPPE CEGLIA\nRESP. DI REPARTO"]; 
    node38 -> node37; 
    node0 -> node35; 
    node0 -> node18; 
    node23 [label="26: PASQUALE RUSSO "]; 
    node24 -> node23; 
    node2 [label="17: MICHELE BICCARINO\nVISUALIZZATORE"]; 
    node0 -> node2; 
    node0 -> node22; 
    node0 -> node41; 
    node11 [label="21: GIUSEPPE DI FLUMERI "]; 
    node12 -> node11; 
    node43 [label="9: ROBERTO CAMPANELLA "]; 
    node0 -> node43; 
    node0 -> node38; 
    node0 -> node31; 
    node0 -> node12; 
    node0 -> node20; 
    node17 [label="23: MICHELE IPPOLITO "]; 
    node18 -> node17; 
    node6 [label="13: ALESSANDRO CAPANO "]; 
    node0 -> node6; 
    node19 [label="24: SALVATORE DOTO "]; 
    node20 -> node19; 
    node15 [label="22: BENVENUTA REA "]; 
    node16 -> node15; 
    node27 [label="28: ANTONIO CAMPANELLA "]; 
    node28 -> node27; 
    node8 [label="11: PASQUALE PALUMBO "]; 
    node9 -> node8; 
    node5 [label="16: PAOLO PIETRO TROCCOLA\nVISUALIZZATORE"]; 
    node0 -> node5; 
    node0 -> node16; 
    node21 [label="25: RAFFAELA COFANO "]; 
    node22 -> node21; 
    node41 -> node40; 
    node32 [label="2: MARIA CRISTINA ANELLI\nVISUALIZZATRICE"]; 
    node0 -> node32; 
    node0 -> node26; 
    node33 [label="10: VINCENZO BOTTICELLI "]; 
    node0 -> node33; 
    node0 -> node9; 
    node36 [label="7: ANTONIETTA STRAZZELLA\nRESP. DI REPARTO"]; 
    node22 -> node36; 
    node34 [label="1: AMBROGIO MASCIA\nAmministratore di sistema"]; 
    node9 -> node34; 
    node44 [label="8: MARIANO LAUDISI\nVISUALIZZATORE"]; 
    node0 -> node44; 
    } 
    

    おそらく画像を開いて、元のサイズで見る必要があります。

    Twopiレイアウト:

    graphviz output - twopi

    チルコレイアウト:

    graphviz output - circo

    あなたが部門にリンクされている部門、またはにおけるユーザーの多くを持っている場合サーコレイアウトは、おそらくより適切であろう1つの部門。

  • +0

    これらの提案をありがとう。私はすでにこれらのコマンドを試して、最終的に部門ごとにユーザーをグループ化して1つのボックスに収めることにしました。このようにしても、データベースが自明でない場合でも、グラフは読みにくいです。私は結果としてのイメージをできるだけ早く投稿する – Raffaele

    4

    ...私のプログラムは、多くの場合、10倍、このデータを使用することに注意してください。数分をとり、dot guideを見てください。あなたは、ページのX/Y比、ノードの反発およびレイアウトから、かなり多くの側面で制約を設定することができます。

    graphvizで利用できるcontribパッケージの1つはGveditです.GVditはグラフビズライブラリにリンクする小さなQtアプリケーションです。グラフを編集するウィンドウが1つあり、「go」を押すと別のウィンドウにレンダリングされます。きれいにする素晴らしいインスタントフィードバックの方法。

    +0

    グラフはプログラム的に生成されるため、完全なピクセルである必要はありません。 – Raffaele

    +2

    右 - 私が提案しているのは、レイアウトのさまざまな側面を理解することです.GVEditを使用することができます。一度、あなたが正しいサイズを取得する属性設定を取り除くと、レイアウト - プログラムで生成されたグラフに対して適用するテンプレートとして使用できます。 – synthesizerpatel

    関連する問題