梳理过的数据源,拜见: https://raw.githubusercontent.com/ios122/graph-go/master/data.js
可视化道理
示例输出:
重要涉及一下内容:
- 可视化显示,应用的是 echarts
- 应用原始数据的 ImportPath 而不是 Name,来作为每个数据节点的独一id.如许是因为 golang 本身的包定名规范决定的.
- 应用原始数据的 Imports 字段,来肯定标准库包与包之间的互相依附关系.golang是不许可轮回依附的,所以一些轮回依附相干的问题,不须要推敲.
- 节点的大年夜小,和包被其他包惹人的次数成正相干.如许做,被依附袈浣多的包,图上最终显示时,就会越大年夜.常用包和不常用包,一目了然.
就拭浇榄始数据,处理成 echarts 须要的数据,这里扼要说下最核心的思路:
- echarts 显示相干的代码,很大年夜程度上参考了 graph-npm
- 节点坐标和色彩,采取随机坐标和色彩,以去除节点和包之间的接洽.我认为如许处理,能更纯粹地不雅察标准库包与包之间的接洽.
- 须要一个 edges 来记录包与包之间的依附关系.在每次遍历 Imports 时,动态写入.
- 须要一个 nodes 来记录包自身的一些信息,然则其 size 参数,须要计算过所有依附关系后再填入.
- 应用 nodedSize 来记录每个包被依附的次数,为了晋升效力,它是一个字典Map.
数据整顿
- /* 将原始数据,转换为搁笔友爱的数据.
- ImportPath 作为独一 id 和 标签;
- Imports 用于计算依附关系;
- 节点的大年夜小,取决于被依附的次数;
- */
- function transData(datas){
- /* 存储依附路径信息. */
- let edges = []
- /* 存储基本节点信息. */
- let nodes = []
- /* 节点尺寸.初始是1, 每被惹人一次再加1. */
- let nodedSize = {}
- /* 尺寸单位1. */
- let unitSize = 1.5
- datas.map((data)=>{
- let itemId = data.ImportPath
- nodes.push({
- "label": itemId,
- "attributes": {},
- "id": itemId,
- "size": 1
- })
- if(data.Imports){
- data.Imports.map((importItem)=>{
- edges.push({
- "sourceID": importItem,
推荐阅读
高温天巧克力等商品被晒化、市平易近进店不买器械只图吹空调……自负年夜无人便利店在国内出现以来,就以各类话题频频袈溱媒体和社交收集激发存眷,在各类新技巧的“卖点>>>详细阅读
本文标题:Golang标准库间依赖的可视化展示
地址:http://www.17bianji.com/lsqh/37788.html
1/2 1