Импорт файла.dot как подграфа
Есть ли - либо с помощью языковой функции, либо с помощью препроцессора - возможность включить внешние файлы.dot в качестве подграфов в другой?
Я работаю над сравнительно большим графиком, хотя и поддерживается вручную, но не генерируется.
Было бы удобно иметь возможность определить некоторые
subgraph01.dot
:
digraph subgraph01 {
/* lot of nodes and edges */
}
subgraph02.dot
:
digraph subgraph02 {
/* lot of nodes and edges */
}
А потом сделать что-то вроде graph.dot
:
digraph BigGraph {
import subgraph01;
import subgraph02;
A -> subgraph01.Node1
A -> subgraph02.Node1
subgraph01.Node10 -> subgraph02.Node99
/* etc. */
}
Есть ли способ?
1 ответ
Два варианта сразу приходят мне в голову. Можно было бы использовать макропроцессор, например, m4. Дано BigGraph.m4
:
digraph BigGraph {
define(`digraph',`subgraph')
include(`subgraph01.dot')
include(`subgraph02.dot')
A -> subgraph01.Node1
A -> subgraph02.Node1
subgraph.Node10 -> subgraph.Node99
/* etc. */
}
... Бег:
$ m4 BigGraph.m4
... производит:
digraph BigGraph {
subgraph subgraph01 {
/* lot of nodes and edges */
}
subgraph subgraph02 {
/* lot of nodes and edges */
}
A -> subgraph01.Node1
A -> subgraph02.Node1
subgraph.Node10 -> subgraph.Node99
/* etc. */
}
Другим вариантом, который может позволить более сложный подход, является использование gvpr от GraphViz. Я пытался создать пример, чтобы сделать это с gvpr
Тем не менее, и я потерпел неудачу, поэтому я предлагаю попробовать только, если требуется подход с учетом графов, а не простой подход с использованием m4
,