2014-10-07 13 views
10

Czy istnieje - za pośrednictwem funkcji językowej lub przez pre-dostawcę - możliwość dołączenia zewnętrznych plików .dot jako podgrafów do innej?Importowanie pliku .dot jako subgraph

Pracuję na stosunkowo dużym wykresie, ale ręcznie obsługiwanym, nie generowanym.

byłoby wygodne, aby móc określić niektóre

subgraph01.dot:

digraph subgraph01 { 
/* lot of nodes and edges */ 
} 

subgraph02.dot:

digraph subgraph02 { 
/* lot of nodes and edges */ 
} 

A potem zrobić coś graph.dot:

digraph BigGraph { 
    import subgraph01; 
    import subgraph02; 
    A -> subgraph01.Node1 
    A -> subgraph02.Node1 
    subgraph01.Node10 -> subgraph02.Node99 
    /* etc. */ 
} 

Czy istnieje sposób?

Odpowiedz

10

Dwie opcje natychmiast pojawiają się. Jednym z nich byłoby użycie procesora makro, np. m4. Biorąc BigGraph.m4:

digraph BigGraph { 
    define(`digraph',`subgraph') 
    include(`subgraph01.dot') 
    include(`subgraph02.dot') 
    A -> subgraph01.Node1 
    A -> subgraph02.Node1 
    subgraph.Node10 -> subgraph.Node99 
    /* etc. */ 
} 

... trwania:

$ m4 BigGraph.m4 

... produkuje:

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. */ 
} 

Innym rozwiązaniem, które mogłyby pozwolić na bardziej wyrafinowane podejście do korzystania gvpr z Graphviz . Próbowałem utworzyć przykład, aby to zrobić z gvpr, ale nie udało mi się, więc sugeruję, aby go wypróbować tylko wtedy, gdy wymagane jest podejście uwzględniające wykresy, a nie proste podejście z użyciem m4.