Trên d3 Sankey Diagram page của mình, Mike Bostock nói "Thuật toán có thể được cải thiện trong tương lai, để giảm thiểu sự liên kết".D3 Sankey giảm thiểu liên kết băng qua
Tôi muốn đầu tư một thời gian và làm điều đó, nhưng tôi không chắc chắn đã bắt đầu. Có ai có bất kỳ đề xuất hoặc ý tưởng như thế nào để đạt được điều này?
Trực giác của tôi là thư giãn lặp lại được áp dụng trên các nút để giảm thiểu khoảng cách liên kết cũng có thể được sử dụng để định vị lại các nút tương tự để giảm thiểu liên kết chéo. Tôi thực sự cần phải 'trải ra' các nút theo chiều dọc ngay cả trong các tình huống mà chỉ có một nút cho mỗi vị trí x, theo cách mà các liên kết giao cắt được giảm mạnh (nó không cần phải là một học thuật- kết quả cấp, một kết quả thực tế, tốt hơn so với kết quả hiện tại sẽ đủ)
là một điểm khởi đầu ngay từ đầu:
function getData() {
return {
"nodes": [{
"node": 0,
"name": "Name0"
}, {
"node": 1,
"name": "Name1"
}, {
"node": 2,
"name": "Action2"
}, {
"node": 3,
"name": "Name3"
}, {
"node": 4,
"name": "Name4"
}, {
"node": 5,
"name": "Action5"
}, {
"node": 6,
"name": "Action6"
}, {
"node": 7,
"name": "Action7"
}, {
"node": 8,
"name": "Action8"
}],
"links": [{
"source": 0,
"target": 6,
"value": 25,
"id": "name0"
}, {
"source": 1,
"target": 2,
"value": 25,
"id": "Name1"
}, {
"source": 2,
"target": 5,
"value": 25,
"id": "Name1"
}, {
"source": 3,
"target": 6,
"value": 25,
"id": "Name3"
}, {
"source": 6,
"target": 7,
"value": 25,
"id": "name0"
}, {
"source": 4,
"target": 7,
"value": 25,
"id": "Name4"
}, {
"source": 5,
"target": 7,
"value": 25,
"id": "Name1"
}, {
"source": 6,
"target": 7,
"value": 25,
"id": "Name3",
}, {
"source": 7,
"target": 8,
"value": 25,
"id": "Name3"
}]
};
}
Tôi tin rằng đây là một biến thể của giảm thiểu cạnh vượt qua đối với biểu đồ hai bên. Câu hỏi này có thể cung cấp cho bạn một số ý tưởng: http://stackoverflow.com/questions/20107645/minimizing-number-of-crossings-in-a-bipartite-graph. Các nút trong các lớp lân cận tạo thành một biểu đồ hai bên và bạn có thể giải quyết vấn đề qua biên từ lớp này sang lớp khác. Có một số phức tạp thêm vào trong Sankey mặc dù kể từ khi kết nối có thể "vượt qua" một lớp (như trong ví dụ của Mike Bostock). –