0

0

ECharts 实现垂直排列且横向连接的树状图(Treemap)教程

碧海醫心

碧海醫心

发布时间:2026-02-23 23:44:12

|

166人浏览过

|

来源于php中文网

原创

ECharts 实现垂直排列且横向连接的树状图(Treemap)教程

echarts 原生 treemap 不支持严格的垂直布局与跨系列连接,但可通过多个独立 treemap 实例手动定位、等宽缩放与视觉对齐,模拟出垂直分栏、自上而下排列、横向并列的“类连接树图”效果。

echarts 原生 treemap 不支持严格的垂直布局与跨系列连接,但可通过多个独立 treemap 实例手动定位、等宽缩放与视觉对齐,模拟出垂直分栏、自上而下排列、横向并列的“类连接树图”效果。

在数据可视化实践中,有时需要将不同分类(如部门、产品线、时间周期)以垂直分栏形式并排展示,每栏内部按数值大小自上而下垂直堆叠(即“纵向 treemap”),且各栏之间视觉连贯、宽度协调、高度对齐——这种布局常被称作“垂直连接树图”(vertically connected treemap)。遗憾的是,ECharts 的 series-treemap 类型不提供原生的垂直排序方向控制或跨 series 的布局联动能力;其 squareRatio 参数仅影响单个 treemap 内部矩形的宽高倾向,无法强制整体垂直流式排列,也无法实现多系列间的坐标级对齐。

因此,实现该效果的核心思路是:放弃单 treemap 多层级嵌套,转为多个独立 treemap 实例,并通过精确的 left/width/height 控制位置与比例,配合统一的 levels 配置和视觉设计,达成视觉上的垂直分栏与逻辑连接感

Globe Explorer
Globe Explorer

Globe Explorer是一款全新的AI搜索引擎,致力于提供个性化搜索体验和高质量搜索结果。

下载

✅ 推荐实现方案:多 Treemap 并排 + 手动定位

以下是一个生产就绪的配置示例,包含 4 个垂直栏目(CATEGORY A–D),每个栏目独立渲染、宽度可控、禁用交互干扰(nodeClick: false, roam: false),并使用一致的 gapWidth 和单色配色增强纵向节奏感:

option = {
  tooltip: {
    trigger: 'item',
    formatter: '{b}: {c} KB'
  },
  series: [
    // CATEGORY A — 左起第1栏(4% 开始,宽23%)
    {
      type: 'treemap',
      name: 'CATEGORY A',
      width: '23%',
      left: '4%',
      height: '80%',        // 统一高度,便于纵向对齐
      top: '10%',
      nodeClick: false,     // 禁用点击,避免干扰
      roam: false,          // 禁用缩放/拖拽
      label: { show: true, formatter: '{b}' },
      itemStyle: { borderColor: '#fff', borderWidth: 1 },
      levels: [{
        color: ['#4facfe'], // 单色系强化垂直一致性
        itemStyle: { gapWidth: 4 }
      }],
      data: [
        {name: 'A1', value: 40},
        {name: 'A2', value: 6},
        {name: 'A3', value: 24},
        {name: 'A4', value: 15},
        {name: 'A5', value: 12},
        {name: 'A6', value: 4},
        {name: 'A7', value: 18}
      ]
    },

    // CATEGORY B — 第2栏(30% 开始,宽23%)
    {
      type: 'treemap',
      name: 'CATEGORY B',
      width: '23%',
      left: '30%',
      height: '80%',
      top: '10%',
      nodeClick: false,
      roam: false,
      label: { show: true, formatter: '{b}' },
      itemStyle: { borderColor: '#fff', borderWidth: 1 },
      levels: [{ color: ['#00f5d4'], itemStyle: { gapWidth: 4 } }],
      data: [
        {name: 'B1', value: 13},
        {name: 'B2', value: 17},
        {name: 'B3', value: 8},
        {name: 'B4', value: 24},
        {name: 'B5', value: 15},
        {name: 'B6', value: 10},
        {name: 'B7', value: 24}
      ]
    },

    // CATEGORY C — 第3栏(56% 开始,宽23%)
    {
      type: 'treemap',
      name: 'CATEGORY C',
      width: '23%',
      left: '56%',
      height: '80%',
      top: '10%',
      nodeClick: false,
      roam: false,
      label: { show: true, formatter: '{b}' },
      itemStyle: { borderColor: '#fff', borderWidth: 1 },
      levels: [{ color: ['#ff9e00'], itemStyle: { gapWidth: 4 } }],
      data: [
        {name: 'C1', value: 4},
        {name: 'C2', value: 20},
        {name: 'C3', value: 6},
        {name: 'C4', value: 18},
        {name: 'C5', value: 22},
        {name: 'C6', value: 35}
      ]
    },

    // CATEGORY D — 第4栏(82% 开始,宽16%,留白适配)
    {
      type: 'treemap',
      name: 'CATEGORY D',
      width: '16%',
      left: '82%',
      height: '80%',
      top: '10%',
      nodeClick: false,
      roam: false,
      label: { show: true, formatter: '{b}' },
      itemStyle: { borderColor: '#fff', borderWidth: 1 },
      levels: [{ color: ['#f72585'], itemStyle: { gapWidth: 4 } }],
      data: [
        {name: 'D1', value: 7},
        {name: 'D2', value: 19},
        {name: 'D3', value: 12},
        {name: 'D4', value: 11},
        {name: 'D5', value: 4},
        {name: 'D6', value: 9}
      ]
    }
  ]
};

