Макет Cytoscape для использования атрибутов узла в качестве координат? - PullRequest
0 голосов
/ 30 мая 2020

Есть ли способ использовать координаты x, y, хранящиеся в качестве атрибутов каждого узла, для компоновки графика с использованием координат, вычисленных другой программой?

А если нет, возможно ли это каким-то образом реализовать - как начать с этого?

Есть ли стандартный способ, как предоставить позиции узлов в cytoscape. js веб-просмотрщик каким-то образом?

Предпосылки: тривиально использовать Python networkx для расчета некоторых макетов, которые не поддерживаются в Cytoscape, и также было бы тривиально сохранить координаты как атрибуты узла. Все, что тогда потребуется, - это каким-то образом Cytoscape использовать эти координаты для поиска позиций узлов вместо использования алгоритма компоновки.

1 Ответ

2 голосов
/ 01 июня 2020

Это довольно просто сделать. Множество примеров использования этой функциональности в демонстрациях, как вы можете видеть здесь:

Как видите, в демонстрациях, но также и в документации есть множество примеров для этого. Вы можете увидеть один здесь и здесь :

// can use reference to eles later
var eles = cy.add([
  { group: 'nodes', data: { id: 'n0' }, position: { x: 100, y: 100 } },
  { group: 'nodes', data: { id: 'n1' }, position: { x: 200, y: 200 } },
  { group: 'edges', data: { id: 'e0', source: 'n0', target: 'n1' } }
]);

json, используемый в функции .add(), может быть создан в вашем приложении js или прямо в Python и добавлен на график, как это делают некоторые примеры.

В общем, вам следует потратить некоторое время и просмотреть документацию. Возможность позиционировать узлы через x и y довольно проста c и является одной из первых страниц в документации.

Если вы не понимаете описание в документации и примеры, которые я предоставил, отредактируйте свой вопрос и добавьте текущий код как минимальный воспроизводимый пример , где вы можете продемонстрировать свои усилия по реализации позиционирования.


Изменить:

Как указал @maxkfranz, здесь большую роль играет предустановленный макет . В документации это указано в главе Инициализация :

  • Если вы хотите самостоятельно указать позиции своих узлов в своих элементах JSON, вы можете использовать предустановленный макет - по умолчанию он не устанавливает никаких позиций, оставляя ваши узлы в их текущих положениях (т.е. указанных в options.elements во время инициализации) .`
...