2011-10-07 21 views
5

Khi tạo một biểu đồ Arbor JS tầm thường với một nút duy nhất, nút này rung quanh khắp nơi và không thể thêm nút nào khác.Lỗi nút đơn trong Arbor.JS

Vấn đề cũng được báo cáo ở đây bởi người dùng khác:

https://github.com/samizdatco/arbor/issues/12

Sẽ đánh giá cao sự giúp đỡ của bạn với một sửa chữa/workaround

+0

Vì điều này tôi đã chuyển đến thư viện d3.js [link] (http://mbostock.github.com/d3/), đây là một giải pháp thay thế tuyệt vời. –

+0

Vấn đề dường như cũng xuất hiện trong các trường hợp khác khi có nhiều nút hơn. Ví dụ tôi đã có khoảng 30 nút kết nối với một nút trung tâm và nút trung tâm đó bắt đầu nảy ra xung quanh cũng như – user579674

Trả lời

2

Sử dụng thư viện d3.js thay vì Arbor đã giải quyết được vấn đề của tôi :-)

+0

bạn có thể xác định lại việc vẽ lại không? như bạn có thể với arbor? Tôi cần để có thể sử dụng các phần tử DOM cho các nút của tôi, thay vì các hình dạng được hiển thị. = \ – NullVoxPopuli

2

Nó không thực sự là một sửa chữa nhưng tôi đếm số lượng các nút và nếu nhỏ hơn tôi đặt ma sát thành 1.0

if (nodeCount == 1) { 
    //Stop single nodes bouncing all over the place 
    sys.parameters({ friction: '1.0' }); 
} 
+0

Làm thế nào để bạn đếm chính xác các nút? Tôi đã cố gắng để đếm chúng nhưng tôi không thể tìm cách để làm điều đó bên ngoài tập tin arbor.js vì có vẻ như tôi không thể truy cập vào mảng nút. – user579674

1

Tùy chọn khác là thay thế tệp physics.js bằng this một. Nó có một số sửa chữa để bù đắp cho các vấn đề xung quanh có một nút duy nhất (bao gồm các vấn đề thêm một thứ hai).

0

thử này

if (nodeCount == 1) { 
 
      sys.parameters({ repulsion: 10, gravity: false, dt: 0.035 }) 
 
     } 
 
     else if (nodeCount > 1 && nodeCount < 30) { 
 
      sys.parameters({ repulsion: 1000, gravity: false, dt: 0.35 }) 
 
     } 
 
     else { 
 
      sys.parameters({ friction: .1, stiffness: 0.1, repulsion: 1, gravity: false, dt: 0.035 }) 
 
     }

2

Chúng tôi sử dụng một giải pháp workaround cho việc này. Nó có thể nhiều hơn một hack hơn là một giải pháp hoàn chỉnh, nhưng nó dễ dàng để thực hiện và hoạt động tốt cho hầu hết các trường hợp.

Điều chúng tôi làm là xác định số lượng hạt trong hệ thống mỗi khi một hạt được thêm vào hoặc bị loại bỏ. Nếu số này bằng một, chúng ta thêm một hạt mới trong hệ thống, với màu của nó được đặt thành màu nền vải nền. Vì màu của nút giống với màu nền của nút, nó không hiển thị.

Vì vậy, tại thời điểm không có nút nào trong biểu đồ. Bất cứ khi nào điều đó xảy ra do thêm hoặc xóa, chúng tôi thêm nút cân bằng ẩn này. Bạn có thể xem trang web của chúng tôi để xem ví dụ trực tiếp về các thông tin trên: http://www.graphthinker.com. Khi bạn thêm các nút, bạn có thể thấy rằng biểu đồ tiếp tục đáp ứng ngay cả khi nó chỉ có một nút (có thể nhìn thấy) duy nhất.

Nút cân bằng ẩn này có thể bị xóa khi không còn cần đến, giả sử khi nút khác được thêm hoặc khi nút hiển thị duy nhất bị xóa.

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