首页 > 解决方案 > Highcharts:网络图:标记半径=连接数

问题描述

在 highcharts 网络图中: https ://www.highcharts.com/docs/chart-and-series-types/network-graph ,我看不到动态调整标记半径以匹配连接数的方法标记有。

例如:

data: [
    ['Jim', 'Michael'],
    ['Jim', 'Pam'],
    ['Jim', 'Dwight'],
    ['Michael', 'Pam'],
]

我们希望看到:

https://jsfiddle.net/3140g2wq/12/

标签: javascripthighcharts

解决方案


您需要通过遍历数据链接并计算每个节点的连接数来自己计算半径。

Highcharts.addEvent(
    Highcharts.Series,
    'afterSetOptions',
    function (e) {
            
            let nodeCounts = {};
      
            //count connections for each From or To node
            e.options.data.forEach(function (link) {
                nodeCounts[link[0]] = (nodeCounts[link[0]] || 0) + 1;
                nodeCounts[link[1]] = (nodeCounts[link[1]] || 0) + 1;
            });

            let radiusFactor = 3; //radius multiplier to graphically enlarge nodes

            //map each nodeCount to a node object setting the radius
            e.options.nodes = Object.keys(nodeCounts).map(function (id) {                   
                return {
                id: id,
                marker: {   radius: nodeCounts[id] * radiusFactor }
                };
            });
        }    
);

推荐阅读