HTML5 (canvase)拓扑图、关系图及vis.js关系图的使用
<h2>HTML5 (canvase)拓扑图、关系图:</h2><p>http://www.jtopo.com/demo/layout-circle.html</p>
<p> </p>
<h2>vis.js网址:</h2>
<p><span id="im-content_1571216417325" class="im-content"><span style="font-family: 微软雅黑">https://visjs.org/</span></span></p>
<p> </p>
<p><span class="im-content"><span style="font-family: 微软雅黑">vue项目中的使用:</span></span></p>
<p><span class="im-content"><span style="font-family: 微软雅黑">1、npm install vis</span></span></p>
<p> </p>
<p>2、在关系图的页面引入vis</p>
<p> </p>
<p> </p>
<div class="cnblogs_code">
<pre>import vis <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">vis</span><span style="color: rgba(128, 0, 0, 1)">'</span>; <br> 或 <br><span style="color: rgba(0, 0, 255, 1)">const</span> vis=require(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">vis</span><span style="color: rgba(128, 0, 0, 1)">"</span>);</pre>
</div>
<p>3、使用:</p>
<div class="cnblogs_code">
<pre> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> vis关系图初始化</span>
<span style="color: rgba(0, 0, 255, 1)">public</span><span style="color: rgba(0, 0, 0, 1)"> init(body: any) {
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*处理关系类型数据 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
let dataArr: any </span>=<span style="color: rgba(0, 0, 0, 1)"> [];
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*定义links的数组 </span><span style="color: rgba(0, 128, 0, 1)">*/</span><span style="color: rgba(0, 0, 0, 1)">
let linksArr: any </span>=<span style="color: rgba(0, 0, 0, 1)"> [];
</span><span style="color: rgba(0, 128, 0, 1)">/*</span><span style="color: rgba(0, 128, 0, 1)">*处理返回的其他数据 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 节点数</span>
body.forEach((item: any, index: number) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> if (index < 20) {</span>
let obj: any =<span style="color: rgba(0, 0, 0, 1)"> {
id: </span><span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
shape: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">dot</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
color: </span><span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
label: </span><span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
};
let objB: any </span>=<span style="color: rgba(0, 0, 0, 1)"> {
id: </span><span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
shape: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">dot</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
color: </span><span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
label: </span><span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">
};
obj.id </span>=<span style="color: rgba(0, 0, 0, 1)"> item.asfzh;
obj.label </span>=<span style="color: rgba(0, 0, 0, 1)"> item.asfzh;
obj.color </span>= item.sfzZdrFlag1 === <span style="color: rgba(128, 0, 128, 1)">1</span> ? <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#f7220b</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#2aa2f7</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
dataArr.push(obj);
objB.id </span>=<span style="color: rgba(0, 0, 0, 1)"> item.bsfzh;
objB.label </span>=<span style="color: rgba(0, 0, 0, 1)"> item.bsfzh;
objB.color </span>= item.sfzZdrFlag2 === <span style="color: rgba(128, 0, 128, 1)">1</span> ? <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#f7220b</span><span style="color: rgba(128, 0, 0, 1)">"</span> : <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">#2aa2f7</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
dataArr.push(objB);
});
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">关系</span>
body.forEach((item: any, index: number) =><span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> if (index < 20) {</span>
let linksObj: any =<span style="color: rgba(0, 0, 0, 1)"> {
</span><span style="color: rgba(0, 0, 255, 1)">from</span>: <span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
to: </span><span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
label: </span><span style="color: rgba(128, 0, 0, 1)">""</span><span style="color: rgba(0, 0, 0, 1)">,
font: {align: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">top</span><span style="color: rgba(128, 0, 0, 1)">"</span>,color:<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">from</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">},
arrows: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">to</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">
};
linksObj.</span><span style="color: rgba(0, 0, 255, 1)">from</span> =<span style="color: rgba(0, 0, 0, 1)"> item.asfzh;
linksObj.to </span>=<span style="color: rgba(0, 0, 0, 1)"> item.bsfzh;
linksObj.label </span>= `${item.cnt}`; <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">必须是字符串 不能是数字</span>
<span style="color: rgba(0, 0, 0, 1)"> linksArr.push(linksObj);
});
let strArr </span>=<span style="color: rgba(0, 0, 0, 1)"> [];
let objArr </span>=<span style="color: rgba(0, 0, 0, 1)"> [];
</span><span style="color: rgba(0, 0, 255, 1)">for</span> (let i = <span style="color: rgba(128, 0, 128, 1)">0</span>; i < dataArr.length; i++<span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">if</span> (strArr.indexOf(dataArr.id) == -<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">) {
strArr.push(dataArr.id);
objArr.push(dataArr);
}
}
</span><span style="color: rgba(0, 0, 255, 1)">const</span> container = document.getElementById(<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">network_id</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">);
let nodes </span>=<span style="color: rgba(0, 0, 0, 1)"> objArr;
let edges </span>=<span style="color: rgba(0, 0, 0, 1)"> linksArr;
</span><span style="color: rgba(0, 0, 255, 1)">const</span> data =<span style="color: rgba(0, 0, 0, 1)"> {
nodes: nodes,
edges: edges
};
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">自定义</span>
<span style="color: rgba(0, 0, 255, 1)">const</span> options =<span style="color: rgba(0, 0, 0, 1)"> {
autoResize: </span><span style="color: rgba(0, 0, 255, 1)">true</span><span style="color: rgba(0, 0, 0, 1)">,
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> physics:false,</span>
<span style="color: rgba(0, 0, 0, 1)"> nodes: {
shape: </span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">dot</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">,
size: </span><span style="color: rgba(128, 0, 128, 1)">12</span><span style="color: rgba(0, 0, 0, 1)">,
font: {
size: </span><span style="color: rgba(128, 0, 128, 1)">12</span><span style="color: rgba(0, 0, 0, 1)">,
color:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#8e8e8e</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
},
},
edges: {
width: </span><span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">,
smooth: {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">设置两个节点之前的连线的状态</span>
enabled: <span style="color: rgba(0, 0, 255, 1)">true</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">默认是true,设置为false之后,两个节点之前的连线始终为直线,不会出现贝塞尔曲线</span>
<span style="color: rgba(0, 0, 0, 1)"> },
font:{
color:</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">#8e8e8e</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">,
strokeWidth: </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">
}
},
interaction: {
dragNodes: </span><span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">是否能拖动节点</span>
dragView: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">是否能拖动画布</span>
hover: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">鼠标移过后加粗该节点和连接线</span>
multiselect: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">按 ctrl 多选</span>
selectable: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">是否可以点击选择</span>
selectConnectedEdges: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">选择节点后是否显示连接线</span>
hoverConnectedEdges: <span style="color: rgba(0, 0, 255, 1)">true</span>, <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">鼠标滑动节点后是否显示连接线</span>
zoomView: <span style="color: rgba(0, 0, 255, 1)">true</span> <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">是否能缩放画布</span>
<span style="color: rgba(0, 0, 0, 1)"> },
};
let network </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> Vis.Network(container, data, options);
}</span></pre>
</div>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
sunshine15666<br><br>
来源:https://www.cnblogs.com/xiaolucky/p/11677356.html
頁:
[1]