Вы пробовали concentric
варианты компоновки в ширину первого? По умолчанию ширина вначале дает пирамидный макет, но вы можете указать круговой макет.
Например:
var cy = cytoscape({
container: document.getElementById('cy'),
elements: {
nodes: [
{ data: { id: 'a' } },
{ data: { id: 'b' } },
{ data: { id: 'c' } },
{ data: { id: 'd' } },
{ data: { id: 'e' } }
],
edges: [
{ data: { id: 'ae', weight: 1, source: 'a', target: 'e' } },
{ data: { id: 'ab', weight: 3, source: 'a', target: 'b' } },
{ data: { id: 'be', weight: 4, source: 'b', target: 'e' } },
{ data: { id: 'bc', weight: 5, source: 'b', target: 'c' } },
{ data: { id: 'ce', weight: 6, source: 'c', target: 'e' } },
{ data: { id: 'cd', weight: 2, source: 'c', target: 'd' } },
{ data: { id: 'de', weight: 7, source: 'd', target: 'e' } }
]
},
layout: {
name: 'breadthfirst',
circle: true,
root: 'a',
},
});
См https://jsfiddle.net/josephst18/kznos1x9/2/ для остальной части моего кода.
Кто-то также сделал PR с макетами, основанными на 'широте ', который имеет круговые функции для DAG. @JALO - JusAnotherLivngOrganism было бы здорово, если бы вы могли взглянуть на макеты, которые этот парень сделал, и, возможно, объединить эти изменения в макет 'widththirst 'в качестве запроса на перенос: https://github.com/cytoscape/ cytoscape.js/pull/1617 Парень, который сделал этот PR, не сделал надлежащего PR, а просто добавил в текстовые файлы свои макеты, и у меня нет времени на просмотр его файлов. – maxkfranz