Tôi đã sử dụng Sigma.js trong một hoặc hai tuần và nghĩ rằng có một số cách để thực hiện những gì bạn muốn. Tôi đã sử dụng phương pháp này để phân biệt các nút màu dựa trên các thuộc tính. Đoạn mã dưới đây được viết trên đỉnh đầu (nhầm lẫn) của tôi, do đó chưa được kiểm tra, nó có thể sai.
Cách thứ nhất là khi bạn đang đẩy các cạnh để bắt đầu xây dựng biểu đồ (Trong trường hợp của tôi đẩy xảy ra bằng cách lấy đối số JSON có chứa tất cả các nút và cạnh và bắt đầu phân tích chúng để tạo cá thể sigma của tôi). Điều này đi bằng cách tạo ra một chức năng mà có trong một điều kiện mà bạn muốn sử dụng để xác định xem đó là một dòng hoặc rải rác.
function determinetype(determinator){
if (determinator === "parent"){return "dotted"}
else if (determinator === "grandparent"){return "line"}
};
for (var i = 0; i<graph.edges.length; i++){
var edgetype = determinetype(graph.edges[i]["conditional_markup"]);
g.edges.push({
id:graph.edges[i]["id],
source: graph.edges[i]["source"],
target: graph.edges[i]["target"],
type: edgetype,
})
}
Cách thứ hai là lặp qua tất cả các cạnh của bạn sau khi được vẽ. Bạn lại muốn tạo một hàm nhận một đối số (bộ xác định) và trả về kiểu đường mà bạn muốn.
function get_type(determinator){
if (determinator === "parent"){return "dotted"}
else if (determinator === "grandparent"){return "line"}
};
s.graph.edges().forEach(function(edge){
edge.type = get_type(edge.conditional_markup);
});
Tôi hy vọng điều này sẽ hữu ích.
Nguồn
2017-11-20 15:37:49
Cảm ơn câu trả lời của bạn, nhưng tôi muốn có một cạnh vừa cong vừa chấm. Có lẽ cách duy nhất là viết lại plugin ... – rikpg