nodejs23: 图数据绘制库(知识图谱可视化) Cytoscape.js

网络图库Cytoscape.js的使用(三):扩展 阅读详情
AI摘要

本文介绍了Cytoscape.js,一个轻量级的图网络绘制库,适用于知识图谱、社交网络分析等场景。内容涵盖其核心特点、交互功能、常见布局算法及动态展开功能,并通过多个示例演示了如何实现节点与边的渲染、样式设置、事件绑定以及布局配置,帮助开发者快速上手图数据可视化。

Cytoscape.js简介

  • 历史:Cytoscape 创建于多伦多大学并发表在牛津生物信息学(2016 年、2023 年)。

  • Cytoscape 和 Cytoscape.js :从长远来看,Cytoscape 和 Cytoscape.js 将集成得更加紧密。Cytoscape 现在支持读写 Cytoscape.js 的网络和表 JSON 文件。另外,Cytoscape 可以将样式转换为 Cytoscape.js 的样式对象。来源。

  • 特点:轻量级的图网络库,专为绘制复杂的网络图而设计,支持节点和边的可视化。

  • 交互功能:内置放缩、平移、拖动、点击交互、选择节点等功能。还支持复杂的样式和动画效果。

  • 适用场景:知识图谱、社交网络分析、生物网络可视化等。

  • 优点:开箱即用,功能强大,支持多种布局算法(如力导向布局、同心圆布局)。

  • 官网:Cytoscape.js
    在这里插入图片描述

  • 以下是 Cytoscape 支持的常用布局:

布局名称特点常用参数适用场景
Grid网格状排列节点rows, cols规则分布的图表
Circle节点排列成圆形radius, startAngle, endAngle环形关系、闭环网络
Concentric同心圆排列,按节点属性分层minNodeSpacing, levelWidth分层结构、中心-外围关系图
Breadthfirst基于广度优先搜索的层次布局root, spacingFactor, directed树形结构、层次关系图
DagreDAG(有向无环图)布局rankDir, nodeSep, rankSep流程图、依赖关系图
Cose力导向布局,基于物理力学模型idealEdgeLength, nodeRepulsion, gravity复杂网络、社交关系图
Klay层次化布局(需要插件)direction, spacing, edgeSpacingFactor大型有向图、流程图

简单示例代码

运行效果

在这里插入图片描述

  • Cytoscape 实例:
    • containerRef 用于引用 <div> 容器。
    • cytoscape() 函数初始化 Cytoscape 实例,并设置容器、节点和边、样式、以及布局。
    • elements 定义了 4 个节点(A, B, C, D)和 4 条边。
  • 样式:
    • 节点( selector: ‘node’):蓝色背景、白色标签、圆形节点。
    • 边(selector: ‘edge’):灰色线条,带箭头的曲线。
  • 布局:使用 grid 布局自动排列节点。

完整代码

  • 在项目中安装 cytoscape:
npm install cytoscape
import React, { useEffect, useRef } from 'react';
import cytoscape from 'cytoscape';

const CytoscapeExample = () => {
    const containerRef = useRef(null);

    useEffect(() => {
        // 初始化 Cytoscape 实例
        const cy = cytoscape({
            container: containerRef.current, // 绑定容器
            elements: [
                // 定义节点
                { data: { id: 'A', label: 'Node A' } },
                { data: { id: 'B', label: 'Node B' } },
                { data: { id: 'C', label: 'Node C' } },
                { data: { id: 'D', label: 'Node D' } },
                // 定义边
                { data: { source: 'A', target: 'B' } },
                { data: { source: 'A', target: 'C' } },
                { data: { source: 'B', target: 'D' } },
                { data: { source: 'C', target: 'D' } }
            ],
            style: [
                {
                    selector: 'node',
                    style: {
                       // 'shape': 'rectangle', // 设置节点为方形
                        'background-color': '#007bff',
                        'label': 'data(label)',
                        'color': '#fff',
                        'text-valign': 'center',
                        'text-halign': 'center',
                        'width': 50,
                        'height': 50,
                        'font-size': '12px',
                        'border-width': 2,
                        'border-color': '#0056b3'
                    }
                },
                {
                    selector: 'edge',
                    style: {
                        'width': 2,
                        'line-color': '#999',
                        'target-arrow-shape': 'triangle',
                        'target-arrow-color': '#999',
                        'curve-style': 'bezier'
                    }
                }
            ],
            layout: {
                name: 'grid', // 使用网格布局
                rows: 2
            }
        });

        // 清理 Cytoscape 实例
        return () => {
            cy.destroy();
        };
    }, []);

    return (
        <div 
            ref={containerRef} 
            style={{ width: '100%', height: '500px', backgroundColor: '#f8f9fa' }} 
        />
    );
};

