讲师中心 微信公众号
AI工具推荐 视频效率加速

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

酷敏君_5752

酷敏君_5752

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

|

406人浏览过

|

来源于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 配置和视觉设计,达成视觉上的垂直分栏与逻辑连接感。

ECharts Master
ECharts Master

ECharts 图表大师。根据用户数据和业务上下文,自动设计并生成专业的 ECharts 可视化图表。使用场景:(1) 用户提供表格/JSON/CSV 数据需要可视化,(2) 用户说"帮我做个图"、"画个图表",(3) 需要将查询结果可视化展示。

下载

✅ 推荐实现方案:多 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工具

更多
切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

相关专题

更多
ECharts是什么
ECharts是什么

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

872

2023.08.04

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

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

4925

2023.09.13

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

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

6427

2023.07.18

堆和栈区别
堆和栈区别

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

2688

2023.08.10

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

100

2026.10.28

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

80

2026.10.28

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

240

2026.10.28

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

140

2026.10.22

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

140

2026.10.22

热门下载

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

精品课程

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn