2012-11-12 24 views
9

Tôi đã đấu tranh với điều này trong một thời gian và dường như không thể tìm thấy câu trả lời thẳng. Tôi đang làm việc với subgraphs hợp chất trong graphviz và dường như không thể tìm thấy sự kết hợp của các thiết lập để buộc hai subgraphs để phù hợp với nhau.Làm thế nào để tôi có được graphviz để tạo các biểu đồ con có kích thước cố định?

Đính kèm là một ví dụ đơn giản để hiển thị các vấn đề ...

digraph g { 
    compound=true; 

    subgraph cluster_top { 
    graph [color=black, label="Top", rank=min]; 

    nodeA; nodeB; nodeC 
    cluster_top_DUMMY [shape=point style=invis] 
    } 

    subgraph cluster_service { 
    graph [color=black, label="Bottom", rank=min]; 
    node1; node2; node3; node4; node5; extra_long_node 
    cluster_bottom_DUMMY [shape=point style=invis] 
    } 
    cluster_top_DUMMY -> cluster_bottom_DUMMY [ style=invis ] 
} 

này tạo ra với các đồ thị con dưới rộng hơn so với Top đồ thị con đáng kể.

enter image description here

Những gì tôi thực sự muốn là cho để đảm bảo rằng cả trên và dưới luôn chính xác cùng một chiều rộng. Ngoài ra, nếu có quá nhiều nút để vừa với chiều rộng có sẵn, nó sẽ tạo ra các hàng bổ sung của các nút.

Trả lời

2

Giải pháp có thể (không tốt nhưng hoạt động) là sử dụng các nút ẩn và đặt chiều rộng. xem xét như sau:

digraph g { 
    compound=true; 

    subgraph cluster_top { 
     graph [color=black, label="Top", rank=min]; 

     nodeAI0 [style=invisible] 
     nodeAI1 [style=invisible] 
     nodeAI2 [style=invisible,fixedsize=true,width=1.65] 
     nodeA; nodeB; nodeC 
     cluster_top_DUMMY [shape=point style=invis] 
    } 

    subgraph cluster_service { 
     graph [color=black, label="Bottom", rank=min]; 
     node1; node2; node3; node4; node5; extra_long_node 
     cluster_bottom_DUMMY [shape=point style=invis] 
    } 
    cluster_top_DUMMY -> cluster_bottom_DUMMY [ style=invis ] 
} 

enter image description here

Các nút vô hình (NodeAI0-NodeAI2) lấy không gian. fixedsize = true, width = 1.65 làm cho cái cuối cùng chính xác 1.65 inch.

khác, giải pháp tốt hơn sẽ là cũng để thiết lập các nút còn phù hợp đặc biệt (để tránh việc phải tìm kiếm các giá trị đúng) bằng cách thêm một cái gì đó như:

node [fixedsize=true,width=0.75] 

sau khi hợp chất = true phần.

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