export default CytoscapeExample;

显示节点其他信息+点击事件

运行效果

  • 节点属性:为每个节点添加了 ip、port、status 等属性。
  • Tooltip 功能:
    • 创建一个 div 元素作为 Tooltip。
    • 监听 mouseover 事件来显示节点的属性。
    • 监听 mousemove 事件调整 Tooltip 位置,使其跟随鼠标。
    • 监听 mouseout 事件隐藏 Tooltip。

在这里插入图片描述

完整代码

import React, { useEffect, useRef } from 'react';
import cytoscape from 'cytoscape';

const CytoscapeExample = () => {
    const containerRef = useRef(null);

    useEffect(() => {
        // 初始化 Cytoscape 实例
        const cy = cytoscape({
            container: containerRef.current, // 绑定容器
            elements: [
                // 定义节点,包含更多属性
                { data: { id: 'A', label: 'Node A', ip: '192.168.0.1', port: 8080, status: 'online' } },
                { data: { id: 'B', label: 'Node B', ip: '192.168.0.2', port: 8081, status: 'offline' } },
                { data: { id: 'C', label: 'Node C', ip: '192.168.0.3', port: 8082, status: 'online' } },
                { data: { id: 'D', label: 'Node D', ip: '192.168.0.4', port: 8083, status: 'online' } },
                // 定义边
                { data: { source: 'A', target: 'B' } },
                { data: { source: 'A', target: 'C' } },
                { data: { source: 'B', target: 'D' } },
                { data: { source: 'C', target: 'D' } }
            ],
            style: [
                {
                    selector: 'node',
                    style: {
                        'background-color': '#007bff',
                        'label': 'data(label)',
                        'color': '#fff',
                        'text-valign': 'center',
                        'text-halign': 'center',
                        'width': 50,
                        'height': 50,
                        'font-size': '12px',
                        'border-width': 2,
                        'border-color': '#0056b3'
                    }
                },
                {
                    selector: 'edge',
                    style: {
                        'width': 2,
                        'line-color': '#999',
                        'target-arrow-shape': 'triangle',
                        'target-arrow-color': '#999',
                        'curve-style': 'bezier'
                    }
                }
            ],
            layout: {
                name: 'grid', // 使用网格布局
                rows: 2
            }
        });

        // 添加 Tooltip 功能
        const tooltip = document.createElement('div');
        tooltip.style.position = 'absolute';
        tooltip.style.padding = '8px';
        tooltip.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
        tooltip.style.color = '#fff';
        tooltip.style.borderRadius = '4px';
        tooltip.style.fontSize = '12px';
        tooltip.style.display = 'none';
        tooltip.style.pointerEvents = 'none';
        document.body.appendChild(tooltip);

        // 节点鼠标悬停事件
        cy.on('mouseover', 'node', (event) => {
            const node = event.target;
            const { label, ip, port, status } = node.data();

            // 设置 Tooltip 内容
            tooltip.innerHTML = `
                <strong>${label}</strong><br/>
                IP: ${ip}<br/>
                Port: ${port}<br/>
                Status: ${status}
            `;
            tooltip.style.display = 'block';
        });

        // 鼠标移动时调整 Tooltip 位置
        cy.on('mousemove', (event) => {
            tooltip.style.left = `${event.renderedPosition.x + 15}px`;
            tooltip.style.top = `${event.renderedPosition.y + 15}px`;
        });

        // 鼠标离开节点时隐藏 Tooltip
        cy.on('mouseout', 'node', () => {
            tooltip.style.display = 'none';
        });

        // 节点点击事件( on('click')或on('tap') ),弹出详细信息 https://js.cytoscape.org/#eles.on
        cy.on('click', 'node', (event) => {
            const node = event.target;
            const { id, label, ip, port, status } = node.data();
            alert(`节点详细信息:
                ID: ${id}
                Label: ${label}
                IP: ${ip}
                Port: ${port}
                Status: ${status}`);
        });


        // 清理 Cytoscape 实例和 Tooltip
        return () => {
            cy.destroy();
            document.body.removeChild(tooltip);
        };
    }, []);

    return (
        <div
            ref={containerRef}
            style={{ width: '100%', height: '500px', backgroundColor: '#f8f9fa' }}
        />
    );
};

