Cytoscape.js объедините несколько краев в один (более толстый) край

#cytoscape.js #cytoscape

Вопрос:

Я использую cytoscape.js 3.19.1 и я не могу понять, как объединить несколько ребер в одно и увеличить вес этого одного ребра.

Текущий вид

Сейчас я ищу решение, в котором 2 ребра объединяются в одно шириной 2, 3 ребра объединяются в одно шириной 3 и т. Д.

Я меняю цвет узлов с помощью этого кода:

 style: [
        {
            selector: 'node',
            css: {
                'content': 'data(name)',
                'text-outline-color': 'red',
            },
            style: {
                'background-color': 'data(color)',
                'label': 'data(name)',
                'color': "white",
            }
        },
        {
            selector: 'edge',
            css: {
                'curve-style': 'bezier',
                'target-arrow-shape': 'triangle'
            }
        }
    ],
 

и этот ввод цитоскейпа работает: {‘узлы’: [{‘данные’: {‘идентификатор’: ‘1464848862’, ‘имя’: ‘мое имя‘, ‘цвет’: ‘#FFA00F’}}….

Теперь я мог бы сделать то же самое для ширины линии, но я бы предпочел не просматривать данные «вручную», чтобы выяснить, какие 2 узла подключаются, как часто это происходит, определить, какой толщины должны быть эти линии, а затем удалить все дубликаты, которые больше не нужно рисовать.

Есть ли какой-нибудь другой способ?

Большое спасибо за любые предложения!

Ответ №1:

На самом деле, вы могли бы добиться этого, используя несколько разных стилей по краям. «стог сена» или «прямой» могут быть полезны. Проверьте их https://js.cytoscape.org/demos/edge-types/

Или вы могли бы использовать https://github.com/iVis-at-Bilkent/cytoscape.js-expand-collapse

Проверьте его демонстрационную версию и сверните края.

Комментарии:

1. Спасибо канбакс — это отличная информация. Оба подхода выглядят так, как будто они могут сработать, и я попробую их обоих, чтобы понять, что сработает лучше всего. Ура !