Highcharts:网络图:标记半径=连接数
Highcharts: Network graph: marker radius = number of connections
在 highcharts 网络图中:
https://www.highcharts.com/docs/chart-and-series-types/network-graph
, 我看不到动态调整标记半径大小以匹配标记具有的连接数的方法。
例如:
data: [
['Jim', 'Michael'],
['Jim', 'Pam'],
['Jim', 'Dwight'],
['Michael', 'Pam'],
]
我们希望看到:
- 吉姆的标记半径为 3
- 迈克尔的标记半径为 2
- Pam 的标记半径为 2
- 德怀特的标记半径为 1
您需要自己计算半径,方法是遍历您的数据链接并计算每个节点的连接数。
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 }
};
});
}
);
在 highcharts 网络图中: https://www.highcharts.com/docs/chart-and-series-types/network-graph , 我看不到动态调整标记半径大小以匹配标记具有的连接数的方法。
例如:
data: [
['Jim', 'Michael'],
['Jim', 'Pam'],
['Jim', 'Dwight'],
['Michael', 'Pam'],
]
我们希望看到:
- 吉姆的标记半径为 3
- 迈克尔的标记半径为 2
- Pam 的标记半径为 2
- 德怀特的标记半径为 1
您需要自己计算半径,方法是遍历您的数据链接并计算每个节点的连接数。
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 }
};
});
}
);