2011-01-26 38 views
51

Tôi đang tìm các giải pháp thay thế cho GraphViz. Tôi đã sử dụng GraphViz trong hơn một thập kỷ và không sao, nhưng các bố cục không chỉ tạo ra các đồ thị chất lượng xuất bản cho tôi với dữ liệu đầu vào của mình. Đôi khi dữ liệu của tôi thực sự lớn và phức tạp, và đôi khi không phải vậy, nhưng GraphViz chưa bao giờ thực sự tạo ra những thứ đẹp đẽ.Giải pháp thay thế Graphviz?

Các công cụ trực quan hóa biểu đồ khác mà mọi người đang sử dụng là gì? Lý tưởng nhất là có một trong đó sử dụng cú pháp GraphViz cho tập tin đầu vào.

Ở đây ví dụ là một tập tin đầu vào Tôi đang chơi với:

digraph mdc {  
    size="4,8";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0PAN0-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0047-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0048-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0050-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0051-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0052-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0009-FOO";  
    "KJ16:76:A2:60:6E" -> "JUNK-0413-FOO";  
    "KJ16:76:A2:60:6E" -> "JUNK-0414-FOO";  
    "KJE0:D0:13:14:94" -> "GEORGE42-FRED";  
    "KJE0:D0:13:14:94" -> "MY5-30-FRED";  
    "KJ50:04:EE:6C:F9" -> "PSPAN-036-FRED";  
    "KJ50:04:EE:6C:F9" -> "GEORGE02-FRED";  
    "KJ50:04:EE:6C:F9" -> "GEORGE04-FRED";  
    "KJ1B:B9:9B:D5:BB" -> "JUNK-0047-FOO";  
    "KJ1B:B9:9B:D5:BB" -> "JUNK-0048-FOO";  
    "KJ05:5F:EF:14:PAN" -> "thPAN-PAN-FRED";  
    "KJ05:5F:EF:14:PAN" -> "cn20-PAN-FRED";  
    "KJ15:F2-KIM-:E5YF" -> "thPAN-PAN-FRED";  
    "KJ15:F2-KIM-:E5YF" -> "cn20-PAN-FRED";  
    "KJ0E:90:D5:E6:5E" -> "JUNK-0051-FOO";  
    "KJ0E:90:D5:E6:5E" -> "JUNK-0009-FOO";  
    "KJ1E:90:DE:F1:07" -> "JUNK-0051-FOO";  
    "KJ1E:90:DE:F1:07" -> "JUNK-0009-FOO";  
    "KJ1E:90:D5:EE:5E" -> "JUNK-0051-FOO";  
    "KJ1E:90:D5:EE:5E" -> "JUNK-0047-FOO";  
    "KJ1E:90:D5:EE:5E" -> "JUNK-0009-FOO";  
    "KJ04:ED:66:C7:19" -> "JUNK-0562-FOO";  
    "KJ04:ED:66:C7:19" -> "JUNK-0561-FOO";  
    "KJ1B:B9:9C-PET-67" -> "JUNK-0047-FOO";  
    "KJ1B:B9:9C-PET-67" -> "JUNK-0049-FOO";  
    "PAN:KJ5E:7F:FF:FA" -> "JUNK-0PAN4-FOO";  
    "PAN:KJ5E:7F:FF:FA" -> "PSPAN-021-FRED";  
    "PAN:KJ5E:7F:FF:FA" -> "GEORGE38-FRED";  
    "PAN:KJ5E:7F:FF:FA" -> "JUNK-0095-FOO";  
    "PAN:KJ5E:7F:FF:FA" -> "JUNK-PAN18-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0PAN0-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0051-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0052-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0009-FOO";  
    "KJ26:18:BD:D9:E9" -> "JUNK-0562-FOO";  
    "KJ26:18:BD:D9:E9" -> "JUNK-0561-FOO";  
    "KJD0:B7:69:0A-VET" -> "cn4-06-FRED";  
    "KJD0:B7:69:0A-VET" -> "1039-FRED";  
"KJ50:04:EE:6C:F9" [fontsize=96,shape=oval]  
"KJ1E:90:DE:F1:07" [fontsize=96,shape=oval]  
"KJ05:5F:EF:14:PAN" [fontsize=96,shape=oval]  
"KJ26:18:BD:D9:E9" [fontsize=96,shape=oval]  
"KJ1B:B9:9B:D5:BB" [fontsize=96,shape=oval]  
"KJE0:D0:13:14:94" [fontsize=96,shape=oval]  
"KJ0E:90:D5:E6:5E" [fontsize=96,shape=oval]  
"KJ1E:A6:PAN:9E:3A" [fontsize=96,shape=oval]  
"KJ1E:90:D5:EE:5E" [fontsize=96,shape=oval]  
"PAN:KJ5E:7F:FF:FA" [fontsize=96,shape=oval]  
"KJ1B:B9:9B:D3:61" [fontsize=96,shape=oval]  
"KJ1B:B9:9C-PET-67" [fontsize=96,shape=oval]  
"KJ15:F2-KIM-:E5YF" [fontsize=96,shape=oval]  
"KJD0:B7:69:0A-VET" [fontsize=96,shape=oval]  
"KJ04:ED:66:C7:19" [fontsize=96,shape=oval]  
"KJ16:76:A2:60:6E" [fontsize=96,shape=oval]  
"JUNK-0009-FOO" [fontsize=96,shape=box3d]  
"GEORGE38-FRED" [fontsize=96,shape=box3d]  
"JUNK-0413-FOO" [fontsize=96,shape=box3d]  
"JUNK-0561-FOO" [fontsize=96,shape=box3d]  
"JUNK-0050-FOO" [fontsize=96,shape=box3d]  
"cn20-PAN-FRED" [fontsize=96,shape=box3d]  
"JUNK-PAN18-FOO" [fontsize=96,shape=box3d]  
"1039-FRED" [fontsize=96,shape=box3d]  
"JUNK-0095-FOO" [fontsize=96,shape=box3d]  
"PSPAN-021-FRED" [fontsize=96,shape=box3d]  
"JUNK-0048-FOO" [fontsize=96,shape=box3d]  
"JUNK-0052-FOO" [fontsize=96,shape=box3d]  
"GEORGE42-FRED" [fontsize=96,shape=box3d]  
"JUNK-0049-FOO" [fontsize=96,shape=box3d]  
"GEORGE04-FRED" [fontsize=96,shape=box3d]  
"cn4-06-FRED" [fontsize=96,shape=box3d]  
"thPAN-PAN-FRED" [fontsize=96,shape=box3d]  
"GEORGE02-FRED" [fontsize=96,shape=box3d]  
"JUNK-0PAN0-FOO" [fontsize=96,shape=box3d]  
"MY5-30-FRED" [fontsize=96,shape=box3d]  
"JUNK-0047-FOO" [fontsize=96,shape=box3d]  
"JUNK-0562-FOO" [fontsize=96,shape=box3d]  
"JUNK-0PAN4-FOO" [fontsize=96,shape=box3d]  
"JUNK-0051-FOO" [fontsize=96,shape=box3d]  
"PSPAN-036-FRED" [fontsize=96,shape=box3d]  
"JUNK-0414-FOO" [fontsize=96,shape=box3d]  
}  

