echarts 如何制作杜邦图(树结构函数表达式)

先看效果图

开始准备

echarts版本 cdn.jsdelivr.net/npm/echarts...

echarts配置核心 series.data.label.formatter series.data.label.rich

配置核心思路

设置字符串模板

series.data.label.formatter

美化样式

series.data.label.rich

假设我们要做的布局如下

我们可以分解为 ['{title|{b}}','{left|1÷(5-}','{right|)}','{bottom|{c}}'].join("\n");

通过rich {styleName|text content text content} 标记样式名。 样式修改代码如下

js 复制代码
{
  title: {
    backgroundColor: '颜色',
    width: 80,
    height: 40
  },
  bottom: {
    backgroundColor: '颜色',
    width: 80,
    height: 40
  },
  left: {
    formatter: '{left|1÷(5-}',
    style: {
      color: '#000',
      height: 0,
      padding: [0, 120, 0, 0],
      // padding: [0, 0, 0, 220],
      width: 0
    }
  },
  right: {
    formatter: '{right|)}',
    style: {
      color: '#000',
      height: 0,
      width: 0,
      padding: [0, 0, 0, 100]
    }
  },
}

核心的配置就在于我们需要吧left和right的width改为0 意图在于我们要保留文字但是我们不需要他占高度类似于脱离文档流 所以这个地方神奇!!!

padding的作用是缩短之间的距离 这里要说明一下padding你可以理解为往内缩短中心点的距离不是往外增加宽度

下面是我开发的思路

如何将文字通过配置的方式传入到对应的数据 解决办法: 我们通过递归去获取名称或者名称重复通过索引去写入配置 通过一个对象去把配置到对应的数据 例如

js 复制代码
{'名称或者索引':{
  labelOptin: {
    left: {
      formatter: '{left|1÷(5-}',
      style: {
        color: '#000',
        height: 0,
        align: 'left',
        // padding: [0, 100, 0, 0],
        padding: [0, 0, 0, 220],
        width: 0
      }
    },
    right: {
      formatter: '{right|)}',
      style: {
        color: '#000',
        height: 0,
        align: 'right',
        padding: [0, 240, 0, 0]
      }
    },
  },
}}

我们只要对对应的配置项进行读取设置就可以

存在的弊端 我们这些内容是通过写入固定值去展示,如果宽度改变了我们还是要重新调整位置

最后附上代码地址

GitHub

相关推荐
成都渲染101云渲染66666 分钟前
跳出“硬件堆砌”陷阱|渲染101如何用技术重构云渲染的专业价值?
java·前端·javascript
快乐点吧11 分钟前
【前端】前端开发中如何高效利用 curl 工具
前端·状态模式
橘子编程20 分钟前
OpenClaw(小龙虾)完整知识汇总
java·前端·spring boot·spring·spring cloud·html5
SuperEugene24 分钟前
Vue3 性能优化规范:日常必做优化(不玄学、可落地)|可维护性与兜底规范篇
开发语言·前端·javascript·vue.js·性能优化·前端框架
Binary-Jeff24 分钟前
Spring 创建 Bean 的关键流程
java·开发语言·前端·spring boot·后端·spring·学习方法
若年封尘42 分钟前
告别手写 API 类型:用 openapi-fetch 打造类型安全的前端接口层
前端·安全·openapi-fetch
cypking1 小时前
二次封装ElementUI日期范围组件:打造带限制规则的Vue2 v-model响应式通用组件
前端·javascript·elementui
A923A1 小时前
【小兔鲜电商前台 | 项目笔记】第二天
前端·vue.js·笔记·项目·小兔鲜
牧码岛1 小时前
Web前端之样式中的light-dark函数,从媒体查询到颜色函数,从颜色到图片,light-dark打开CSS新时代、主题切换的暗黑模式到image的正解
前端·css·web·web前端
酉鬼女又兒1 小时前
零基础快速入门前端蓝桥杯Web考点深度解析:var、let、const与事件绑定实战(可用于备赛蓝桥杯Web应用开发)
开发语言·前端·javascript·职场和发展·蓝桥杯·es6·html5