export default CytoscapeExample;

cytoscape-dagre布局

  • Dagre 布局是一种基于有向无环图(DAG)的布局算法,适合展示流程图和层次关系的图形。

运行效果

在这里插入图片描述

完整代码

  • npm i cytoscape-dagre
import React, { useEffect, useRef } from 'react';
import cytoscape from 'cytoscape';
import dagre from 'cytoscape-dagre';

cytoscape.use(dagre); // 注册 dagre 插件

const CytoscapeDagreExample = () => {
    const containerRef = useRef(null);

    useEffect(() => {
        const cy = cytoscape({
            container: containerRef.current, 
            elements: [
                { data: { id: 'A', label: 'Node A' } },
                { data: { id: 'B', label: 'Node B' } },
                { data: { id: 'C', label: 'Node C' } },
                { data: { id: 'D', label: 'Node D' } },
                { data: { id: 'E', label: 'Node E' } },
                { data: { id: 'F', label: 'Node F' } },
                { data: { source: 'A', target: 'B' } },
                { data: { source: 'A', target: 'C' } },
                { data: { source: 'B', target: 'D' } },
                { data: { source: 'C', target: 'E' } },
                { data: { source: 'D', target: 'F' } },
                { data: { source: 'E', target: 'F' } }
            ],
            style: [
                {
                    selector: 'node',
                    style: {
                        'background-color': '#007bff',
                        'label': 'data(label)',
                        'color': '#fff',
                        'text-valign': 'center',
                        'text-halign': 'center',
                        'width': 50,
                        'height': 50,
                        'font-size': '12px',
                        'border-width': 2,
                        'border-color': '#0056b3'
                    }
                },
                {
                    selector: 'edge',
                    style: {
                        'width': 2,
                        'line-color': '#999',
                        'target-arrow-shape': 'triangle',
                        'target-arrow-color': '#999',
                        'curve-style': 'bezier'
                    }
                }
            ],
            layout: {
                name: 'dagre', // 使用 dagre 布局
                rankDir: 'TB', // 排列方向:从上到下 (Top to Bottom)
                align: 'DR',
                nodeSep: 50, // 节点间距
                edgeSep: 10, // 边间距
                rankSep: 50 // 层级间距
            }
        });

        return () => cy.destroy();
    }, []);

    return (
        <div 
            ref={containerRef} 
            style={{ width: '100%', height: '500px', backgroundColor: '#f8f9fa' }} 
        />
    );
};

export default CytoscapeDagreExample;

支持动态展开

运行效果

在这里插入图片描述

完整代码

import React, { useEffect, useRef } from 'react';
import cytoscape from 'cytoscape';
import dagre from 'cytoscape-dagre';

// 注册 dagre 布局插件
cytoscape.use(dagre);

