跳到主要内容

VISALL 树图 (Tree Chart) 使用文档

简介

树图组件是VISALL数据可视化库中的重要图表类型之一,用于展示具有层次结构的数据。该组件能够直观地表现节点之间的父子关系,适用于组织结构、系统架构、文件目录等多种层次数据的可视化展示。

基本用法

import { render } from 'path/to/bundle.esm.min.js';

// 创建树图
const chart = render(container, {
layers: [
{
type: 'tree',
dataIndex: 0
}
],
data: [
{
values: {
name: '根节点',
children: [
{
name: '子节点1',
children: [
{ name: '孙节点1-1' },
{ name: '孙节点1-2' }
]
},
{
name: '子节点2',
children: [
{ name: '孙节点2-1' }
]
}
]
}
}
]
});

配置参数

参数类型默认值说明
dataIndexnumber0指定使用的数据集索引

数据要求

  • 数据必须是一个包含层次结构的对象
  • 每个节点至少需要一个name属性用于显示
  • 子节点通过children数组属性定义
  • 根节点必须存在
  • 每个节点可以包含额外属性用于自定义样式和交互

数据结构示例

{
name: '根节点',
children: [
{
name: '子节点1',
children: [
{ name: '孙节点1-1' },
{ name: '孙节点1-2' }
]
},
{ name: '子节点2' }
]
}

高级用法

1. 自定义节点样式

可以通过在数据中添加额外属性来自定义节点样式:

{
name: '根节点',
itemStyle: {
color: '#ff0000',
borderWidth: 2
},
children: [
// ...子节点
]
}

2. 节点展开和折叠控制

树图支持节点的展开和折叠功能,可以通过配置初始状态:

{
name: '根节点',
collapsed: false, // 初始状态是否折叠
children: [
// ...子节点
]
}

潜规则与注意事项

  1. 数据结构要求

    • 树图要求数据必须是嵌套的层次结构,通常通过children数组表示子节点。
    • 每个节点必须有唯一的标识,通常是name属性。
  2. 渲染机制

    • 树图默认会从数据数组中取第一个元素的值作为树的根节点。
    • 实现代码中的获取方式:data: [data.values]
  3. 交互行为

    • 默认配置了鼠标悬停时显示tooltip提示。
    • 通过tooltip配置项的trigger: 'item'triggerOn: 'mousemove'实现。
  4. 图例(Legend)限制

    • 当前实现暂不支持图例的点击功能。
    • 图例数据默认为空数组:legend: { data: [] }

实现原理

树图组件内部使用了直接的数据引用,主要步骤包括:

  1. 获取数据:从数据数组中获取指定索引的数据
  2. 配置基本图表选项:设置tooltip、图例等
  3. 配置树图系列:将数据直接传递给树图渲染器

树图的实现相对简单,主要依赖于echarts的内置树图功能,通过系列配置type: 'tree'实现。

兼容性问题

使用本组件时,需要注意以下兼容性问题:

  1. 当前实现缺少layout配置,可能导致树图的布局不符合预期
  2. 在处理大量节点数据时,可能需要优化数据结构以提高渲染性能
  3. 复杂的自定义样式可能需要额外配置

示例

基础树图

{
type: 'tree',
dataIndex: 0
}

自定义节点树图

{
type: 'tree',
dataIndex: 0,
// 可以通过在数据中添加样式属性来自定义节点外观
}

常见问题解决

  1. 树图显示不全

    • 检查容器大小是否足够
    • 确认数据结构是否正确,每个节点都有name属性
  2. 节点层次混乱

    • 检查数据中的children属性是否正确设置
    • 确保没有循环引用的情况
  3. 交互问题

    • 确认tooltip配置是否正确
    • 检查节点的事件绑定是否有效
  4. 自定义样式不生效

    • 在节点数据中添加itemStyle属性
    • 确保样式属性名称和值的格式正确