netmap.js 是一款基于 D3.js 和 jQuery 的 JavaScript 库,用于创建可视化网络图。它能够帮助开发者快速生成交互式的网络拓扑图,便于帮助用户更直观地理解数据的关联关系。本文将详细介绍 netmap.js 的使用方法,包括安装、配置和常用方法。
安装
在安装 netmap.js 之前,需要先安装 D3.js 和 jQuery。可以通过如下命令进行安装:
npm install d3 jquery
然后在项目中引入 netmap.js:
<script src="https://cdn.jsdelivr.net/npm/netmap.js/dist/netmap.min.js"></script>
配置
通过下面的代码,可以很方便地创建一个简单的网络图:
-- -------------------- ---- ------- --- ---- - - ------ - ---- -------- ----- ----- ---- ---- -------- ----- ----- ---- ---- -------- ----- ----- --- -- ------ - -------- -------- ------- -------- ----- ----- ---- -------- -------- ------- -------- ----- ----- ---- -------- -------- ------- -------- ----- ----- --- - -- --- ------- - --- ---------------- ----- ---------
首先定义了一个 data 对象,它包含了节点(nodes
)和边(links
)的数组。每个节点和每条边都有一个唯一的标识符(id
或 source
和 target
)以及一些额外的属性(如 text
,表示节点或边上显示的文本)。
然后定义了一个空对象 options
,没有进行任何设置。最后通过 netmap("#chart", data, options)
创建了一个网络图,它被渲染到 id 为 chart
的元素上。
除了上述的简单配置外,netmap.js 还提供了更丰富的选项,供开发者自定义网络图的样式、交互方式等。下面列举了 netmap.js 支持的选项及其用法。
节点选项
nodeSize
:节点的大小(像素)。默认值为 30。nodeColor
:节点的颜色。可以是 CSS 颜色值或回调函数,该函数接收一个节点对象作为参数,返回节点颜色。默认值为"#1f77b4"
。nodeStrokeColor
:节点轮廓线的颜色。可以是 CSS 颜色值或回调函数,该函数接收一个节点对象作为参数,返回节点轮廓线颜色。默认值为"#000"
。nodeStrokeWidth
:节点轮廓线的宽度(像素)。默认值为 1。nodeTooltip
:当鼠标悬停在节点上时显示的提示信息。可以是字符串或回调函数,该函数接收一个节点对象作为参数,返回提示信息。
边选项
linkColor
:边的颜色。可以是 CSS 颜色值或回调函数,该函数接收一个边对象作为参数,返回边颜色。默认值为"#999"
。linkStrokeWidth
:边的宽度(像素)。可以是数字或回调函数,该函数接收一个边对象作为参数,返回边宽度。默认值为 2。linkOpacity
:边的透明度(0~1)。可以是数字或回调函数,该函数接收一个边对象作为参数,返回边透明度。默认值为 0.6。linkTooltip
:当鼠标悬停在边上时显示的提示信息。可以是字符串或回调函数,该函数接收一个边对象作为参数,返回提示信息。
整体选项
width
:网络图的宽度(像素)。默认为父元素的宽度。height
:网络图的高度(像素)。默认为父元素的高度。padding
:网络图的边距(像素)。可以是数字或一个包含左、右、上、下四个方向边距的数组。默认为 50。charge
:电荷强度(在力导向布局中使用)。数字越小,节点会彼此聚集,而数字越大,节点会更分散。默认为 -50。linkDistance
:边的长度(在力导向布局中使用)。默认为 100。showLabels
:是否显示节点标签。默认为true
。showTooltips
:是否显示提示信息。默认为true
。dragEnabled
:是否允许拖拽节点。默认为false
。zoomEnabled
:是否允许缩放。默认为true
。onNodeClick
:节点被点击时触发的回调函数,该函数接收一个节点对象作为参数。onNodeHover
:节点被悬停时触发的回调函数,该函数接收一个节点对象作为参数。onLinkClick
:边被点击时触发的回调函数,该函数接收一个边对象作为参数。onLinkHover
:边被悬停时触发的回调函数,该函数接收一个边对象作为参数。onZoomStart
:缩放开始时触发的回调函数,该函数没有参数。onZoomEnd
:缩放结束时触发的回调函数,该函数没有参数。
示例
下面是一些使用选项的例子,以及相应的效果展示。
连接线虚线样式
var options = { linkStrokeWidth: 2, linkStrokeStyle: "4 4" };
节点自定义 HTML
var options = { onNodeRender: function(node, element) { element.innerHTML = "<div class='node'>" + node.text + "</div>"; } };
支持拖拽
var options = { dragEnabled: true };
缩放限制
var options = { zoomEnabled: true, minZoom: 0.5, maxZoom: 2 };
常用方法
清空网络图
使用 netmap.clear()
方法可以清空当前的网络图。
添加节点和边
使用 netmap.addNode(node)
和 netmap.addLink(link)
可以分别新增节点和边。这两个方法的参数分别是节点对象和边对象,格式与数据集中的节点和边相同。
删除节点和边
使用 netmap.removeNode(node)
和 netmap.removeLink(link)
可以分别删除节点和边。这两个方法的参数为节点对象和边对象。
更新节点和边
使用 netmap.updateNode(node)
和 netmap.updateLink(link)
可以分别更新节点和边的属性。这两个方法的参数为节点对象和边对象,包含要更新的属性,格式与数据集中的节点和边相同。
总结
本文介绍了 npm 包 netmap.js 的基本用法和具体选项,以及常用方法。通过 netmap.js,开发者可以快速构建网络图,用于展示数据之间的关联关系,同时又能够进行交互式的操作,提高用户的体验。希望本文对您有所帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066b5d51ab1864dac670ec