力学布局(force)
力导向物理布局
基于物理力场模拟的布局算法,节点间有斥力,连接线有弹性张力,支持连续或固定迭代和实时参数调整,实现自然聚类。
功能概述
此示例展���了力导向布局算法,它模拟物理力场来自然地排列节点。节点之间有斥力,连接线有弹性拉力,通过这两种力的平衡实现自动布局。布局可以持续运行(无限迭代)或在指定次数后停止。用户可以实时调整斥力和弹性系数,观察图的动态变化。
核心特性实现
力导向布局配置
使用 force 布局类型:
const graphOptions: RGOptions = {
layout: {
layoutName: 'force',
maxLayoutTimes: Number.MAX_SAFE_INTEGER // 持续运行
}
};
设置最大迭代次数为安全整数上限,实现持续布局。
动态参数调整
通过 layoutor 实例实时更新布局参数:
const updateMyOptions = async () => {
const forceLayout = graphInstance.layoutor as InstanceType<typeof RGLayouts.ForceLayout>;
if (forceLayout) {
forceLayout.updateOptions(myForceLayoutOptions);
}
};
这允许在不重新初始化布局的情况下调整参数。
布局持续时间控制
选择持续布局或固定次数布局:
const restartForceLayout = async () => {
graphInstance.updateOptions({
layout: {
layoutName: 'force',
maxLayoutTimes: layoutForever ? Number.MAX_SAFE_INTEGER : maxLayoutTimes
}
});
await graphInstance.doLayout();
};
<SimpleUISelect
currentValue={layoutForever}
data={[
{ value: true, text: 'Layout Forever' },
{ value: false, text: `Layout Fixed Times(${maxLayoutTimes})` }
]}
onChange={(newValue: boolean) => { setLayoutForever(newValue); }}
/>
用户可以选择让布局持续优化或在指定迭代后停止。
迭代次数滑块
当不使用持续布局时,可以设置固定迭代次数:
<input
type="range"
min="10"
max="1000"
step="20"
value={maxLayoutTimes}
onChange={(event) => { setMaxLayoutTimes(Number(event.target.value)); }}
/>
范围从 10 到 1000 次,步长为 20。
力参数组件
使用 MyForceLayoutOptions 组件提供详细的力参数控制:
<MyForceLayoutOptions
myOptions={myForceLayoutOptions}
myOptionsUpdater={setMyForceLayoutOptions}
/>
该组件可能包含斥力、弹性、重力等参数的滑块控制。
大型数据集处理
示例包含超过 200 个节点的大量数据:
const rawNodes = [
{ id: 'a', text: 'a' },
{ id: 'b', text: 'b' },
// ... 200+ 节点
];
const rawLines = [
{ from: 'a', to: 'b' },
// ... 200+ 连接
];
大型数据集展示了力导向布局处理复杂图的能力。
响应式参数更新
使用 useEffect 监听参数变化:
useEffect(() => {
updateMyOptions();
}, [myForceLayoutOptions]);
useEffect(() => {
restartForceLayout();
}, [maxLayoutTimes, layoutForever]);
参数改变时自动更新布局行为。
创意使用场景
社交网络分析
可视化大型社交网络,力导向布局会自然地将关系紧密的人群聚集在一起,形成社区结构。
知识图谱探索
展示概念之间的关系,相似的概念会自动靠近。适合研究和教育工具。
蛋白质相互作用网络
在生物信息学中展示蛋白质之间的相互作用,帮助识别功能模块和通路。
引用网络分析
展示学术论文或专利之间的引用关系,识别研究热点和影响力网络。
供应链网络
可视化供应商、制造商、分销商之间的关系,识别关键的供应链节点。
网络安全分析
展示网络设备、服务器、攻击路径之间的关系,识别安全风险区域。
金融市场关联
展���股票、债券、商品等金融工具之间的相关性,识别系统性风险。
软件依赖分析
可视化软件模块、库、服务之间的依赖关系,识别架构中的关键组件。
社交媒体影响力
展示用户、帖子、话题之间的互动关系,识别影响力节点和传播路径。
大脑神经网络
展示神经元之间的连接,帮助理解大脑功能和神经网络结构。
语义网络
展示词语、概念、实体之间的语义关系,用于自然语言处理和搜索引擎。
推荐系统可视化
展示用户、物品、类别之间的关系,帮助理解和优化推荐算法。