javascript - Highcharts:网络图:标记半径=连接数
问题描述
在 highcharts 网络图中: https ://www.highcharts.com/docs/chart-and-series-types/network-graph ,我看不到动态调整标记半径以匹配连接数的方法标记有。
例如:
data: [
['Jim', 'Michael'],
['Jim', 'Pam'],
['Jim', 'Dwight'],
['Michael', 'Pam'],
]
我们希望看到:
- Jim 的标记半径为 3
- Michael 的标记半径为 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 }
};
});
}
);
推荐阅读
- javascript - 通过外部事件更改 Chartjs 中的点样式
- gulp - 升级到 VS2018 15.8.1 后 Gulpfile.js 无法加载
- javascript - Python Requests 响应与 chrome 响应不同
- java - 当您想在 java 中使用列表文件时,如何在没有权限的情况下跳过文件?
- java - 绘制图形节点的坐标算法
- javascript - Node.js 使用 async/await 和 mysql
- java - Java全部替换?
- jquery - 显示/隐藏切换器无法正常工作
- python - 如何通过 pip 安装 twilio
- wso2 - Flasgger Swagger 文件的 WSO2 API 发布错误 - 架构/属性是意外的