2

尋ねる前に、私は自分の質問の答えを検索しようとしましたが、見つかりませんでした。私の質問は、ドット図のエッジ方向を変更することです。ランクディレクトリは「LR」ですが、グラフの特定の部分で「TB」を使用したいと思います。例を挙げましょう。

有向グラフG{
  ランクディレクトリ=LR;
  size = "7,5";
  ブラウザ->ui_thread;
  ブラウザ->db_thread;
  ブラウザ->webkit_thread;
  ブラウザ->cache_thread;
  ブラウザ->file_thread;
  ブラウザ->io_thread;
  io_thread [style =filled];
  cache_thread [style = filled];
  ui_thread-> thread [label = inherit];
  ui_thread-> messageloop [style = dotted];
  db_thread-> messageloop [style = dotted];
  webkit_thread-> messageloop [style = dotted];
  cache_thread-> messageloop [style = dotted];
  file_thread-> messageloop [style = dotted];
  io_thread-> messageloop [style = dotted];
}

このようなグラフが出ます 出力グラフ

しかし、これは私が望むものではありません。次の画像が欲しいです。「thread」は「ui_thread」の上に垂直にあります。 ここに画像の説明を入力してください 「rankdir=same」と「thread」および「ui_thread」を使用すると簡単に解決できると思うかもしれません。私は確かにこれをすでに試しました。しかし、私は失敗しました。「thread」は常に「ui_thread」の下にあります。

ありがとう、

4

1 に答える 1

3

残念ながら、グラフの方向は1回しか指定できず、グラフ全体がその方向に留まります。この状況では、通常、constraint=falseいくつかの順序付けを強制するために、非表示のエッジの組み合わせで目的の効果を得ることができます。

このコードは、2番目の画像を生成します。

digraph G {
  rankdir=LR;
  size="7,5";
  browser->thread[style=invis];
  browser->ui_thread;
  browser->db_thread;
  browser->webkit_thread;
  browser->cache_thread;
  browser->file_thread;
  browser->io_thread;  
  io_thread[style=filled];
  cache_thread[style=filled];
  ui_thread->thread[label=inherit constraint=false]; 
  ui_thread->messageloop[style=dotted];
  db_thread->messageloop[style=dotted];
  webkit_thread->messageloop[style=dotted];
  cache_thread->messageloop[style=dotted];
  file_thread->messageloop[style=dotted];
  io_thread->messageloop[style=dotted];
}
于 2011-05-28T17:42:34.690 に答える