2017-10-31 54 views
1

GraphVizを使用して、実際の古いドキュメントを社内のwikiに移行しようとしています。GraphVizの位置と矢印の方向

私はドット言語に使用され、

は、次の例を参照してくださいいくつかの助けを必要としていないよ。私は多くのことを試していますが、私はそうに出ている最高の

Example of graph

をここまでです: Resulting GraphViz

digraph CentralPmr { 
    fontname="Helvetica"; 
    shape=box; 
    node[shape=box]; 
    graph [splines=ortho] 

    sg [label="TTD storage group for\nthe logged values"] 
    vc [label="Value catalogue"] 
    tc1 [label="Time catalogoue (1)"] 
    tc2 [label="Time catalogoue (2)"] 
    sv_ [shape=point,width=0.01,height=0.01]; 
    sv [label=""] 
    ie [shape=none, label="Initiating event"] 
    c1 [shape=none, label="The set of values, defined\nby the value catalogue, which\nare freezed out of the TTD\nstorage group of the actual log."] 
    c2 [shape=none, label="Time catalogue defining\nat what time around the\ninitiating event values\nshould be collected."] 
    sgf [shape=record, label="{<f0> 1|2|3|4|..}|{ | | | | }"] 

    sg -> sv_ [penwidth=4, dir=none]; 
    sv_ -> sv -> tc2 [penwidth=4] 
    sv -> sgf:f0 [penwidth=4] 
    {vc, tc1} -> sg 
    c1 -> sv [style=dashed, arrowhead="open"]; 

    {rank=min; ie} 
    {rank=same; sg c1} 
    {rank=same; vc sgf} 
    {rank=max; rc2} 
} 

するとそれはソースとまったく同じである必要はありませんが、私がwaそれを理解できるようにしてください。

の問題がある:

  1. 私は「バリューカタログ」と「タイムカタログ(1)」の間でテキストを配置するにはどうすればよいですか?
  2. [編集]「PMRフリーズされた値のTTDストレージグループ」に矢印を付けるにはどうすればよいのですか?これはメモリ領域の仮想化であり、矢印は特定のメモリポストを指しています。他の画像では、メモリ領域内の他のメモリポスト(例えば、2,3,4 ...)を指し示すことができる。
  3. 「開始イベント」からジグザグの行を作成することはできますか?
  4. さまざまな種類の行を説明する凡例を下部に配置するにはどうすればよいですか?
  5. [編集]「PMRフリーズド値のTTDストレージグループ」の右下、右下にコメントを追加するにはどうすればよいですか?
  6. [編集]「PMRフリーズド値のTTDストレージグループ」をより広くするにはどうすればよいですか?

答えて

2

をこれは、1つは、あまりにも多くの混乱を作成することを編集するような方法で私の最初の答えの上にあります。私はあなたのすべてのニーズを考慮に入れようとしましたが、それはsplines=orthoの要件をあきらめばうまくいきます。 Plsは私の最初の答えの下のコメントを参照してください。ここに私達は行く:

digraph CentralPmr { 
    fontname="Helvetica"; 
    shape=box; 
    node[shape=box]; 
    // graph [splines=ortho] 

    sg [label="TTD storage group for\nthe logged values", width = 2.5] 
    sv[ label="", width = 2] 
    ie [ shape=none, label="Initiating event", fontsize = 18 ] 
    c1 [ shape=none, label="The set of values, defined\nby the value catalogue, which\nare freezed out of the TTD\nstorage group of the actual log." ] 

    sgf[shape=box, margin=0, label=< 
    <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="4"> 
     <TR> 
      <TD BORDER="0" COLSPAN="2">TTD storage group for<BR/>PMR freezed values</TD> 
     </TR> 
     <TR> 
      <TD PORT="f1">1</TD> 
      <TD BORDER="0" ROWSPAN="6">The set of<BR/>values is<BR/>stored in<BR/>the TTD<BR/>storage<BR/>group</TD> 
     </TR> 
     <TR> 
      <TD>2</TD> 
     </TR> 
       <TR> 
      <TD>3</TD> 
     </TR> 
       <TR> 
      <TD>4</TD> 
     </TR> 
       <TR> 
      <TD>-</TD> 
     </TR> 
     <TR> 
      <TD>-</TD> 
     </TR> 
     <TR> 
      <TD BORDER="0" COLSPAN="2">Up to nine freezing areas<BR/>for defined central PMR</TD> 
     </TR> 
    </TABLE>>]; 

    TTD [shape=none, margin=0, label=< 
    <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" CELLPADDING="12"> 
     <TR> 
      <TD PORT="f1">Value catalogue</TD> 
     </TR> 
     <TR> 
      <TD BORDER="0"></TD> 
     </TR> 
     <TR> 
      <TD PORT="f2">Time catalogue (1)</TD> 
     </TR> 
     <TR> 
      <TD BORDER="0">Time catalogue defining<BR/>at what time around the<BR/>initiating event values<BR/>should be collected</TD> 
     </TR> 
     <TR> 
      <TD PORT="f3">Time catalogue (2)</TD> 
     </TR> 
    </TABLE>>]; 


    connector_1[ shape = point height = 0 width = 0 margin = 0 ] 
    ie -> connector_1[ style = dotted, arrowhead = none ]; 
    { rank = same; connector_1 c1 } 
    connector_1 -> c1[ style = invis, minlen = 4 ]; 
    c1 -> sv[ style = dashed, arrowhead = open ]; 
    connector_2[ shape = point height = 0 width = 0 margin = 0 ] 
    connector_1 -> connector_2[ style = dotted ]; 
    { rank = same; sg connector_2 sv } 
    sg -> connector_2[ minlen = 3, penwidth = 4, arrowhead = none ]; 
    connector_2 -> sv[ minlen = 3, penwidth = 4 ]; 

    sg:sw -> TTD:f1:nw[ weight = 5 ]; 
    sg:w -> TTD:f2:w; 
    sv:sw -> TTD:f3:e[ penwidth = 4 ]; 
    sv:sw -> sgf:f1:w[ penwidth = 4 ]; 

    node[ shape = plaintext ]; 
    leg2[ label = "Data flow" ]; 
    leg4[ label = "Reference" ]; 
    leg6[ label = "Comment" ]; 

    node [ shape = point height = 0 width = 0 margin = 0 ]; 
    leg1 leg3 leg5 

    TTD:sw -> leg1[ style = invis ]; 

    { rank = same; leg1 leg2 leg3 leg4 leg5 leg6 } 
    edge[ minlen = 2 ]; 
    leg1 -> leg2[ penwidth = 4 ]; 
    leg3 -> leg4[ style = dotted ]; 
    leg5 -> leg6[ style = dashed, arrowhead = open ]; 
} 

