图谱

描述:当前是关于Echarts图表中的 关系图 示例。
 
            
/////////////////////参数///////////////////////////////
var data = {
    title: '图谱',
    dataName: ["vue", "css", "node", "java", "js", "html", "c", "c++", "ios", "php", "Android"],
    dataLink: [
        [
            "vue",
            "Android",
            4.1,
            1
        ],
        [
            "vue",
            "css",
            36.1,
            1
        ],
        [
            "vue",
            "java",
            11.7,
            1
        ],
        [
            "vue",
            "html",
            11.7,
            1
        ],
        [
            "vue",
            "c++",
            5.5,
            1
        ],
        [
            "php",
            "Android",
            10.1,
            10
        ],
        [
            "php",
            "css",
            0.7,
            10
        ],
        [
            "php",
            "java",
            15.4,
            10
        ],
        [
            "php",
            "html",
            24.9,
            10
        ],
        [
            "php",
            "c++",
            12.8,
            10
        ],
        [
            "Android",
            "vue",
            0.3,
            11
        ],
        [
            "Android",
            "php",
            17.3,
            11
        ],
        [
            "Android",
            "node",
            1.3,
            11
        ],
        [
            "Android",
            "js",
            19.4,
            11
        ],
        [
            "Android",
            "c",
            6.8,
            11
        ],
        [
            "Android",
            "ios",
            12.9,
            11
        ],
        [
            "css",
            "vue",
            41.1,
            2
        ],
        [
            "css",
            "php",
            3,
            2
        ],
        [
            "css",
            "node",
            5.1,
            2
        ],
        [
            "css",
            "js",
            9.3,
            2
        ],
        [
            "css",
            "c",
            5.6,
            2
        ],
        [
            "css",
            "ios",
            6.3,
            2
        ],
        [
            "node",
            "Android",
            0.6,
            3
        ],
        [
            "node",
            "css",
            1.2,
            3
        ],
        [
            "node",
            "java",
            7.7,
            3
        ],
        [
            "node",
            "html",
            44.3,
            3
        ],
        [
            "node",
            "c++",
            4,
            3
        ],
        [
            "java",
            "vue",
            0.4,
            4
        ],
        [
            "java",
            "php",
            16.4,
            4
        ],
        [
            "java",
            "node",
            1.6,
            4
        ],
        [
            "java",
            "js",
            24.9,
            4
        ],
        [
            "java",
            "c",
            4.5,
            4
        ],
        [
            "java",
            "ios",
            23.6,
            4
        ],
        [
            "js",
            "Android",
            5.8,
            5
        ],
        [
            "js",
            "css",
            0.5,
            5
        ],
        [
            "js",
            "java",
            57.2,
            5
        ],
        [
            "js",
            "html",
            7.5,
            5
        ],
        [
            "js",
            "c++",
            5,
            5
        ],
        [
            "html",
            "vue",
            0.4,
            6
        ],
        [
            "html",
            "php",
            23.6,
            6
        ],
        [
            "html",
            "node",
            6.6,
            6
        ],
        [
            "html",
            "js",
            8.3,
            6
        ],
        [
            "html",
            "c",
            5.5,
            6
        ],
        [
            "html",
            "ios",
            14.6,
            6
        ],
        [
            "c",
            "Android",
            2.5,
            7
        ],
        [
            "c",
            "css",
            1.1,
            7
        ],
        [
            "c",
            "java",
            7.9,
            7
        ],
        [
            "c",
            "html",
            6.2,
            7
        ],
        [
            "c",
            "c++",
            24.5,
            7
        ],
        [
            "c++",
            "vue",
            0.3,
            8
        ],
        [
            "c++",
            "php",
            16,
            8
        ],
        [
            "c++",
            "node",
            1.5,
            8
        ],
        [
            "c++",
            "js",
            8.8,
            8
        ],
        [
            "c++",
            "c",
            15.9,
            8
        ],
        [
            "c++",
            "ios",
            39.7,
            8
        ],
        [
            "ios",
            "Android",
            5.9,
            9
        ],
        [
            "ios",
            "css",
            0.4,
            9
        ],
        [
            "ios",
            "java",
            19.8,
            9
        ],
        [
            "ios",
            "html",
            5.1,
            9
        ],
        [
            "ios",
            "c++",
            25.9,
            9
        ],
        [
            "vue",
            "php",
            3.6,
            1
        ],
        [
            "vue",
            "node",
            3,
            1
        ],
        [
            "vue",
            "js",
            6.8,
            1
        ],
        [
            "vue",
            "c",
            12.6,
            1
        ],
        [
            "vue",
            "ios",
            4.9,
            1
        ],
        [
            "php",
            "vue",
            0.7,
            10
        ],
        [
            "php",
            "node",
            1.9,
            10
        ],
        [
            "php",
            "js",
            5.2,
            10
        ],
        [
            "php",
            "c",
            10.2,
            10
        ],
        [
            "php",
            "ios",
            18.1,
            10
        ],
        [
            "Android",
            "css",
            0.4,
            11
        ],
        [
            "Android",
            "java",
            30.6,
            11
        ],
        [
            "Android",
            "html",
            7.7,
            11
        ],
        [
            "Android",
            "c++",
            3.3,
            11
        ],
        [
            "css",
            "Android",
            1.9,
            2
        ],
        [
            "css",
            "java",
            15.6,
            2
        ],
        [
            "css",
            "html",
            3.9,
            2
        ],
        [
            "css",
            "c++",
            8.1,
            2
        ],
        [
            "node",
            "vue",
            1.4,
            3
        ],
        [
            "node",
            "php",
            16.8,
            3
        ],
        [
            "node",
            "js",
            6.1,
            3
        ],
        [
            "node",
            "c",
            4,
            3
        ],
        [
            "node",
            "ios",
            13.9,
            3
        ],
        [
            "java",
            "Android",
            6.7,
            4
        ],
        [
            "java",
            "css",
            1.6,
            4
        ],
        [
            "java",
            "html",
            8.6,
            4
        ],
        [
            "java",
            "c++",
            11.8,
            4
        ],
        [
            "js",
            "vue",
            0.9,
            5
        ],
        [
            "js",
            "php",
            4.6,
            5
        ],
        [
            "js",
            "node",
            2.4,
            5
        ],
        [
            "js",
            "c",
            2.1,
            5
        ],
        [
            "js",
            "ios",
            14,
            5
        ],
        [
            "html",
            "Android",
            5.9,
            6
        ],
        [
            "html",
            "css",
            1.6,
            6
        ],
        [
            "html",
            "java",
            29,
            6
        ],
        [
            "html",
            "c++",
            4.4,
            6
        ],
        [
            "c",
            "vue",
            0.4,
            7
        ],
        [
            "c",
            "php",
            8.7,
            7
        ],
        [
            "c",
            "node",
            2.4,
            7
        ],
        [
            "c",
            "js",
            3.6,
            7
        ],
        [
            "c",
            "ios",
            42.6,
            7
        ],
        [
            "c++",
            "Android",
            1.5,
            8
        ],
        [
            "c++",
            "css",
            1,
            8
        ],
        [
            "c++",
            "java",
            11.5,
            8
        ],
        [
            "c++",
            "html",
            3.8,
            8
        ],
        [
            "ios",
            "vue",
            0.3,
            9
        ],
        [
            "ios",
            "php",
            13.8,
            9
        ],
        [
            "ios",
            "node",
            5.7,
            9
        ],
        [
            "ios",
            "js",
            7.9,
            9
        ],
        [
            "ios",
            "c",
            15.4,
            9
        ]
    ],
    // size:20,  //默认是dataName的长度,size可自行设置,取值范围(x>=5||x<=20)
    color: [
        '#4CB7F2',
        '#458FF0',
        '#F5B751',
        '#70C6A2',
        '#70649A',
        '#4F726C',
        '#E58980',
        '#BC9F77',
        '#EDC7C7',
        '#B55D4C',
        '#69A8A0',
        '#4CB7F2',
        '#458FF0',
        '#F5B751',
        '#70C6A2',
        '#B28ECC',
        '#68A79F',
        '#E58980',
        '#BC9F77',
        '#EDC7C7',
        '#E19665',
        '#8AA38A',
        // '#B28FCE', 
        // '#6DA8C1',
        // '#A4809D',
        // '#7087B6',
        // '#AAB06A',
        // '#8AA38A',
        // '#D0A28F',
        // '#58AFA2',
        // '#6FBC89',
    ]  //颜色种类根据dataName长度定制
}
//////////////////////////////////////////////

