旭日图:径向层次结构与多层级环形分解

在展示多层级层次结构时,内层环代表高层级类别,外层环分解子类别,此时旭日图提供了一种简洁的径向替代方案,取代树状图。通过将嵌套类别排列成同心环,旭日图使用户能够探索多层级结构比例、父子关系以及分布路径在紧凑的空间内——例如全球产品类别、组织架构图或多步骤用户流失路径。

旭日图的机制

在 Apache ECharts 中,旭日图使用type: 'sunburst'。与树状图类似,该系列期望在data数组中包含嵌套的树状结构,父对象包含children数组。引擎将根节点或最顶层类别渲染在最内层圆中,并将子类别向外扩展到同心环层上。

1. 基础设置

要构建一个基本的旭日图,需提供一个嵌套树状数据集,并在系列对象中设置type: 'sunburst'在你的系列对象中:

option = {
    tooltip: {
        trigger: 'item',
        formatter: '{b}: {c}'
    },
    series: [
        {
            type: 'sunburst',
            data: [
                {
                    name: '祖辈',
                    children: [
                        {
                            name: '父辈 1',
                            value: 15,
                            children: [
                                { name: '子辈 1', value: 5 },
                                { name: '子辈 2', value: 10 }
                            ]
                        },
                        {
                            name: '父辈 2',
                            value: 10,
                            children: [
                                { name: '子辈 3', value: 10 }
                            ]
                        }
                    ]
                }
            ],
            radius: [0, '90%'],
            label: {
                rotate: 'radial'
            }
        }
    ]
};

 

高级结构技术

旭日图可以通过环级样式规则、颜色继承以及点击放大交互式下钻进行自定义。

1. 针对层级的环形自定义与下钻

使用levels数组,为从中心向外的每个同心环层定义不同的半径、标签行为和项目样式:

option = {
    tooltip: {
        trigger: 'item'
    },
    legend: {
        top: '2%',
        left: 'center',
        data: ['电子产品', '家居与生活']
    },
    series: [
        {
            type: 'sunburst',
            center: ['50%', '55%'],
            radius: ['10%', '85%'],
            nodeClick: 'rootToNode', // 点击节点时启用下钻
            levels: [
                {},
                {
                    // 内环(顶级分类)
                    r0: '15%',
                    r: '40%',
                    label: { rotate: 0, fontWeight: 'bold' },
                    itemStyle: { borderWidth: 2 }
                },
                {
                    // 中环(子分类)
                    r0: '40%',
                    r: '65%',
                    label: { rotate: 'tangential', fontSize: 11 }
                },
                {
                    // 外环(叶子产品)
                    r0: '65%',
                    r: '85%',
                    label: { rotate: 'radial', fontSize: 10 }
                }
            ],
            data: [
                {
                    name: '电子产品',
                    children: [
                        {
                            name: '音频',
                            children: [
                                { name: '耳机', value: 40 },
                                { name: '扬声器', value: 25 }
                            ]
                        },
                        {
                            name: '计算机',
                            children: [
                                { name: '笔记本电脑', value: 80 },
                                { name: '台式机', value: 35 }
                            ]
                        }
                    ]
                },
                {
                    name: '家居与生活',
                    children: [
                        {
                            name: '家具',
                            children: [
                                { name: '椅子', value: 50 },
                                { name: '桌子', value: 30 }
                            ]
                        },
                        {
                            name: '装饰',
                            children: [
                                { name: '照明', value: 45 },
                                { name: '地毯', value: 20 }
                            ]
                        }
                    ]
                }
            ]
        }
    ]
};

 

微调布局与标签对齐

控制标签旋转模式(径向切向)可确保当扇区向外围收缩时,文本仍保持可读性。

1. 自定义扇区间隔与径向标签

应用项目边框并设置 rotate: 'radial'以使文本沿扇区半径整齐对齐:

option = {
    series: [
        {
            type: 'sunburst',
            radius: ['20%', '90%'],
            itemStyle: {
                borderRadius: 4,
                borderColor: '#ffffff',
                borderWidth: 2
            },
            label: {
                show: true,
                rotate: 'radial',
                align: 'right'
            },
            data: [
                {
                    name: '软件',
                    itemStyle: { color: '#5470c6' },
                    children: [
                        { name: 'SaaS', value: 120 },
                        { name: '本地部署', value: 60 }
                    ]
                },
                {
                    name: '硬件',
                    itemStyle: { color: '#91cc75' },
                    children: [
                        { name: '服务器', value: 90 },
                        { name: '网络设备', value: 110 }
                    ]
                },
                {
                    name: '服务',
                    itemStyle: { color: '#fac858' },
                    children: [
                        { name: '咨询', value: 70 },
                        { name: '支持', value: 50 }
                    ]
                }
            ]
        }
    ]
};

 

战略最佳实践

  • 根据环层深度匹配标签旋转: 对于较宽的内环,使用水平(rotate: 0)或切向标签;对于较窄的外环扇区,则切换为 径向标签。
  • 启用 nodeClick: 'rootToNode':交互式缩放功能允许用户点击任意父弧以直接聚焦其子树,而不会造成视觉混乱。
  • 使用颜色继承:允许子扇区从父节点继承基础色调,并通过调整明度/饱和度,以在各层级间保持清晰的视觉分组。
滚动至顶部