const CytoscapeTree = () => {
    const cyRef = useRef(null);
    const containerRef = useRef(null);

    // 生成子节点的函数,确保没有循环
    const createChildNodes = (parentId, count) => {
        const existingNodes = cyRef.current.nodes().map(node => node.id());
        const nodes = [];
        const edges = [];

        for (let i = 0; i < count; i++) {
            const nodeId = `${parentId}-${i}`;
            if (!existingNodes.includes(nodeId)) {
                const randomValue = Math.floor(Math.random() * 100);
                nodes.push({
                    data: {
                        id: nodeId,
                        label: randomValue.toString(),
                        expanded: false,
                        hasChildren: true
                    }
                });
                edges.push({
                    data: {
                        id: `edge-${parentId}-${nodeId}`,
                        source: parentId,
                        target: nodeId
                    }
                });
            }
        }
        return { nodes, edges };
    };

    useEffect(() => {
        // 初始化 Cytoscape
        cyRef.current = cytoscape({
            container: containerRef.current,
            elements: {
                nodes: [{
                    data: {
                        id: 'root',
                        label: Math.floor(Math.random() * 100).toString(),
                        expanded: false,
                        hasChildren: true
                    }
                }],
                edges: []
            },
            style: [
                {
                    selector: 'node',
                    style: {
                        'background-color': '#007bff',
                        'label': 'data(label)',
                        'width': 40,
                        'height': 40,
                        'text-valign': 'center',
                        'text-halign': 'center',
                        'font-size': '14px',
                        'color': '#fff',
                        'border-width': 2,
                        'border-color': '#0056b3'
                    }
                },
                {
                    selector: 'edge',
                    style: {
                        'width': 2,
                        'line-color': '#999',
                        'curve-style': 'bezier',
                        'target-arrow-shape': 'triangle',
                        'target-arrow-color': '#999',
                        'arrow-scale': 1.2
                    }
                },
            ],
            layout: {
                name: 'dagre',
                rankDir: 'TB',
                spacingFactor: 1.2,
                animate: true,
                animationDuration: 500
            }
        });

        // 处理节点点击事件
        cyRef.current.on('tap', 'node', function (evt) {
            const node = evt.target;
            const nodeId = node.id();
            const isExpanded = node.data('expanded');

            if (!isExpanded) {
                // 展开节点
                const { nodes, edges } = createChildNodes(nodeId, Math.floor(Math.random() * 3) + 1);
                cyRef.current.add([...nodes, ...edges]);
                node.data('expanded', true);
            } else {
                // 折叠节点:移除所有子节点及其后代
                const descendants = node.successors();
                cyRef.current.remove(descendants);
                node.data('expanded', false);
            }

            // 重新布局,确保图形是有向无环的
            cyRef.current.layout({
                name: 'dagre',
                rankDir: 'TB',
                spacingFactor: 1.2,
                animate: true,
                animationDuration: 500
            }).run();
        });

        // 清理函数
        return () => {
            if (cyRef.current) {
                cyRef.current.destroy();
            }
        };
    }, []);

    return (
        <div
            ref={containerRef}
            style={{
                width: '100%',
                height: '100vh',
                backgroundColor: '#f8f8f8'
            }}
        />
    );
};

export default CytoscapeTree;
何在 Vue3 中使用 Cytoscape.js 创建交互式网络图 Cytoscape.js是一个用于可视化复杂网络数据的JavaScript库。它提供了丰富的功能,包括节点和边的创建、布局算法、交互式操作等。本文将介绍如何在Vue应用程序中集成Cytoscape.js,以创建交互式网络可视化。此代码的主要功能是将Cytoscape.js集成到Vue应用程序中。它加载了Cytoscape.js库及其依赖项,并在Vue组件中初始化了Cytoscape实例。// ...初始化Cytoscape实例// 添加节点点击事件监听器// ...处理节点点击事件}) 阅读详情

相关推荐

Cytoscape.js - 用于可视化和分析的图论(网络)的JS库-javascript

