Шаги для достижения этого используют несколько инструментов графической визуализации, которые могут быть связаны друг с другом.
Следующая строка является возможной конфигурацией, где graph.dot — это файл, содержащий ваши графики. Возможно, вам придется повозиться с опциями.
ccomps -x graph.dot | dot | gvpack -array3 | neato -Tpng -n2 -o graph.png
И вот объяснение:
1. Отдельные несвязные графы
Инструмент: ccomps
разлагает графы на их связные компоненты
Параметр -x
(Печатаются только связанные компоненты в виде отдельных графиков), вероятно, все, что нужно.
2. Разметьте каждый график
Инструмент: точка
Каждый ориентированный граф выкладывается один за другим. Этот шаг необходим для получения положения узлов и ребер.
3. Упаковать все выложенные графики в один
Инструмент: gvpack
считывает поток графов, объединяет графы в один макет и создает один граф, служащий объединением входных графов.
Вам следует прочитать документацию по параметрам этого инструмента и поиграть с параметрами. Например, -array
используется для размещения графиков в виде сетки и предлагает несколько флагов для управления макетом.
4. Создайте вывод
Инструмент: чистый
Параметр -n2
указывает Neato не размещать входные графики, а использовать существующие атрибуты позиции.
Пример графика:
![графический gvpack](https://i.stack.imgur.com/IfDFs.png)
digraph G {
subgraph G1 {
a->{b; c;};
}
subgraph G2 {
d -> {e; f;};
}
subgraph G3 {
g -> h;
}
subgraph G4 {
i -> j;
}
subgraph G5 {
{k; l;} -> m;
}
}
Изменить: Сортировка орграфов в gvpack
Чтобы определить порядок появления подграфов в комбинированном макете, созданном gvpack
, каждому подграфу потребуется атрибут sortv
.
Например, следующие графики:
digraph G1 {
sortv=1;
a->{b; c;};
}
digraph G2 {
sortv=2;
d -> {e; f;};
}
digraph G3 {
sortv=3;
g -> h;
}
digraph G4 {
sortv=4;
i -> j;
}
digraph G5 {
sortv=5;
{k; l;} -> m;
}
можно преобразовать с помощью
dot graph.dot | gvpack -array_u | neato -Tpng -n2 -o graph.png
в результате чего
![упакованный граф с упорядоченными подграфами](https://i.stack.imgur.com/Ta8Ku.png)
person
marapet
schedule
04.11.2011