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

Cytoscape.js的使用(初始化)

官网:Cytoscape.js
github:GitHub - cytoscape/cytoscape.js: Graph theory (network) library for visualisation and analysis
注:本文主要讲在vue中如何使用Cytoscape.js,主要参考官方文档,由于文档是英文,翻译过程可能偶有出错,所以本文仅供参考。

简介

cytoscape是一个网络图的可视化工具,大量的生物分子/基因领域的公司用它来做可视化分析。由于它的通用性,慢慢的也被其他领域的人用来做网络的可视化和分析。cytoscape分为两种,一种叫做cytoscape desktop,是一个桌面软件,可以把数据导入然后生成可视化的网络图进行分析;另一种叫做cytoscape.js,是一个javascript库,主要给开发人员使用,来在网页上生成可视化的网络图。我们要用的是后者。

在vue中使用Cytoscape.js

  1. 安装

    npm i cytoscape --save
    
  2. 引入:

    全局引入:在 main.js 中引入

    import cytoscape from 'cytoscape';
    Vue.prototype.$cytoscape = cytoscape;
    

    局部引入:在需要用到的模块中引入

    import cytoscape from 'cytoscape'
    
  3. 简单案例:

    <template>
        <div class="box">
          <div id="MainCy" style="width: 100%;height: 100%;"></div>
        </div>
    </template>
    <script>
        export default {
            mounted() {
                var cy = this.$cytoscape({
                    container: document.getElementById('MainCy'),
    
                    layout: {
                        name: 'grid',
                        rows: 2,
                        cols: 2
                    },
    
                    style: [{
                            selector: 'node',
                            style: {
                                'content': 'data(name)',
                                'background-color': '#3549fc',
                            }
                        },
    
                        {
                            selector: 'edge',
                            style: {
                                'content': 'data(relationship)',
                                'curve-style': 'bezier', 
                                'line-color': '#1db1b1',
                            }
                        },
                    ],
    
                    elements: {
                        nodes: [
                            {
                                data: {
                                    id: 'j',
                                    name: 'Jerry'
                                }
                            },
                            {
                                data: {
                                    id: 'e',
                                    name: 'Elaine'
                                }
                            },
                            {
                                data: {
                                    id: 'k',
                                    name: 'Kramer'
                                }
                            },
                            {
                                data: {
                                    id: 'g',
                                    name: 'George'
                                }
                            },
                        ],
                        edges: [
                            {
                                data: {
                                    source: 'e',
                                    target: 'k',
                                    relationship: '1'
                                }
                            },
                            {
                                data: {
                                    source: 'k',
                                    target: 'e',
                                    relationship: '2'
                                }
                            },
                            {
                                data: {
                                    source: 'k',
                                    target: 'j',
                                    relationship: '3'
                                }
                            },
                            {
                                data: {
                                    source: 'k',
                                    target: 'g',
                                    relationship: '4'
                                }
                            },
                            {
                                data: {
                                    source: 'e',
                                    target: 'j',
                                    relationship: '5'
                                }
                            },
                        ]
                    }
                });
                cy.nodes().on('click', (evt) => {
                    console.log(evt)
                });
                cy.edges().on('click', (evt) => {
                    console.log(evt)
                });
            },
        }
    </script>
    
    <style lang="scss" scoped>
    .box{
      width: 500px;
      height: 500px;
      background-color: #cbe8ff;
    }
    </style>
    

    效果:
    在这里插入图片描述

创建实例

一个Cytoscape.js的实例对应一个图表,创建实例的方式如下:

var cy = cytoscape({
   
  	container: document.getElementById('MainCy'),
});

配置选项

基本选项
container:图表容器
  • 一个HTML DOM元素,呈现图形的容器(必须指定宽高,否则渲染不出图表)。

    container: document.getElementById('MainCy'),
    
elements:图表元素
  • 格式示例

    elements: [
        {
          // node n1
            group: 'nodes', // 'nodes'是节点元素, 'edges'是边线元素
            //group字段可以自动推断出来,但是指定它会在初始化元素时给您很好的调试消息
            data: {
          //元素数据 (使用json可序列化的数据)
                id: 'n1', // 每个元素的必选(string) id,在未定义时自动赋值
                parent: 'nparent', // 指示复合节点父id; 未指定则没有父节点
                // (`parent` 可以被 `eles.move()` 改变)
            },
    
            //临时数据(通常是临时数据或非序列化数据)
            scratch: {
         
                _foo: 'bar' // app fields prefixed by underscore; extension fields unprefixed
            },
    
            position: {
          //节点的模型位置(初始化时可选,初始化后必选)
                x: 100,
                y: 100
            },
    
            selected: false, // 元素是否被选中(默认为false)
            selectable: true, // 选择状态是否可变(默认为true)
            locked: false, // 锁定时,节点的位置是不可变的(默认为false)
            grabbable: true, // 节点是否可以被用户抓取和移动
            pannable: false, //拖动节点是否会导致平移而不是抓取
            classes: ['foo', 'bar'], //元素的类名数组(或空格分隔的字符串)
    
            //除非绝对必要,否则不要使用' style '字段,而是使用STYLESHEET代替
            style: {
          // 会覆盖外部其他样式属性
                'background-color': 'red'
            }
        },
        {
          // node n2
            data: {
          id: 'n2' },
            
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值