Как я могу настроить направление ребра в точечной диаграмме? - PullRequest
2 голосов
/ 28 мая 2011

Прежде чем спросить, я попытался найти ответ на свой вопрос, но я не смог его найти. Мой вопрос об изменении направления края в точечной диаграмме. Rankdir - это «LR», но в определенной части графика я хочу использовать «TB». Позвольте мне привести пример.

digraph G {
  rankdir=LR;
  size="7,5";
  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];
  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];
}

это выдает график, как это output graph

Но это не то, что я хочу. Я хочу следующее изображение. "поток" выше "ui_thread" по вертикали. enter image description here Вы можете подумать, что это можно легко решить, используя «rankdir = same» с «thread» и «ui_thread». Я уверен, что уже попробовал это. но я потерпел неудачу. «поток» всегда ниже «ui_thread».

спасибо,

1 Ответ

3 голосов
/ 28 мая 2011

К сожалению, направление графика может быть указано только один раз, и весь график остается в этом направлении.В этой ситуации вы обычно можете получить желаемый эффект с помощью комбинации constraint=false и невидимых краев для наведения порядка.

Этот код создаст ваше второе изображение:

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];
}
...