Cytoscape.js - 用于可视化和分析的图论(网络)的JS库 Cytoscape.js 用于可视化和分析的图论(网络)库:http://js.cytoscape.org 描述 Cytoscape.js 是一个功能齐全的图论库。 您是否需要建模和/或可视化关系数据,如生物数据或社交网络? 如果是这样,Cytoscape.js 正是您所需要的。 Cytoscape.js 包含一个图论模型和一个可选的渲染器来显示交互式图形。 该库旨在让程序员和科学家尽可能轻松地在他们的应用程序中使用图论,无论是用于 Node.js 应用程序中的服务器端分析,还是用于丰富的用户界面。 你可以通过一行开始使用 Cytoscape.js: var cy = cytoscape({ elements: myElements, container: myDiv }); 通过阅读其文档了解有关 Cytoscape.js 功能的更多信息。 文档 您可以在项目网站上找到文档和下载。 路线图 Cytoscape.js 的未来版本计划在 Github 问题跟踪器的里程碑中。 您可以使用里程碑来查看当前

知识图谱可视化之cytoscape.js构建知识图谱(django框架将数据由后台传到前台进行图谱构建)

1、cytoscape.js是什么 cytoscape.js是常用的构建知识图谱的工具,是一个网络图的可视化工具。通常有两种使用方式: 第一种是桌面版的Cytoscape Desktop,集成好的app供我们使用。 第二种是前端js库,通过在前端代码中引用cytoscape.js进行使用,通常cytoscape.js需要结合jquery.js进行使用。 在此使用cytoscape.js进行...

带鱼工作室的博客 1万+

告别调参烦恼:用Simulink手把手实现自适应模糊PID温度控制(附模型下载)

本文详细介绍了如何使用Simulink实现自适应模糊PID温度控制,解决传统PID调参难题。通过模糊推理引擎动态调整PID参数,系统能自动适应不同工况,显著提升控制精度和响应速度。文章包含完整的建模步骤、参数优化技巧和工业应用扩展,并附赠可下载模型,帮助工程师快速掌握这一智能控制技术。

weixin_30872499的博客 153

网络图库Cytoscape.js的使用(一):初始化配置

在vue中如何使用Cytoscape.js

weixin_44001906的博客 4773

深入解析V4L2框架与高通KMD在Camera驱动中的协同设计

本文深入解析了V4L2框架与高通KMD在Camera驱动中的协同设计。V4L2作为Linux内核标准视频驱动框架,提供了统一的设备抽象与数据流管理;而高通KMD则在其基础上,通过引入CRM等核心模块,构建了一套针对移动平台复杂相机系统的高效内核态驱动架构,实现了硬件配置与执行的解耦与智能调度。

qq_27496129的博客 1148

麒麟V10桌面操作系统安装Qt5.12.3

在虚拟机中如何安装麒麟V10桌面系统,以及在麒麟系统中安装Qt框架,并正常编译运行Qt程序

阿龙的思考 3599

cytoscape.js基础篇

cytoscape.js基础篇欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢...

娃儿回家 1万+

Trae IDE与Playwright MCP:5分钟实现零代码网页数据抓取

网页数据抓取是数据采集和自动化处理中的基础技术,其核心原理是通过程序模拟浏览器行为,定位并提取页面中的结构化信息。传统方式依赖编写脚本处理网络请求、解析HTML和应对反爬机制,技术门槛较高。而结合AI与自动化工具的新范式,通过自然语言交互即可完成复杂操作,极大降低了技术门槛并提升了开发效率。这种技术价值在于将开发者从繁琐的编码中解放,使其更专注于数据分析和业务逻辑。在数据监控、市场调研、竞品分析等应用场景中,快速获取网页数据是关键需求。本文以Trae IDE集成Playwright MCP为例,演示如何通过

culi3118的博客 498

前端追梦人Cytoscape.js教程