利回り

enter image description here

+0

私は本当にあなたが置く仕事に感謝します。それは私が期待していたよりもはるかに良い、驚くほどに見える今私は、残りのドキュメンテーションをデジタル化する必要があると思います。どうもありがとうございました。 – magol

+1

幸運にも、いつもお世話になりました! – vaettchen

+1

もしあなたがもっと多くのものを持っていれば、いくつかの処理ツールが好きかもしれません。 m4をプリプロセッサとして使用すると、ソースファイルを小さくしてきれいに保つのに役立ちます。見て[ここ](https://github.com/vaettchen/m4gv)。 – vaettchen

1

あなたが望むものを完全に理解しているかどうかはわかりませんこれはちょうど最初の試みです、はるかに細かいtunigを行うことができます。おそらく、元のグラフの「TTD Storage Group for PMR freezed values」のように、テキストと「ボックス」が近くにあるHTMLのようなノードを使用しています。

ご質問への私の答えは次のようになります。

私は「バリューカタログ」と「タイムカタログ(1)」の間でテキストを配置するにはどうすればよいですか?

---下記を参照してください。私は元のグラフのように2つの時間カタログの間に入れましたが、動きやすいです。

レコードの矢印を上から移動させるにはどうしたらよいですか?

---下記を参照してください。それがあなたの質問である場合は、rankdir = LR;を使用して方向を変更することもできます。

「開始イベント」からジグザグの行を作成することはできますか?

---方法はありますが、カスタムシェイプを作成するなど、多くの努力が必要です。私が知っている限り、「箱からすぐ」というものはありません。

どのように伝言を下に配置できますか?

私は実際にはわかりませんが、一般的には、ノードについて話すとき、答えはHTMLのようなラベルになります。

彼女は私がやっていることされています

digraph CentralPmr 
{ 
    fontname="Helvetica"; 
    shape=box; 
    node[shape=box]; 
    graph [splines=ortho] 

    sg [label="TTD storage group for\nthe logged values"] 
    vc [label="Value catalogue"] 
    tc1 [label="Time catalogoue (1)"] 
    tc2 [label="Time catalogoue (2)"] 
    sv_ [shape=point,width=0.01,height=0.01]; 
    sv [label="", width = 2] 
    ie [shape=none, label="Initiating event"] 
    c1 [shape=none, label="The set of values, defined\nby the value catalogue, which\nare freezed out of the TTD\nstorage group of the actual log."] 
    c2 [shape=none, label="Time catalogue defining\nat what time around the\ninitiating event values\nshould be collected."] 
    sgf [shape=record, label="{<f0> 1|2|3|4|..}|{ | | | | }"] 

    connector_1[ shape = point height = 0 width = 0 margin = 0 ] 
    ie -> connector_1[ style = dotted, arrowhead = none ]; 
    { rank = same; connector_1 c1 } 
    connector_1 -> c1[ style = invis ]; 
    c1 -> sv[ style = dashed, arrowhead = open ]; 
    connector_2[ shape = point height = 0 width = 0 margin = 0 ] 
    connector_1 -> connector_2[ style = dotted ]; 
    { rank = same; sg connector_2 sv } 
    sg -> connector_2[ minlen = 3, penwidth = 4, arrowhead = none ]; 
    connector_2 -> sv[ minlen = 3, penwidth = 4 ]; 

    vc -> tc1 -> c2 -> tc2[ style = invis, weight = 10 ]; 
    sg -> vc; 
    sg -> tc1; 
    sv -> tc2[ penwidth = 4 ]; 
    sv -> sgf; 
} 

利回り

enter image description here

+0

ああをどうもありがとうございました。 私の試みと比較して大きな改善です。 *私は2番目の質問でやや不明であったが、今私はそれをより明確にしたいと思う。 ※「価値カタログ」「時間カタログ1/2」とコメントをお互いに近づけることはできますか? *「PMRフリーズ値のTTDストレージグループ」のテキストがありません(元の質問に追加されています) *凡例では、異なる行の意味を説明しています。 – magol

+1

夕食後にすべてのことができるように見えます... – vaettchen

+1

私は恐怖ですが、私は約束しました。どちらの場合でも、テキストボックスは正しく表示されますが、エッジや他の方法を制御することはできません。結局のところ、graphvizが何をすべきかを見れば、驚きはありません。私はもう少し仕事をして、後でギターリンクとして投稿しますが、完璧な解決策にはなりません。 – vaettchen

関連する問題