(Tất cả các fontsize=96 là nỗ lực vô ích của tôi để có được graphviz để làm cho phông chữ dễ đọc hơn, nhưng dường như nó không hoạt động .)

+0

Câu trả lời cho những câu hỏi này có thể hữu ích ở đây: http://stackoverflow.com/questions/238724/visualizing-undirected-graph-thats-too-large-for-graphviz http://stackoverflow.com/questions/ 243616/visualization-tools-for-huge-graphs http://stackoverflow.com/questions/438419/does-anyone-know-a-good-network-graph-visualization-software-just-add-data – las3rjock

Trả lời

23

Có gì không thích?

Cá nhân tôi sẽ không sử dụng box3d, và sự lựa chọn của tôi về màu sắc có thể đau mắt ...

(kích thước đầy đủ hình ảnh: http://i.stack.imgur.com/MTe6n.png)

graphviz output

EDIT:

Dưới đây là mã chấm được sửa đổi - Tôi đã sắp xếp lại một chút:

digraph { 
size="11,11"; 
layout=neato; 
overlap=false; 
splines=true; 
pack=true; 
start="random"; 
sep=0.1; 

edge [len=2]; 
node[shape=oval,style=filled,fillcolor="#DCA80A"]; 

"KJ50:04:EE:6C:F9" 
"KJ1E:90:DE:F1:07" 
"KJ05:5F:EF:14:PAN" 
"KJ26:18:BD:D9:E9" 
"KJ1B:B9:9B:D5:BB" 
"KJE0:D0:13:14:94" 
"KJ0E:90:D5:E6:5E" 
"KJ1E:A6:PAN:9E:3A" 
"KJ1E:90:D5:EE:5E" 
"PAN:KJ5E:7F:FF:FA" 
"KJ1B:B9:9B:D3:61" 
"KJ1B:B9:9C-PET-67" 
"KJ15:F2-KIM-:E5YF" 
"KJD0:B7:69:0A-VET" 
"KJ04:ED:66:C7:19" 
"KJ16:76:A2:60:6E" 

node[shape=box3d,style=filled,fillcolor="#B1C3D4"]; 
"JUNK-0009-FOO" 
"GEORGE38-FRED" 
"JUNK-0413-FOO" 
"JUNK-0561-FOO" 
"JUNK-0050-FOO" 
"cn20-PAN-FRED" 
"JUNK-PAN18-FOO" 
"1039-FRED" 
"JUNK-0095-FOO" 
"PSPAN-021-FRED" 
"JUNK-0048-FOO" 
"JUNK-0052-FOO" 
"GEORGE42-FRED" 
"JUNK-0049-FOO" 
"GEORGE04-FRED" 
"cn4-06-FRED" 
"thPAN-PAN-FRED" 
"GEORGE02-FRED" 
"JUNK-0PAN0-FOO" 
"MY5-30-FRED" 
"JUNK-0047-FOO" 
"JUNK-0562-FOO" 
"JUNK-0PAN4-FOO" 
"JUNK-0051-FOO" 
"PSPAN-036-FRED" 
"JUNK-0414-FOO" 

    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0PAN0-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0047-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0048-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0050-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0051-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0052-FOO";  
    "KJ1E:A6:PAN:9E:3A" -> "JUNK-0009-FOO";  
    "KJ16:76:A2:60:6E" -> "JUNK-0413-FOO";  
    "KJ16:76:A2:60:6E" -> "JUNK-0414-FOO";  
    "KJE0:D0:13:14:94" -> "GEORGE42-FRED";  
    "KJE0:D0:13:14:94" -> "MY5-30-FRED";  
    "KJ50:04:EE:6C:F9" -> "PSPAN-036-FRED";  
    "KJ50:04:EE:6C:F9" -> "GEORGE02-FRED";  
    "KJ50:04:EE:6C:F9" -> "GEORGE04-FRED";  
    "KJ1B:B9:9B:D5:BB" -> "JUNK-0047-FOO";  
    "KJ1B:B9:9B:D5:BB" -> "JUNK-0048-FOO";  
    "KJ05:5F:EF:14:PAN" -> "thPAN-PAN-FRED";  
    "KJ05:5F:EF:14:PAN" -> "cn20-PAN-FRED";  
    "KJ15:F2-KIM-:E5YF" -> "thPAN-PAN-FRED";  
    "KJ15:F2-KIM-:E5YF" -> "cn20-PAN-FRED";  
    "KJ0E:90:D5:E6:5E" -> "JUNK-0051-FOO";  
    "KJ0E:90:D5:E6:5E" -> "JUNK-0009-FOO";  
    "KJ1E:90:DE:F1:07" -> "JUNK-0051-FOO";  
    "KJ1E:90:DE:F1:07" -> "JUNK-0009-FOO";  
    "KJ1E:90:D5:EE:5E" -> "JUNK-0051-FOO";  
    "KJ1E:90:D5:EE:5E" -> "JUNK-0047-FOO";  
    "KJ1E:90:D5:EE:5E" -> "JUNK-0009-FOO";  
    "KJ04:ED:66:C7:19" -> "JUNK-0562-FOO";  
    "KJ04:ED:66:C7:19" -> "JUNK-0561-FOO";  
    "KJ1B:B9:9C-PET-67" -> "JUNK-0047-FOO";  
    "KJ1B:B9:9C-PET-67" -> "JUNK-0049-FOO";  
    "PAN:KJ5E:7F:FF:FA" -> "JUNK-0PAN4-FOO";  
    "PAN:KJ5E:7F:FF:FA" -> "PSPAN-021-FRED";  
    "PAN:KJ5E:7F:FF:FA" -> "GEORGE38-FRED";  
    "PAN:KJ5E:7F:FF:FA" -> "JUNK-0095-FOO";  
    "PAN:KJ5E:7F:FF:FA" -> "JUNK-PAN18-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0PAN0-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0051-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0052-FOO";  
    "KJ1B:B9:9B:D3:61" -> "JUNK-0009-FOO";  
    "KJ26:18:BD:D9:E9" -> "JUNK-0562-FOO";  
    "KJ26:18:BD:D9:E9" -> "JUNK-0561-FOO";  
    "KJD0:B7:69:0A-VET" -> "cn4-06-FRED";  
    "KJD0:B7:69:0A-VET" -> "1039-FRED";  
} 

Bạn có thể xem và sửa đổi tại đây: http://graph.gafol.net/dLQGPHJRc - trang web này sử dụng các giá trị đặt trước tốt cho phông chữ và phông chữ.

Xin lưu ý rằng tôi đã thêm start=random, do đó bố cục có thể khác nhau mỗi khi bạn tạo biểu đồ.

+3

Nó hoạt động, nhưng bố cục không thực sự giải thích những gì đang xảy ra. Lấy khối lượng lớn ở giữa trái với nhiều đường chồng chéo. Có, đồ thị được đặt ra. Nhưng nó thực sự giúp bạn hiểu những gì đang xảy ra? --- PS --- MÀU Đ NP! – vy32

+0

Bạn đã thực hiện những thay đổi nào đối với tệp của mình để có được kết quả này. Khi tôi chạy qua graphviz, tôi có một cái gì đó mà không nhìn tốt. – vy32

+2

Thực ra tôi nghĩ đồ thị giải thích ít nhất 3 thứ một cách trực quan: Có hai loại nút. Có 8 nhóm nút khác nhau không được kết nối với nhau. Có 7 nhóm nhỏ, có một hoặc hai nút "hình bầu dục", và có một nhóm lớn hơn với một số nút "hình bầu dục". Tôi đồng ý rằng nhóm lớn có thể được đặt ra tốt hơn, giảm các cạnh chồng chéo - thử liên kết trong bài chỉnh sửa, tham số rand sẽ dẫn đến bố cục khác nhau mỗi lần, một số tốt hơn so với các phần khác. – marapet

33

Gephi là một phần mềm trực quan đồ thị mã nguồn mở đáng kinh ngạc. Nó sử dụng ngôn ngữ dấu chấm như GraphViz.

+7

Gephi rất trơn, nhưng đáng buồn là không hỗ trợ các biểu đồ con trong dấu chấm (và một số tính năng khác. Từ [Gephi docs] (https://gephi.org/users/supported-graph-formats/graphviz-dot-format/): "Gephi hiện không cung cấp hỗ trợ đầy đủ định dạng DOT. Các biểu đồ con không được hỗ trợ, cũng không phải thuộc tính hoặc kích thước tùy chỉnh. Chỉ nhãn và màu được nhập nếu có. Đồ thị được hướng và không được hỗ trợ." – Bonlenfum

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