一. Cytoscape.js简介与安装 1.1 Cytoscape.js是什么? cytoscape.js是一个做网页可视化的常用工具 。cytoscape.js包含图论模型和可选的渲染器,用于显示交互式图形。该库旨在使程序员和科学家尽可能轻松地在他们的应用程序中使用图形理论,无论是用于Node.js应用程序中的服务器端分析还是用于丰富的用户界面。 1.2 Cytoscape.js安装及HelloWorld 1.2.1 使用包管理工具进行安装 npm : npm install cytoscape bo

ilovethesunshine的博客 8301

保姆级教程:用Arduino+MPU6050自制寻北仪(附MEMS陀螺精度测试报告)

本文提供了一份详细的Arduino与MPU6050自制寻北仪的保姆级教程,包括硬件选型、卡尔曼滤波算法优化、地磁场补偿及真北计算等关键技术。通过实测数据展示了MEMS陀螺仪在民用领域的高精度性能,帮助读者低成本实现1°以内的寻北精度。

weixin_42522964的博客 364

PyTorch 最新安装教程(2021-07-27)

PyTorch 最新安装教程(2021-07-27)前言1. 安装 Anaconda2. 检查显卡,更新驱动3. 创建PyTorch环境4. 配置清华TUNA镜像源5. 安装 PyTorch6. 测试 前言 万事开头难! 这句话又一次被我验证。 记得前不久刚陷入Tensorflow2.0的安装困境,这一次又被PyTorch 搞哭辽。 孩子太难了o(╥﹏╥)o,不过还好最终成功安装,感谢全网资源,感谢大佬们的博客!被我一次一次试了出来。 1. 安装 Anaconda Anaconda 是一个用于科学计算的 P

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 23万+

可视化的交互图形库cytoscape.js(网络图谱)

业务需要实现类似天眼查图谱的功能,接触到了cytoscape(包括cytoscape.js和可视化的CytoScape【图形化操作】),需要实现类似下图功能,   1、访问流出     div画布 --&gt; request --&gt; controller --&gt; ... --&gt; db --&gt; json --&gt; response --&gt; cytoscape...

smilecold的博客 1万+

YOLOv8改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 1082

Cytoscape.js 入门指南:从零开始构建网络图

Cytoscape.js 入门指南:从零开始构建网络图 【免费下载链接】cytoscape.js Graph theory (network) library for visualisation and analysis 项目地址...

gitblog_00344的博客 1210

YOLOv8改进策略【Neck】| CVPR 2024 MFM(Modulation Fusion Module,调制融合模块):动态特征加权融合,突出关键特征抑制冗余

