Tôi đã gặp phải những mối quan tâm tương tự cách đây một thời gian. Các giải pháp cuối cùng tôi đến với là một thư viện js ít hoàn toàn đã làm các trick, cụ thể là Dracula.
Dưới đây là một liên kết đến các thư viện: https://github.com/strathausen/dracula
Xét nhu cầu của bạn, tất cả các bạn sẽ phải làm một cái gì đó như:
var g = new Graph();
g.addEdge('author', 'create');
g.addEdge('author', 'reader');
g.addEdge('author', 'admin');
// add here the other edges.
var layouter = new Graph.Layout.Spring();
layouter.layout();
var renderer = new Graph.Renderer.Raphael('#canvas', g, 400, 300);
renderer.draw();
Để biết thêm infos, tôi sẽ cho bạn phải vật lộn với tài liệu.
Hy vọng điều đó sẽ hữu ích.
[PHỤ LỤC]
Tôi muốn nói thêm rằng, nói chung, các vấn đề của hiển thị các nút mũi tên và không phải là một vấn đề lớn, sử dụng svg làm cho nó gần tầm thường. Nhưng mọi thứ trở nên phức tạp khi bạn muốn tổ chức hiển thị các nút với các quy tắc như "cố gắng giảm thiểu số cạnh vượt qua", "hiển thị trẻ em bên dưới bố mẹ", v.v. tất cả đều cần toán học phức tạp.
Tôi không nghĩ rằng Dracula cho phép người ta tùy chỉnh loại quy tắc đó. Tuy nhiên, xem xét bình luận của bạn, tôi nghĩ rằng có thể có một cách không quá phức tạp để làm cho bố trí trông giống như cây dọc, vì nó là một biểu đồ tuần hoàn (ít nhất, nó có vẻ là). Nhưng sau đó bạn sẽ phải đi qua việc tạo ra các thư viện của riêng bạn cho việc này.
Bạn có thể thử dùng gói lê không? –
Bạn cũng có thể sử dụng http://sigmajs.org/ library quá –