关系图

描述:当前是关于Echarts图表中的 关系图 示例。
 
            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);