和弦图的拆分, 不使用和弦图
配置项如下
let linksSetTmp = [{"name":"广州生物医药与健康研究院-广州生物医药与健康研究院","num":27},
{"name":"北京基因组研究所-北京基因组研究所","num":8},
{"name":"中国科学技术大学-中国科学技术大学","num":20},
{"name":"中国科学技术大学-广州生物医药与健康研究院","num":4},
{"name":"动物研究所-动物研究所","num":48},
{"name":"生物化学与细胞生物学研究所-生物化学与细胞生物学研究所","num":5},
{"name":"上海营养与健康研究院-上海营养与健康研究院","num":1},
{"name":"动物研究所-北京基因组研究所","num":2},
{"name":"中国科学技术大学-动物研究所","num":5},
{"name":"广州生物医药与健康研究院-动物研究所","num":5},
{"name":"苏州生物医学工程技术研究所-苏州生物医学工程技术研究所","num":3},
{"name":"广州生物医药与健康研究院-北京基因组研究所","num":6},
{"name":"中国科学技术大学-北京基因组研究所","num":4},
{"name":"中国科学技术大学-上海营养与健康研究院","num":1},
{"name":"广州生物医药与健康研究院-生物化学与细胞生物学研究所","num":7},
{"name":"动物研究所-生物化学与细胞生物学研究所","num":1},
{"name":"广州生物医药与健康研究院-苏州生物医学工程技术研究所","num":1}]
function getIdxByName(arry, name) {
for (let i = 0; i< arry.length; i++) {
if (arry[i].id == name) {
return i
}
}
return -1
}
let nodes = [{"id":"广州生物医药与健康研究院"},{"id":"北京基因组研究所"},{"id":"中国科学技术大学"},{"id":"动物研究所"},{"id":"生物化学与细胞生物学研究所"},{"id":"上海营养与健康研究院"},{"id":"苏州生物医学工程技术研究所"}]
nodes.map((item)=>{
item.symbolSize = 40
item.category = item.id
item.name = item.id
})
let nodesTmp = JSON.parse(JSON.stringify(nodes))
let linkList = []
let arry = null
let nodeItem = {}
let nodeList = JSON.parse(JSON.stringify(nodes))
linksSetTmp.map((item)=> {
arry = item.name.split("-")
linkList.push({
source: arry[0],
target: arry[1]
})
if (item.num > 1) {
//如果自己到自己且不只一条
for (let i = 1; i < item.num; i++) {
addNodes(nodeList, {id: arry[1] + i, category: arry[1], symbolSize: 10, name: ''})
linkList.push({
source: arry[0],
target: arry[1] + i,
})
}
if (arry[0] == arry[1]) {
for (let i = 1; i < item.num; i++) {
addNodes(nodeList, {id: arry[1] + i, category: arry[1], symbolSize: 10, name: ''})
linkList.push({
source: arry[0],
target: arry[1] + i,
})
}
} else {
for (let i = 1; i < item.num; i++) {
addNodes(nodeList, {id: arry[1] + i, category: arry[1], symbolSize: 10, name: ''})
linkList.push({
source: arry[0],
target: arry[1] + i,
})
}
}
}
})
function addNodes(arry, cell) {
if (arry.some(function(res){
return res.id == cell.id
})) {
return
}
arry.push(cell)
}
// console.log(nodeList)
myChart.showLoading();
myChart.hideLoading();
option = {
legend: [{
data: nodes.map(function (a) {
return a.id;
})
}],
series : [
{
type: 'graph',
layout: 'force',
data: nodeList,
links: linkList,
categories: nodesTmp,
roam: true,
label: {
position: 'right'
},
force: {
repulsion: 100
}
}
]
};
myChart.setOption(option);