Highcharts 使用指南Treegraph chart 树状图/结构树图|创建谱系图表、决策树、结构知识树等的图表工具

很多数据并不是"平铺"的,而是天然带着一种古老而优雅的结构------树结构。

组织架构、文件目录、家谱关系、产品分类、算法决策树,本质上都是一棵树。

人类理解这种结构其实很直觉:从一个根开始,向下分叉,一层一层展开。于是就诞生了 Treegraph Chart(树状图 / 结构树图)。

在 Highcharts 的图表体系中,Treegraph 是一种专门用于展示**层级关系(Hierarchy)**的图表,它通过节点与连线构建一棵可交互的结构树,让复杂的关系网络变得清晰可读。

一句话理解:Treegraph = 节点 + 父子关系 + 自动布局算法。

Highcharts Treegraph chart 树状图、结构树图

Tree graph 树图是一种可视化树 tree 或层级数据结构的方式。最典型的树数据结构例子有:

  • genealogy trees 家谱树
  • directories in computer science 计算机科学中的目录
  • decision trees 决策树

我们的树状图表示是一棵有向的有根树。这意味着连接的方向很重要,每组数据中都有一个节点没有父节点(即树的根节点)。与树状图和旭日图不同,这种系列类型不需要 value 属性,因为每个点的位置完全取决于它与树中其他节点的关系。

要使用这个系列类型,你需要加载 modules/treemap.jsmodules/treegraph.js 模块.

数据结构

数据以一棵树的形式结构化 tree,每个点代表一个节点。每个节点可以有自己的子节点。这棵树的顶部会自动有一个代表根节点的节点。如果某个点的父节点未定义,或者父节点不匹配任何id,那么父节点会自动设置为根节点。可能会有多个没有父节点的节点,它们会被放置成独立的树。

以下是Highcharts中树的构建示例:

js 复制代码
data: [{
    name: 'I have children',
    id: 'id-1'
}, {
    name: 'I am a child',
    parent: 'id-1'
}, {
    name: 'I am a smaller child',
    parent: 'id-1'
}]

算法

算法决定了点的位置。目前有一种算法可用,即用于计算树图中节点位置的Walker 算法。

API 选项

链接

与树状图系列不同,节点之间的连接以链接的形式表示。这些链接是根据子项的选项生成的。链接的形状与组织结构图中的相同,适用的选项也相同。要为所有链接应用通用选项,可以像这样定义链接选项:

js 复制代码
series: [{
    type: 'treegraph',
    link: {
        type: 'curved',
        lineWidth: 3
    },
    data: [{
        name: 'I have children',
        id: 'id-1'
    }, {
        name: 'I am a child',
        parent: 'id-1'
    }, {
        name: 'I am a smaller child',
        parent: 'id-1'
    }]
}]

要更改特定连接的配置,你必须在点的配置中指定连接对象,像这样:

js 复制代码
data: [{
    name: 'parent',
    id: 'id-1
}, {
    name: 'child',
    parent: 'id-1',
    link: {
        type: 'curved',
        lineWidth: 5
    }
}]

这个设置将对指向该节点的连接到起作用。

折叠功能

节点的默认点击行为是切换折叠/展开状态。点击任何具有子节点的节点时,所有子节点和链接的可见性将被隐藏。这有助于隐藏子树,使数据更易于阅读。再次点击同一个节点时,所有节点和链接将重新显示。你可以在任何演示中测试此功能,因为这是默认行为。

选项

关于树图选项的概述,请参阅 API.

Highcharts Dendrogram 树状图

树状图是一种用于聚类的专用树形图。树状图的关键部分在于分支长度具有意义,它们代表相似性或距离。两个分支越接近连接,表示它们的项目越相似。

在Highcharts中,我们通过为每个点(节点)赋予一个x值来体现相似性概念,该值会在x轴上进行绘制。这样我们就可以控制每个节点的x位置,从而用分支长度编码相似性。在树状图中,x轴默认是隐藏的,因此通常在树状图中我们希望将xAxis.visible设置为true。

在下面的示例中,我们建立了典型的分类树状图。x 轴以百万年前为单位,间接表示项目之间在时间上的相似性,即自上次共同祖先以来的时间。

一些值得注意的技术:

  • 我们将所有节点的 marker.radius 设置为 0,有效隐藏了节点的标记,重点显示连接线所编码的关系。

  • 我们使用两套不同的数据标签配置,每套都带有条件格式,用以区分叶子节点的标签和分支节点的标签。分支节点的标签仅用于显示分裂的时间。

更多演示

相关推荐
Highcharts.js30 分钟前
适合报表系统的可视化图表|Highcharts支持直接导出PNG和PDF
javascript·数据库·react.js·pdf
叫我一声阿雷吧39 分钟前
JS 入门通关手册(35):执行上下文、调用栈与作用域链深度解析
javascript·作用域链·js进阶·执行上下文·调用栈·变量提升·闭包原理
Amumu121383 小时前
Js:正则表达式(一)
开发语言·javascript·正则表达式
月光宝盒造梦师5 小时前
Ant Design Ellipsis 中的判断逻辑 isEleEllipsis 方法非常消耗性能
javascript·react·优化
酉鬼女又兒6 小时前
零基础快速入门前端ES6 核心特性详解:Set 数据结构与对象增强写法(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·职场和发展·蓝桥杯·es6
阿珊和她的猫6 小时前
以用户为中心的前端性能指标解析
前端·javascript·css
叫我一声阿雷吧7 小时前
JS 入门通关手册(36):变量提升、暂时性死区与块级作用域
javascript·变量提升·暂时性死区·tdz·块级作用域· 前端面试
成都渲染101云渲染66667 小时前
跳出“硬件堆砌”陷阱|渲染101如何用技术重构云渲染的专业价值?
java·前端·javascript
SuperEugene7 小时前
Vue3 性能优化规范:日常必做优化(不玄学、可落地)|可维护性与兜底规范篇
开发语言·前端·javascript·vue.js·性能优化·前端框架
cypking7 小时前
二次封装ElementUI日期范围组件:打造带限制规则的Vue2 v-model响应式通用组件
前端·javascript·elementui