JavaScript is required

产业链图谱

产业链可视化与层级着色

展示产业链结构,根据层级自动分配颜色编码,支持可展开的层级控制和完整的上下游关系映射。

功能概述

此示例展示了产业链图的可视化,根据节点在产业链中的层级自动分配不同的颜色和样式。用户可以通过展开/折叠控制来查看不同深度的产业链结构,支持按层级展开到指定深度。这对于分析和展示复杂的产业上下游关系非常有用。

核心特性实现

层级着色系统

根据节点在产业链中的层级自动分配颜色:

const openByLevel = async (level: number) => {
    const nodes = graphInstance.getNodes();
    const levelColors = ['#5b05f1', '#FD8B37', '#9b9903', '#247c02'];
    nodes.forEach(node => {
        const nodeLevel = Math.abs(node.lot.level || 0);
        graphInstance.updateNode(node, {
            color: levelColors[nodeLevel] || '#247c02',
            expanded: nodeLevel < level,
            className: 'my-industy-node-level-' + nodeLevel
        });
    });

    await graphInstance.doLayout();
};

每个层级使用不同的颜色,使产业链结构一目了然。

动态层级展开

控制展开到指定层级:

const openByDeep = async(deep: number) => {
    console.log('Node openByLevel:', deep);
    await openByLevel(deep);
    graphInstance.zoomToFit();
};

<SimpleUISelect
    data={[
        { value: 1, text: '2' },
        { value: 2, text: '3' },
        { value: 3, text: '4' },
    ]}
    onChange={(newValue: number) => {
        openByDeep(newValue);
    }}
/>

用户可以选择展开到第 2、3 或 4 层,动态调整产业链的显示范围。

树形布局配置

使用自上而下的树形布局:

const graphOptions: RGOptions = {
    layout: {
        layoutName: 'tree',
        from: 'top',
        treeNodeGapH: 10,
        treeNodeGapV: 120,
        alignItemsX: 'center'
    },
    reLayoutWhenExpandedOrCollapsed: true,
    defaultExpandHolderPosition: 'bottom'
};

垂直方向 120px 的间距为产业链节点提供足够的展示空间。

自定义节点渲染

根据节点层级显示不同的标题:

<RGSlotOnNode>
    {({ node }: RGNodeSlotProps) => {
        const level = node.lot?.level || 0;
        let headerText = "Product Type";
        if (level === 0) headerText = "Industry Chain Name";
        else if (level === 1) headerText = "Industry Link";
        else if (level === 2) headerText = "Subsection Link";

        return (
            <div className={`my-industy-node my-industy-node-level-${level}`}>
                <div className="my-card-header">{headerText}</div>
                <div className="my-card-body">{node.text}</div>
            </div>
        );
    }}
</RGSlotOnNode>

不同层级的节点有不同的标签,提供清晰的层级信息。

加载状态管理

使用加载状态提升用户体验:

graphInstance.loading();
await graphInstance.setJsonData(myJsonData);
await openByLevel(1);
graphInstance.moveToCenter();
graphInstance.zoomToFit();
graphInstance.clearLoading();

在数据加载期间显示加载指示器,防止用户在未准备好时交互。

小地图集成

可选的缩略图小地图帮助导航大型产业链:

<SimpleUIBoolean currentValue={showMiniView} onChange={setShowMiniView} label="Show graph minimap" />

<RGSlotOnView>
    {showMiniView && <RGMiniView />}
</RGSlotOnView>

用户可以切换小地图的显示以获得更好的导航体验。

创意使用场景

产业链分析

分析特定行业的完整产业链,从原材料到最终产品。例如,半导体产业、汽车产业或新能源产业链。

供应链管理

可视化公司的供应链结构,识别关键供应商和分销商。帮助发现供应链中的风险和机会。

投资决策支持

为投资者提供产业上下游关系的可视化,帮助理解投资标的在整个产业链中的位置和重要性。

政策制定

政府机构使用产业链图分析经济结构,制定产业政策和支持措施。识别关键环节和瓶颈。

竞争情报

分析竞争对手在产业链中的位置,了解其业务范围和战略布局。识别潜在的合作伙伴或收购目标。

风险评估

评估产业链中的风险传导路径。例如,上游原材料价格波动如何影响下游产品成本。

教育和培训

在商业教育中教授产业链概念。学生可以通过可视化更好地理解复杂的产业关系。

市场进入策略

帮助公司评估进入新市场的策略。通过分析产业链确定最佳切入点。

产业集群分析

研究特定地区的产业集群,了解相关企业如何形成生态系统。支持产业园区规划。

技术路线图

展示技术发展的产业链路径。例如,从基础研究到应用技术再到商业化产品的路径。