2010-04-16 29 views
18

tôi nằm ở đó xin vui lòng xem chỉnh sửaGraphviz DOT sắp xếp Nodes trong vòng tròn, bố trí quá "nhỏ gọn"

OK đây là vấn đề của tôi, tôi là tạo ra một đồ thị của một module python, bao gồm tất cả các file với các hàm/phương thức/lớp của chúng.

Tôi muốn sắp xếp sao cho các nút thu thập trong vòng tròn quanh các nút cha của chúng, hiện tại mọi thứ nằm trên một hàng ngang khổng lồ, làm cho vật rộng> 50k pixel và cũng chuyển đổi svg thành thất bại (chỉ ám chỉ một nửa đồ thị).

Tôi đã xem qua số docs nhưng không thể tìm thấy bất kỳ thứ gì có vẻ như là lừa.

Vì vậy, câu hỏi là:
Có cách nào đơn giản để thực hiện việc này hay tôi phải tự mình sắp xếp toàn bộ nội dung? :/

EDIT:
Nhờ Andrews bình luận Tôi đã có cách bố trí đúng, vấn đề duy nhất bây giờ là đó là một chút để "nhỏ gọn" ... do đó, vấn đề bây giờ là, làm thế nào để sửa lỗi này ?

Test

+4

bạn đã thử bằng cách sử dụng "neato" bố trí? Nó có thể cho kết quả như những gì bạn muốn. – Andrew

+0

Chỉ cần thử nó thông qua công tắc dòng lệnh -K, kinda hoạt động xem chỉnh sửa của tôi. –

+3

Một chút trễ, nhưng khi bạn nhận được bố trí chồng chéo này với neato chỉ cần đặt "chồng chéo = sai". – pablasso

Trả lời

31

tôi đã đề cập đến tất cả các thông số quan trọng nhất ảnh hưởng đến bố trí hiện tại của bạn và sau đó giá trị cho các tham số gợi ý. Tuy nhiên, tôi nghi ngờ bạn có thể có được bố trí mà bạn muốn chỉ áp dụng một vài trong số những gợi ý này.

  • giảm mép cân, ví dụ: [weight = 0,5]; điều này sẽ làm cho các cạnh dài hơn gây ra các cụm chặt chẽ mà bạn hiện thấy trong biểu đồ của bạn thành 'hâm mộ'.

  • loại bỏ các đường viền nút, node_A [color = none; shape = plaintext]; đặc biệt là đối với các nút hình bầu dục, phần đáng kể trong tổng số không gian nút là 'không sử dụng' (nghĩa là, không được sử dụng để hiển thị nhãn nút).

  • rõ ràng thiết lập kích thước font chữ cho các nút (biên giới nút được mở rộng để họ bao quanh văn bản nút, có nghĩa là các font size và số lượng văn bản cho một nút cho trước có ảnh hưởng đáng kể đến kích thước ); [fontsize = 11] phải lớn đủ để dễ đọc nhưng cũng làm giảm giao diện 'lộn xộn' (kích thước mặc định là là 14).

  • tăng khoảng cách tối thiểu giữa nút, qua 'nodesep'; ví dụ, nodesep = 2.0; điều này sẽ trực tiếp giải quyết phản đối của bạn về biểu đồ của bạn là "quá nhỏ gọn". ('nodesep' và 'ranksep' có thể ảnh hưởng đến cách chấm vẽ một biểu đồ nhiều hơn bất kỳ tham số nào khác cho nút, cạnh hoặc biểu đồ.Trong trường hợp của bạn, có vẻ như bạn chỉ có hai cấp bậc nút; 'Ranksep' đặt khoảng cách tối thiểu giữa các nút của khác nhau cấp bậc - có vẻ như tất cả các nút mà bao gồm đồ thị của bạn là của cùng một cấp bậc (trừ vài cấp cao nhất nút trong những trung tâm).

  • thiết lập một cách rõ ràng tổng kích thước đồ thị, ví dụ, kích thước = "7.75,10.25" (đảm bảo rằng đồ thị của bạn phù hợp trên một trang 8,5 x 11 và rằng nó chiếm toàn bộ không gian)

  • Và một đề xuất hoàn toàn thẩm mỹ mà nhiều nhất sẽ chỉ giúp đồ thị xuất hiện ít lộn xộn hơn: màu phông mặc định cho cả hai cạnh và các nút là màu đen. Phần lớn mực trên biểu đồ của bạn là từ hai cấu trúc (đặc biệt nếu bạn xóa đường viền nút), vì vậy tôi sẽ ví dụ đặt nút (văn bản) phông chữ hoặc cạnh fontcolor to "blue" để giúp mắt phân biệt hai bộ đồ thị cấu trúc.

+1

Trong thực tế, tôi đã có một vấn đề rất giống nhau được báo cáo ở đây và sử dụng 'ranksep' là cấu hình chính để quạt ra biểu đồ. Cảm ơn! –

+0

Bạn có thể dẫn tôi đến tài liệu về điều này không? Với mẫu mã làm việc? – aitchnyu

6

Nếu nó quá nhỏ gọn, bạn sẽ muốn gây rối với độ dài cạnh. Bạn có một vài lựa chọn tùy thuộc vào cách bố trí đồ thị:

  1. Nếu bố trí của bạn là SFDP hoặc FDP, chỉnh graph tài sản K. Mặc định là 0,3.
  2. Đối với neato (hoặc fdp), hãy chỉnh sửa cạnh thuộc tính len. Mặc định là 1.0 cho neato và 0.3 cho fdp.
  3. Đối với dấu chấm, bạn có thể sử dụng thuộc tính cạnhminlen là độ dài cạnh tối thiểu. Mặc định là 1.

Bạn cũng có thể muốn gây rối với thuộc tính biểu đồ mô hình xác định hành vi phân cụm. Cụ thể, hãy thử tập hợp con. Tôi tin rằng đây xử lý len cho bạn: http://www.graphviz.org/doc/info/attrs.html#d:model

Ngoài ra, bạn có thể loại bỏ sự chồng chéo tất cả cùng với các kỹ thuật mở rộng quy mô: http://www.graphviz.org/doc/info/attrs.html#d:overlap

+0

Hmm .. minlen dường như không hoạt động .... – Pacerier

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