var {
    title,
    dataName,
    dataLink,
    color
} = data
var le = data.size || dataName.length;

/////////////根据dataName的多上生成球的位置//////////////////
////////////具体位置还需要根据画布大小定制并进行微调/////////
if (le == 5) {
    // dataName = [
    //     'c1', 'c2', 'c3', 'c4', 'css',
    // ];
    var symbolSize = 54;
    var xIndex = [
        '100', '80', '120', '85', '115',

    ];
    var yIndex = [
        '80',
        '95', '95',
        '115', '115',
    ];

} else if (le == 6) {
    // dataName = [
    //     'c1', 'c2', 'c3', 'c4', 'css','c6'
    // ];
    var symbolSize = 55;
    var xIndex = [
        '100', '70', '130', '70', '130', '100',

    ];
    var yIndex = [
        '80',
        '95', '95',
        '120', '120',
        '135',
    ];

} else if (le == 7) {
    var symbolSize = 50;
    // dataName = [
    //  'c1', 'c2', 'c3', 'c4', 'css', 'c6', 'c7'
    //  ];
    var xIndex = [
        '100', '60', '140', '50', '150', '75',
        '125',
    ];
    var yIndex = [
        '55',
        '75', '75',
        '110', '110',
        '145', '145',
    ];

} else if (le == 8) {
    var symbolSize = 50;
    // dataName = [
    //  'c1', 'c2', 'c3', 'c4', 'css', 'c6', 'c7', 'c8'
    //  ];
    var xIndex = [
        '100', '60', '140', '40', '160', '60',
        '140', '100',

    ];
    var yIndex = [
        '35',
        '60', '60',
        '100', '100',
        '135', '135',
        '155',
    ];

} else if (le == 9) {
    var symbolSize = 44;
    dataName = [
        'c1', 'c2', 'c3', 'c4', 'css', 'c6', 'c7', 'c8', 'c9'
    ];
    var xIndex = [
        '100', '40', '160', '15', '185', '40',
        '100', '160', '100',

    ];
    var yIndex = [
        '18',
        '45', '45',
        '100', '100',
        '150', '100', '150',
        '180',
    ];

} else if (le == 10) {
    var symbolSize = 44;
    /*  dataName = [
                    'c1', 'c2', 'c3', 'c4', 'css', 'c6', 'c7', 'c8', 'c9',
                    'c10',
                    ];*/
    var xIndex = [
        '100', '40', '160', '15', '185', '40',
        '100', '165', '75', '125',

    ];
    var yIndex = [
        '18',
        '45', '45',
        '100', '100',
        '150', '100', '145',
        '180', '180',
    ];

} else if (le == 11) {
    var symbolSize = 43;
    /*  dataName = [
                    'c1', 'c2', 'c3', 'c4', 'css', 'c6', 'c7', 'c8', 'c9',
                    'c10', 'c11',
                    //  ];*/
    var xIndex = [
        '100', '40', '160', '15', '185', '40',
        '70', '130', '165', '75', '125',

    ];
    var xIndex = [
        '110', '50', '170', '25', '195', '50',
        '80', '140', '175', '85', '135',

    ];
    var yIndex = [
        '20',
        '45', '45',
        '100', '100',
        '150', '100', '100', '150',
        '180', '180',
    ];

} else if (le == 12) {
    var symbolSize = 42;
    /*  dataName = [
                    'c1', 'c2', 'c3', 'c4', 'css', 'c6', 'c7', 'c8', 'c9',
                    'c10', 'c11', 'c12',
                    ];*/
    // var xIndex = [
    //  '100', '40', '160', '15', '185', '70', '130', '40',
    //  '70', '130', '165', '100',

    // ];
    var xIndex = [
        '110', '50', '170', '25', '195', '80', '140', '50',
        '80', '140', '175', '110',

    ];
    var yIndex = [
        '15',
        '45', '45',
        '100', '100',
        '80', '80',
        '150', '120', '120', '150',
        '180',
    ];

} else if (le == 13) {
    var symbolSize = 40;
    /*  dataName = [
                    'c1', 'c2', 'c3', 'c4', 'css', 'c6', 'c7', 'c8', 'c9',
                    'c10', 'c11', 'c12', 'c13',
                    ];*/
    var xIndex = [
        '100', '40', '160', '15', '185', '70', '130', '40',
        '70', '130', '165', '75', '125',

    ];
    var yIndex = [
        '15',
        '45', '45',
        '100', '100',
        '80', '80',
        '150', '120', '120', '145',
        '180', '180',
    ];


} else if (le == 14) {
    var symbolSize = 39;
    /*dataName = [
                'c1', 'c2', 'c3', 'c4', 'css', 'c6', 'c7', 'c8', 'c9',
                'c10', 'c11', 'c12', 'c13', 'c14',
                ];*/
    var xIndex = [
        '100', '40', '160', '15', '100', '185', '65', '135', '40',
        '75', '125', '165', '75', '125',

    ];
    var yIndex = [
        '15',
        '45', '45',
        '100', '60', '100',
        '85', '85',
        '150', '130', '130', '145',
        '180', '180',
    ];
} else if (le == 15) {
    var symbolSize = 39;
    /*  dataName = [
                    'c1', 'c2', 'c3', 'c4', 'css', 'c6', 'c7', 'c8', 'c9',
                    'c10', 'c11', 'c12', 'c13', 'c14', 'c15'
                    ];*/
    var xIndex = [
        '100', '40', '160', '15', '100', '185', '65', '135', '40',
        '60', '135', '165', '100', '75', '125',

    ];
    var yIndex = [
        '15',
        '45', '45',
        '100', '50', '100',
        '80', '80',
        '150', '120', '120', '145',
        '150',
        '180', '180',
    ];
} else if (le == 16) {
    var symbolSize = 38;
    /*dataName = [
                'c1', 'c2', 'c3', 'c4', 'css', 'c6', 'c7', 'c8', 'c9',
                'c10', 'c11', 'c12', 'c13', 'c14', 'c15', 'c16',
                ];*/
    var xIndex = [
        '100', '40', '160', '15', '100', '185', '65', '135', '40',
        '60', '100', '135', '165', '100', '75', '125',

    ];
    var yIndex = [
        '15',
        '45', '45',
        '100', '50', '100',
        '80', '80',
        '150', '120', '100', '120', '145',
        '150',
        '180', '180',
    ];

} else if (le == 17) {
    var symbolSize = 36;
    /*dataName = [
                'c1', 'c2', 'c3', 'c4', 'css', 'c6', 'c7', 'c8', 'c9',
                'c10', 'c11', 'c12', 'c13', 'c14', 'c15', 'c16', 'c17',
                ];*/
    var xIndex = [
        '100', '40', '160', '15', '100', '185', '65', '135', '40',
        '60', '100', '150', '165', '83', '123', '80', '130',

    ];
    var yIndex = [
        '15',
        '45', '45',
        '100', '50', '100',
        '65', '65',
        '150', '100', '100', '100', '145',
        '140', '140',
        '180', '180',
    ];

} else if (le == 18) {

    var symbolSize = 36;
    /*  dataName = [
                    'c1', 'c2', 'c3', 'c4', 'css', 'c6', 'c7', 'c8', 'c9',
                    'c10', 'c11', 'c12', 'c13', 'c14', 'c15', 'c16', 'c17', 'c18',
                    ];*/
    var xIndex = [
        '100', '50', '150', '15', '100', '185', '65', '135', '15',
        '50', '100', '150', '190', '83', '123', '50', '150', '100',

    ];
    var yIndex = [
        '10',
        '25', '25',
        '65', '50', '65',
        '65', '65',
        '120', '100', '100', '100', '120',
        '140', '140',
        '165', '165',
        '185',
    ];
} else if (le == 19) {
    var symbolSize = 35;
    /*  dataName = [
                    'c1', 'c2', 'c3', 'c4', 'css', 'c6', 'c7', 'c8', 'c9',
                    'c10', 'c11', 'c12', 'c13', 'c14', 'c15', 'c16', 'c17', 'c18',
                    'c19'
                    ];*/
    var xIndex = [
        '100', '50', '150', '15', '100', '185', '65', '135', '10',
        '50', '100', '150', '190', '83', '123', '35', '170', '75',
        '130',

    ];
    var yIndex = [
        '10',
        '25', '25',
        '65', '50', '65',
        '65', '65',
        '110', '100', '100', '100', '110',
        '140', '140',
        '150', '150',
        '180', '180',
    ];
}
if (le == 20) {
    var symbolSize = 35;
    var xIndex = [
        '100', '50', '150', '15', '100', '185', '65', '135', '0',
        '50', '100', '150', '200', '83', '123', '15', '185', '50',
        '150', '100',
    ];
    var yIndex = [
        '0',
        '15', '15',
        '55', '50', '55',
        '65', '65',
        '100', '100', '100', '100', '100',
        '140', '140',
        '140', '140',
        '175', '175',
        '190',
    ];
}

