JavaScript is required

中心布局(center)

辐射状中心布局

将根节点置于画布中心,其他节点��匀分布在周围,适合社交网络和以中心节点为核心的关系可视化。

功能概述

此示例展示了中心布局算法,它将根节点放置在画布中心,然后将其他节点均匀分布在根节点周围,形成径向布局结构。这种布局特别适合展��以单个中心节点为核心的关系网络,例如社交网络中的人物及其关系。

核心特性实现

中心布局配置

使用 center 布局类型:

const graphOptions: RGOptions = {
    layout: {
        layoutName: 'center'
    }
};

中心布局会自动将根节点放在中心,其他节点围绕排列。

动态形状切换

支持节点和线条形状的实时切换:

const [nodeShape, setNodeShape] = React.useState<number>(RGNodeShape.circle);
const [lineShape, setLineShape] = React.useState<number>(RGLineShape.StandardStraight);

<SimpleUISelect
    data={[
        { value: RGNodeShape.rect, text: 'Rect' },
        { value: RGNodeShape.circle, text: 'Circle' }
    ]}
    currentValue={nodeShape}
    onChange={(newValue: number) => { setNodeShape(newValue); }}
/>

用户可以在圆形和矩形节点之间切换。

根据形状调整节点尺寸

根据节点形状自动调整大小:

graphInstance.getNodes().forEach((node) => {
    if (nodeShape === RGNodeShape.circle) {
        graphInstance.updateNode(node, {
            nodeShape,
            width: 70,
            height: 70
        });
    } else {
        graphInstance.updateNode(node, {
            nodeShape,
            width: 0,  // 0 表示自动计算
            height: 0
        });
    }
});

圆形使用固定尺寸,矩形使用自动尺寸计算。

连接点动态调整

根据线条形状调整连接点:

graphInstance.getLines().forEach((line) => {
    if (lineShape === RGLineShape.StandardStraight) {
        graphInstance.updateLine(line, {
            lineShape,
            fromJunctionPoint: RGJunctionPoint.border,
            toJunctionPoint: RGJunctionPoint.border,
            useTextOnPath: textOnPath
        });
    } else {
        graphInstance.updateLine(line, {
            lineShape,
            fromJunctionPoint: RGJunctionPoint.ltrb,
            toJunctionPoint: RGJunctionPoint.ltrb,
            useTextOnPath: textOnPath
        });
    }
});

直线使用边界连接,折线和曲线使用四向连接。

线条文本路径控制

控制线条文本是否沿路径显示:

<SimpleUISelect
    data={[
        { value: false, text: 'Normal' },
        { value: true, text: 'Text On Path' }
    ]}
    onChange={(newValue: boolean) => setTextOnPath(newValue)}
    currentValue={textOnPath}
/>

启用后,文本会沿着线条的曲线路径排列。

响应式更新

使用 useEffect 监听形状变化并自动更新:

useEffect(() => {
    updateMyGraphData();
}, [nodeShape, lineShape, textOnPath]);

任何形状或文本选项的改变都会触发图更新。

创意使用场景

社交网络可视化

展示个人在社交网络中的关系,中心人物放在中间,朋友、同事围绕分布。可以清晰看到社交圈层。

组织架构中心化视图

以 CEO 或核心领导为中心,展示其直接下属和间接汇报关系。适合展示扁平化组织结构。

知识图谱中心节点

以核心概念为中心,展示相关知识领域和概念。适合教育工具或知识管理系统。

产品生态系统

以核心产品为中心,展示相关的插件、扩展、配件和服务。适合产品营销和展示。

影响力分析

以关键人物或组织为中心,展示其影响力范围。可以用于政治、商业或学术影响力分析。

网络拓扑中心

以核心服务器或路由器为中心,展示网络设备连接。适合 IT 基础设施管理。

概念思维导图

以中心主题为核心,展示相关的子主题和详细想法。适合头脑风暴和创意工具。

情感关系映射

以个人为中心,展示家庭成员、朋友、同事等不同类型的关系。适合心理学或社会工作。

服务依赖图

以核心服务为中心,展示依赖它的下游服务和它依赖的上游服务。适合微服务架构可视化。

地理中心辐射

以城市为中心,展示周边城镇、交通线路和区域。适合城市规划或交通分析。