2011-09-23 32 views
5

Sử dụng ruby-graphviz, tôi đã tạo ra một biểu đồ trông như thế này (biên giới bổ sung để nhấn mạnh ranh giới rendering):Buộc hai nút để chiếm cùng một cấp bậc trong Graphviz?

Before

Những gì tôi thực sự muốn là cho A và K để dòng lên cùng nhau tại đầu (hoặc trái, nếu rankdir = "LR"). Vì vậy, tôi đã thêm một nút vô hình (gọi nó là X), và thêm cạnh vô hình từ X đến A và K. Và đây là những gì tôi nhận:

After

X, XA, và XK không có nhãn, và phong cách đặt thành 'invis'. X có chiều cao, chiều rộng và lề được đặt thành 0 và cố định được đặt thành true. XA và XK có minlen, len và penwidth được đặt thành 0.

Nhưng vẫn còn không gian trống ở trên cùng. Có cách nào để thoát khỏi nó, thiếu xén sau khi thực tế?

Trả lời

3

Bạn không cần các nút ẩn để đạt được điều này.

Đây là dấu chấm cú pháp để buộc các cấp bậc tương tự cho hai nút:

{rank=same; A; K;} 

này được gọi là subgraph.

Tôi không biết ruby-graphviz, tôi không chắc chắn làm thế nào để tạo ra một đồ thị con - nhưng có một example on github:

c2 = g.subgraph { |c| 
    c[:rank => "same"] 
    c.mysite[:label => "\nexample.com\n ", :shape => "component", :fontname => "Arial"] 
    c.dotgraph[:label => "\ndotgraph.net\n ", :shape => "component", :fontname => "Arial"] 
} 
+0

Phải mất một chút tranh cãi thêm để có được những giải pháp trên để làm việc, nhưng các biểu đồ con hóa ra là chìa khóa. Cảm ơn! – mbklein

+0

Một ví dụ rất hay về câu trả lời giải quyết vấn đề của OP mà không trả lời câu hỏi của anh ta. Tôi có vấn đề rất "làm thế nào để ngăn chặn các nút vô hình từ chiếm không gian" ... ;-) – DevSolar

+0

@DevSolar ... hoặc một ví dụ về một câu hỏi sai để giải quyết vấn đề ban đầu :-) Tuy nhiên có thể, IMHO hầu hết thời gian, tốt hơn là không sử dụng các nút ẩn nếu có một giải pháp khác. Nhưng hãy tiếp tục và đăng câu hỏi về vấn đề cụ thể của bạn, ai đó có thể tìm ra giải pháp. – marapet

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