2011-07-29 40 views
9

Tôi có tập dữ liệu được biểu thị tốt nhất bằng biểu đồ. Nó bao gồm các nút của 6 hoặc 7 loại "khác nhau" với các cạnh được chỉ đạo (phụ thuộc vào nhau, được bảo đảm không có phụ thuộc tuần hoàn). Bộ dữ liệu về cơ bản là một mẫu của một cấu hình phân lớp và người dùng cần có khả năng chọn các bit và phần của cấu hình từ các lớp khác nhau được mong muốn và có các bit phụ thuộc được đưa vào tự động. Nhu cầu giao diện người dùng chung là để người dùng chọn hoặc bỏ chọn các mục từ hộp chọn nhiều (một hộp như vậy cho từng loại nút) và có các mục "phụ thuộc vào" trong các hộp khác sẽ được chọn hoặc không được chọn khi cần thiết. Tôi cần để có thể kéo xuống tập dữ liệu từ máy chủ, cho phép người dùng chọn các bit mong muốn (với xử lý phụ thuộc đang được thực hiện trong javascript ở phía máy khách để đáp ứng), và sau đó gửi kết quả trở lại khi chúng được hoàn tất.Thư viện biểu đồ dạng vòng tròn hướng Javascript? (Hiển thị đồ thị là KHÔNG cần thiết)

Tập dữ liệu đủ lớn và phức tạp thực sự hiển thị nó dưới dạng biểu đồ sẽ quá tải và gây nhầm lẫn cho người dùng. Chỉ có các thao tác truyền tải đồ thị cơ bản là cần thiết, vì tất cả những gì cần thiết là xếp tầng các lựa chọn ra khỏi các phụ thuộc. (Ví dụ, một người dùng bỏ chọn một nút sẽ dẫn đến việc các nút phụ thuộc không được chọn nếu không có nút nào khác được chọn vẫn phụ thuộc vào chúng. Một người dùng chọn một nút sẽ dẫn đến tất cả các phụ thuộc của nút đó được chọn.) A độ sâu đơn giản hoặc chiều rộng tìm kiếm đầu tiên sau các cạnh được chỉ đạo từ nút bắt đầu sẽ đủ để truy cập tất cả các nút bị ảnh hưởng. Nếu tôi có thể làm theo các cạnh hoặc hướng, tiền thưởng. (Nếu không, tôi có thể dễ dàng tạo biểu đồ đảo ngược cạnh và sử dụng biểu đồ đó khi cần.)

Tôi đã tìm hiểu về một số thư viện trực quan đồ thị javascript, nhưng hầu hết các cuộc thảo luận này có vẻ giải thích " biểu đồ "dưới dạng biểu đồ" và tôi không có nhu cầu biểu đồ ở đây. Việc đào bới của tôi đã dẫn tôi đến danh sách này: Raphael, protovis, flare, D3, jsVis, Dracula và prefuse. Từ danh sách này có vẻ như jsVis hoặc Dracula có thể có các cấu trúc đồ thị cơ bản mà tôi cần nếu tôi chỉ bỏ qua phía trực quan hóa, nhưng nó không rõ ràng với tôi từ tài liệu nếu đó là trường hợp. Tôi phải loại trừ một vài người khác vì tôi không thể mang bất kỳ phụ thuộc flash nào. Thật không may tôi không có thời gian để thử nghiệm những thứ với nhiều thư viện này. (Tôi sẽ đào sâu vào jsVis và dracula nhiều hơn, chặn một số đầu vào tiện dụng ở đây.)

Nếu bất kỳ ai có kinh nghiệm với một cái gì đó từ danh sách đó và tin rằng phần đồ thị của nó có thể được sử dụng độc lập với phần trực quan, chắc chắn sẽ đáp ứng nhu cầu của tôi. Nếu có một số thư viện khác tôi có thể sử dụng đáp ứng nhu cầu của tôi, điều đó cũng sẽ rất tuyệt. Một yêu cầu cuối cùng về cấp phép: thư viện cần phải "miễn phí" theo cách không copyleft - Vì vậy, lý tưởng là Apache v2.0, BSD, MIT, hoặc một cái gì đó tương tự.

+1

Bạn đã kết thúc triển khai giải pháp của riêng mình chưa? Nếu vậy, nó có sẵn ở bất cứ đâu không? – steeveeet

Trả lời

7

Tôi chưa sử dụng, nhưng bạn có thể muốn xem data.js. Nó là một thư viện được cấp phép bởi MIT với một loạt các tiện ích cấu trúc dữ liệu. Cụ thể, nó bao gồm Data.NodeData.Graph:

Một Data.Graph có thể được sử dụng để biểu diễn các biểu đồ đối tượng phức tạp tùy ý. Mối quan hệ giữa các đối tượng được thể hiện thông qua các liên kết trỏ đến các đối tượng được giới thiệu. Data.Graphs có thể được di chuyển theo nhiều cách khác nhau.

+0

Cảm ơn, tôi đã dành một chút thời gian sáng nay để xem xét điều này và tôi không chắc nó sẽ thực sự làm những gì tôi cần. Nó rất nhẹ về tài liệu và ví dụ muốn tôi chạy CouchDB và node.js. Vì tất cả những gì tôi thực sự cần là việc duyệt cây đơn giản, tôi nghĩ rằng mình có thể tự cuộn, nhưng nếu tôi sử dụng data.js, tôi sẽ quay lại và đánh dấu câu trả lời này là câu trả lời. –

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