当前位置:首页 > 行业动态 > 正文

如何使用Cytoscape.js创建交互式网络图实例?

Cytoscape.js 是一个用于可视化和分析网络的 JavaScript 图形库,提供丰富功能与灵活 API,可创建交互式、可定制的网络图。

Cytoscape.js 是一个开源的图可视化库,用于在 Web 页面上展示交互式的图形网络,它提供了丰富的功能和灵活的 API,使得开发者可以轻松地创建、操作和分析复杂的图形结构,下面将通过一个实例来详细介绍如何使用 Cytoscape.js 创建一个基本的图形可视化应用。

实例:使用 Cytoscape.js 创建一个简单的社交网络图

引入 Cytoscape.js 库

在你的 HTML 文件中引入 Cytoscape.js 的核心库和样式文件,你可以通过 CDN 引入:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Cytoscape.js Example</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.20.0/cytoscape.min.js"></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.20.0/cytoscape.min.css">
</head>
<body>
    <div id="cy"></div>
    <script>
        // JavaScript code will go here
    </script>
</body>
</html>

初始化 Cytoscape 容器

<script> 标签中,首先获取页面中的容器元素,并初始化 Cytoscape 实例:

var cy = cytoscape({
    container: document.getElementById('cy'), // 容器元素
    elements: [ // 初始元素集合
        { data: { id: 'a', label: 'Node A' } },
        { data: { id: 'b', label: 'Node B' } },
        { data: { id: 'c', label: 'Node C' } },
        { data: { id: 'ab', source: 'a', target: 'b' } },
        { data: { id: 'bc', source: 'b', target: 'c' } },
        { data: { id: 'ca', source: 'c', target: 'a' } }
    ],
    style: [ // 样式配置
        {
            selector: 'node',
            style: {
                'background-color': '#666',
                'label': 'data(label)'
            }
        },
        {
            selector: 'edge',
            style: {
                'width': 3,
                'line-color': '#ccc',
                'target-arrow-color': '#ccc',
                'target-arrow-shape': 'triangle'
            }
        }
    ],
    layout: {
        name: 'grid'
    }
});

添加交互功能

为了使图形具有交互性,可以添加事件监听器,例如点击节点时显示详细信息:

cy.on('tap', 'node', function(evt){
    var node = evt.target;
    var popupText = `ID: ${node.id()}
Label: ${node.data('label')}`;
    var popup = node.popper({
        content: popupText,
        gravity: 'top',
        padding: 10,
        backgroundColor: '#f7f7f7',
        boxShadow: '0px 2px 15px -5px rgba(0,0,0,0.4)'
    });
    node.popperRef().show();
});

完整代码示例

以下是完整的 HTML 和 JavaScript 代码示例:

如何使用Cytoscape.js创建交互式网络图实例?

| 部分 | 代码 |

| –| –|

| HTML | “html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Cytoscape.js Example</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.20.0/cytoscape.min.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/cytoscape/3.20.0/cytoscape.min.css"> </head> <body> <div id="cy"></div> <script> var cy = cytoscape({ container: document.getElementById('cy'), elements: [ { data: { id: 'a', label: 'Node A' } }, { data: { id: 'b', label: 'Node B' } }, { data: { id: 'c', label: 'Node C' } }, { data: { id: 'ab', source: 'a', target: 'b' } }, { data: { id: 'bc', source: 'b', target: 'c' } }, { data: { id: 'ca', source: 'c', target: 'a' } ] }, style: [ { selector: 'node', style: { 'background-color': '#666', 'label': 'data(label)' } }, { selector: 'edge', style: { 'width': 3, 'line-color': '#ccc', 'target-arrow-color': '#ccc', 'target-arrow-shape': 'triangle' } } ], layout: { name: 'grid' } }); cy.on('tap', 'node', function(evt){ var node = evt.target; var popupText =ID: ${node.id()}

Label: ${node.data(‘label’)}; var popup = node.popper({ content: popupText, gravity: 'top', padding: 10, backgroundColor: '#f7f7f7', boxShadow: '0px 2px 15px -5px rgba(0,0,0,0.4)' }); node.popperRef().show(); }); </script> </body> </html>

如何使用Cytoscape.js创建交互式网络图实例?

相关问答FAQs

Q1: Cytoscape.js 支持哪些布局算法?

A1: Cytoscape.js 支持多种布局算法,包括但不限于 grid(网格)、random(随机)、circle(圆形)、cose(压缩弹簧嵌入)、dagre(有向无环图)等,你可以在layout 配置选项中指定所需的布局算法。

Q2: 如何在 Cytoscape.js 中动态添加或删除节点和边?

A2: 你可以使用 Cytoscape 实例的addremove 方法来动态添加或删除节点和边,要添加一个新的节点,可以使用以下代码:

如何使用Cytoscape.js创建交互式网络图实例?

cy.add([
    { data: { id: 'd', label: 'Node D' } }
]);

要删除一个节点,可以使用以下代码:

cy.remove('#d');

类似地,你可以使用cy.addcy.remove 方法来添加或删除边。

小编有话说

Cytoscape.js 是一个非常强大的图形可视化工具,适用于各种领域,如社交网络分析、生物信息学、知识图谱等,通过本文的实例,你应该对如何使用 Cytoscape.js 创建基本的图形可视化有了初步的了解,如果你有更复杂的需求,建议查阅官方文档,以获取更多高级功能和配置选项。