⚠️ 关键注意事项

  • 宽度总和需 ≤ 100%:示例中 4% + 23% + 30% + 23% + 56% + 23% + 82% + 16% 是 left 与 width 的叠加逻辑,实际占用为 23% + 23% + 23% + 16% = 85%,剩余 15% 作为栏间/边缘留白,确保响应式安全;
  • 高度与 top 对齐至关重要:所有 treemap 设置相同 height 和 top,才能保证各栏顶部基准线一致,形成真正的“垂直连接”视觉;
  • 禁用交互提升体验:nodeClick: false 和 roam: false 可避免用户误操作导致视图错乱,尤其当多 treemap 紧邻时;
  • 色彩与间距统一增强连贯性:各栏 gapWidth 保持一致(如 4),颜色选用同色系不同明度,强化纵向阅读流;
  • 数据量差异大时建议归一化或限制最小值:若某栏数据极小(如全部

✅ 总结

虽然 ECharts 尚未内置垂直 treemap 布局引擎,但通过「多 series + 精确盒模型控制 + 视觉一致性设计」的组合策略,完全可复现专业级垂直连接树图。该方法稳定、兼容性好(支持所有 ECharts 5+ 版本)、易于维护,且能灵活适配动态数据源——只需将原始分类数据按组拆分,注入对应 series 即可。对于追求更高定制化的场景,亦可结合 graphic 组件绘制连接线或标注,进一步强化“连接”语义。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
ECharts是什么
ECharts是什么

ECharts是基于JavaScript的开源可视化库,能够帮助开发者轻松地实现各种复杂的数据可视化效果,提供了丰富的图表类型和交互功能。本专题为大家提供ECharts是什么的相关的文章、下载、课程内容,供大家免费下载体验。

275

2023.08.04

echarts自适应大小设置
echarts自适应大小设置

使用ECharts的自适应大小设置可以使图表能够根据不同屏幕尺寸和设备进行自适应。一种是使用resize事件,在图表容器大小改变时重新渲染图表;另一种是使用CSS样式,通过设置图表容器的宽度和高度为百分比值,使图表容器根据父元素的大小进行自适应。根据实际需求选择合适的方法,可以使图表在不同设备上都能够良好地显示和交互 。

475

2023.09.13

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

422

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

595

2023.08.10

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

1142

2026.02.13

微博网页版主页入口与登录指南_官方网页端快速访问方法
微博网页版主页入口与登录指南_官方网页端快速访问方法

本专题系统整理微博网页版官方入口及网页端登录方式,涵盖首页直达地址、账号登录流程与常见访问问题说明,帮助用户快速找到微博官网主页,实现便捷、安全的网页端登录与内容浏览体验。

371

2026.02.13

Flutter跨平台开发与状态管理实战
Flutter跨平台开发与状态管理实战

本专题围绕Flutter框架展开,系统讲解跨平台UI构建原理与状态管理方案。内容涵盖Widget生命周期、路由管理、Provider与Bloc状态管理模式、网络请求封装及性能优化技巧。通过实战项目演示,帮助开发者构建流畅、可维护的跨平台移动应用。

245

2026.02.13

TypeScript工程化开发与Vite构建优化实践
TypeScript工程化开发与Vite构建优化实践

本专题面向前端开发者,深入讲解 TypeScript 类型系统与大型项目结构设计方法,并结合 Vite 构建工具优化前端工程化流程。内容包括模块化设计、类型声明管理、代码分割、热更新原理以及构建性能调优。通过完整项目示例,帮助开发者提升代码可维护性与开发效率。

37

2026.02.13

Redis高可用架构与分布式缓存实战
Redis高可用架构与分布式缓存实战

本专题围绕 Redis 在高并发系统中的应用展开,系统讲解主从复制、哨兵机制、Cluster 集群模式及数据分片原理。内容涵盖缓存穿透与雪崩解决方案、分布式锁实现、热点数据优化及持久化策略。通过真实业务场景演示,帮助开发者构建高可用、可扩展的分布式缓存系统。

114

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号