2014-10-07 17 views
10

Có ở đó - hoặc thông qua tính năng ngôn ngữ hoặc thông qua bộ tiền xử lý - khả năng bao gồm các tệp .dot bên ngoài dưới dạng biểu đồ con thành một biểu đồ khác?Nhập tệp .dot dưới dạng biểu đồ con

Tôi đang làm việc trên một biểu đồ tương đối lớn, mặc dù được lưu giữ thủ công, không được tạo.

Nó sẽ là thuận tiện để có thể xác định một số

subgraph01.dot:

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

subgraph02.dot:

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

Và sau đó làm một cái gì đó giống như graph.dot:

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

Có cách nào không?

Trả lời

10

Hai tùy chọn ngay lập tức xảy ra với tôi. Người ta sẽ sử dụng bộ xử lý macro, ví dụ: m4. Với BigGraph.m4:

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

... chạy:

$ m4 BigGraph.m4 

... sản xuất:

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

Một lựa chọn khác có thể cho phép một cách tiếp cận phức tạp hơn là sử dụng gvpr từ GraphViz . Tôi đã cố gắng để tạo một ví dụ để làm điều này với gvpr, tuy nhiên và tôi đã không thành công, vì vậy tôi đề nghị chỉ thử nó nếu một cách tiếp cận nhận thức đồ thị là cần thiết hơn là cách tiếp cận đơn giản sử dụng m4.

Các vấn đề liên quan