本文主要利用DCMPNet中的 MFM 模块优化 YOLOv8 的目标检测网络模型。模块通过动态调制特征融合过程,实现了对多尺度、跨层级特征的智能聚合。将其应用于的改进过程中,针对目标检测中边界特征与语义信息的互补性需求,缓解网络中浅层细节与深层语义融合不足的问题。Depth Information Assisted Collaborative Mutual Promotion Network for Single Image Dehazing在图像去雾网络中,不同层级和类型的特征包含着互补的信息(如浅层的

Limiiiing的博客 351

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Cytoscape.js的安装与使用( 附:测试demo)

Cytoscape 是一个强大的图网络可视化库,常用于创建交互式的节点和边网络图。

weixin_43891869的博客 1961

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

cytoscape

语法 var cy = cytoscape({ // 非常常用的选项 container: undefined,//应该呈现图形的HTML DOM元素。 elements: [ /* ... */ ],//指定节点和路径数据的选项。 style: [ /* ... */ ],//指定样式的选项。 layout: { name: 'grid' /* , ... */ },//指...

尊哥的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

网络图库Cytoscape.js的使用(二):图表常用操作

网络图库Cytoscape.js的使用(二):图表常用操作

weixin_44001906的博客 2474

cytoscape.js初级篇

cytoscape.js初级篇系列文章前言cytoscape依赖引用cytoscape扩展依赖引用创建Cytoscape组件创建Cytoscape模板容器创建Cytoscape实例对象配置Cytoscape实例对象样式配置Cytoscape实例对象添加删除动作完整的Cytoscape组件代码Cytoscape组件的使用创建Cytoscape测试模板Cytoscape组件引用Cytoscape测试模板方法完整的Cytoscape测试模板代码完整截图注意事项 很久之前写过一篇cytoscape.js基础篇, 地

娃儿回家 3737

cytoscape.js学习笔记(一)

cytoscape.js学习笔记(一)写在前面demo实现效果总结 写在前面 知识图谱的可视化要实现动态交互一般需要使用javascript,而其中较为成熟的JS库有cytoscape.js和D3.js等。经过查阅相关资料,D3.js比较底层,要实现高端操作所需的代码量较大,故采用cytoscape.js实现知识图谱的可视化。写博客记录下自己学习cytoscape.js的过程,也方便以后查阅。 ...

AddVH的博客 2689

vue内使用 cytoscape.js学习(一)

最近项目需求根据返回的数据渲染出一个拓扑图。看了一些文档和demo决定用cytoscape.js来实现,因为之前也没接触个这个库,也是第一次用,所以记录一下,也给需要用到的朋友提供一些帮助。 官方文档点击: 文档 废话不多说,开始: npm install cytoscape --save //安装 main.js中配置 import cytoscape from "cytoscape"; Vu...

weixin_43753330的博客 5926

【亲测免费】 Cytoscape.js:构建交互式网络图的利器

Cytoscape.js:构建交互式网络图的利器 【免费下载链接】cytoscape.js Graph theory (network) library for visualisation and analysis 项目地址: https://gitcode.co...

gitblog_00003的博客 1087

cytoscapejs获取被点击节点位置,并在该节点附近进行双击展示弹窗

【代码】cytoscapejs获取被点击节点位置,并在该节点附近进行双击展示弹窗。

xinbaiyu的博客 808

cytoscapeJS 学习笔记(1)

cytoscapeJS是用于可视化和分析的图论(网络)库 具体的功能API等详细内容需要看官网,这里只是简单的介绍,起抛砖引玉的作用 1.安装 // windows 下安装 npm : npm install cytoscape 2.手势 Cytoscape.js支持几种手势: 抓取并拖动背景进行平移:触摸和桌面 捏放大:触摸和桌面(带有支持的触控板) 鼠标滚轮缩放:桌面 两指触控板向上或向下缩...

qq_36620379的博客 861

cytoscape.js进阶篇

cytoscape.js进阶篇系列文章前言cytoscape依赖引用cytoscape扩展依赖引用升级Cytoscape组件扩展Cytoscape组件模板容器扩展Cytoscape组件方法完善Cytoscape组件高亮样式完善Cytoscape组件中圆形菜单中的高亮邻居指令Cytoscape组件中完善内容方法详解放大缩小合适大小刷新布局高亮邻居完整的Cytoscape组件代码Cytoscape组件的使用创建Cytoscape测试模板Cytoscape组件引用Cytoscape测试模板方法完整的Cytosca

娃儿回家 6584

初识cytoscape.js

(cytoscape.js是一个做网页可视化的常用工具,http://js.cytoscape.org/ 这是他的官网,里面有很多很精美很牛批的案例。但是笔者很渣,接触到这个也是因为网页的功能需求,在接触这个之前甚至都不会js。而写这个的原因是因为在弄这个的时候发现网上的这类教程不多,甚至可以用少来形容。) 首先通过官网来到cytoscape的代码库,发现里面有很多文件和文件夹,但是我们用到的...

Vic_Hall的博客 4350
上一篇: nodejs22: React路由导航组件库 react-router-dom
下一篇: 【电路笔记 通信】数字式时分制指令响应型多路传输数据总线 1553协议(MIL-STD-1553) & 289A-97协议
FakeOccupational
博客等级 码龄6年 2万+粉丝 1727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值