/////////////////////////////////////////////////

function getDate() {
    let _data = [];
    for (var i = 0, le = dataName.length; i < le; i++) {
        _data.push({
            name: dataName[i],
            x: xIndex[i],
            y: yIndex[i],
            itemStyle: {
                normal: {
                    color: color[i],
                }
            },
            label: {
                normal: {
                    x: 'center',
                    y: 'center',
                    show: true,
                    textStyle: {
                        fontSize: '12',
                        fontWeight: '600',
                        lineHeight: '40',
                        color: '#000'
                    }
                }
            },
        })
    }
    return _data;
}

function getLinks() {
    let _data = [];
    for (var i = 0, le = dataLink.length; i < le; i++) {

        _data.push({
            source: dataLink[i][0],
            target: dataLink[i][1],
            lineStyle: {
                normal: {
                    opacity: 0.9,
                    width: dataLink[i][2] * (.1),
                    curveness: 0.3,
                    color: color[dataLink[i][3] - 1]
                }
            },
        })
    }
    return _data;
}

option = {
    title: {
        text: title,
        x: 'center',
        y: '2%',
        textStyle: {
            color: '#333',
            fontSize: '16',
            fontWeight: 'normal',
            top: '0',
        },
    },
    // grid: {
    //  'top': '8%'
    // },
    series: [{
        type: 'graph',
        layout: 'none',
        symbolSize: symbolSize,  //需要根据dataName多少进行调整
        label: {
            normal: {
                show: true
            }
        },
        edgeSymbol: ['circle', 'none'],
        edgeSymbolSize: [0, 0],
        edgeLabel: {
            normal: {
                textStyle: {
                    fontSize: 20
                }
            }
        },
        data: getDate(),
        links: getLinks(),
    }]
};