echart单系列柱状图增加配置筛选legend

2023-10-31

先看整体效果图:
在这里插入图片描述
这边简单说下实现思路:
单列柱子在官网demo是没有legend的, 但是多列柱子是有的
因此, 我们可以让单列柱子变成多列柱子的集合, 然后集合里面只有一列是有data的
相当于是这样的集合[0,1,0]
然后使用重叠配置, 把那些空的数据隐藏,这样看起来就只有一列
如果觉得以上代码比较绕复杂, 可以使用单列柱子的配置, 然后自己手写一个legend, 点击的时候数据变更,刷新一下chat就行了(当然, 这只是我的构想, 但是我觉得是可以实现的)
完整代码:

const chart = this.echarts.init(document.getElementById('dsm'))
const COLORS = this.colors // 保存颜色常量
let names = [], values = []
let itmBars = [], labels = []
let cIndex = 0, endV = Math.floor(100 / (data.length / 10))
let isShow = data.length > 10
 // 提取函数,以便复用和维护
const addItmBars = (item, index) => {
  if (cIndex > 16) cIndex = 0
  item['color'] = COLORS[index]
  if (item.dsmdtoList) {
    item.dsmdtoList.forEach(({ title, avgScore, area }) => {
      if (avgScore !== 0) {
        itmBars.push({
          name: title,
          value: avgScore.toFixed(2),
          region: item.title,
          area: area,
          key: index,
          ib: true,
          color: item.color
        })
      }
    })
  }
  labels.push(item.title)
  cIndex++
}
 data.forEach(addItmBars)
 names = itmBars.map(({ area, name }) => `${area}\n${name}`)
values = itmBars.map(({ region, value, color }) => ({
  name: region,
  type: 'bar',
  barMaxWidth: 30,
  barGap: '-100%',
  itemStyle: { color }
}))
 // 提取函数,替换下标的值
const replaceValue = (arr, idx, value) => [
  ...arr.slice(0, idx),
  value,
  ...arr.slice(idx + 1)
]
 values.forEach(({ data }, index) => {
  const arr = new Array(values.length).fill(0)
  data = replaceValue(arr, index, itmBars[index].value)
})
 const option = {
  title: {
    text: `${this.$t('平均分-')}${str}`,
    subtext: '\xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0(分)',
    subtextStyle: { fontSize: 10 }
  },
  dataZoom: [{
    type: 'slider',
    start: 0,
    end: endV,
    height: 20,
    show: isShow
  }],
  tooltip: {
    trigger: 'item',
    formatter: ({ seriesIndex }) => {
      const { area, name, value } = itmBars[seriesIndex]
      return `<div>
        <p>${area}</p>
        <p>${name || '--'}${value || '--'}</p>
      </div>`
    }
  },
  legend: {
    top: 30,
    itemWidth: 8,
    itemHeight: 8,
    data: labels
  },
  xAxis: { data: names, axisLabel: { rotate: 45 }},
  yAxis: { splitLine: false },
  grid: { left: '3%', right: '4%', bottom: '15%', containLabel: true },
  series: values
}
 chart.clear()
chart.setOption(option)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

echart单系列柱状图增加配置筛选legend 的相关文章

  • 禁用内容安全策略

    当我开发网站时 我经常想看看特定功能在网站上的外观如何 所以我会使用 chrome 开发者工具并经常运行一些 javascript 脚本 我经常发现一些脚本由于内容安全策略 CSP 而无法运行的问题 我完全理解该策略是为了防止跨站点脚本攻击
  • chrome 调试器承诺在暂停时不会解析?

    也许我没有正确调试承诺 但基本上 如果您在断点处停止并运行异步代码 它实际上不会完成 直到您恢复执行为止 这是一个问题 调试器允许您快速试验多个 api 方法 但如果您恢复它 您就不能 debugger now type the follo
  • 如何更改传单中功能集的样式?

    我正在看等值区域的例子 https leafletjs com examples choropleth https leafletjs com examples choropleth 这是他们使用的数据源 type Feature prop
  • 动态速度计 javascript 或 jquery 插件

    我希望有动态ajax插件在页面上显示速度计 一个想法是我设置一个背景并旋转针 有人知道相关插件吗 这里有一些供您参考 http bernii github com gauge js http bernii github com gauge
  • 非 DOM 对象上的 jQuery 自定义事件

    我最近阅读了一些代码 其功能如下 bob name Bob Smith rank 7 bob bind nameChanged function bob trigger nameChanged 这似乎有效 但我在 jQuery 文档或源代码
  • Node js 使用中间件重定向进行过多重定向

    在我的 Node js 应用程序 我使用的是express 4 x 中 我想检查用户是否已登录 如果用户未登录 我想重定向到我的登录页面 然后我在中间件中这样做 服务器 js app use function req res next if
  • 消息“在 jest.setTimeout 指定的 5000 毫秒超时内未调用异步回调”

    我正在使用 Puppeteer 和 Jest 来运行一些前端测试 我的测试如下 describe Profile Tab Exists and Clickable settings user gt test Assert that you
  • jquery 验证错误位置

    这看起来很简单 但我无法弄清楚 我正在使用 jquery 验证插件 我验证所有文件 但我想要的是在输入文本行中显示验证消息警报 例如在电子邮件输入中 请填写电子邮件地址 但现在它出现在所有字段下 在我的html中
  • 如何按照编写的顺序迭代 javascript 对象属性

    我发现了代码中的一个错误 我希望通过最少的重构工作来解决该错误 此错误发生在 Chrome 和 Opera 浏览器中 问题 var obj 23 AA 12 BB iterating through obj s properties for
  • 如何仅在 NextJS 站点构建期间使用 getInitialProps?

    当使用 NextJS 构建静态站点时 我想要getInitialProps方法仅在构建步骤期间触发 而不是在客户端上触发 在构建步骤中 NextJS 运行getInitialProps 方法 https nextjs org docs fe
  • Ember.js 处理 View 事件后转换到路由

    Setup 我有一个 Ember 应用程序 支持使用 Imgur API 上传图像 我已经有一个工作路线和模板来处理任何 Imgur ID 但我想在上传新图像后转换到此路线 使用返回的 Imgur ID 这是该应用程序的相关部分 http
  • 在为 RXJS 可观察量编写测试时,如何避免让调度程序通过我的业务逻辑?

    我发现使某些测试通过的唯一方法是显式地将调度程序传递给函数 为了便于说明 请考虑以下函数 function doStuff stream return stream delay 100 filter x gt x 2 0 map x gt
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • 淡出和循环一组 div 的最佳方式

    假设我有以下 div div class a You are funny div div class b You are smart div div class c You are cool div 最好的展示方式是什么div a持续 5
  • Nodejs mysql 获取正确的时间戳格式

    我在用着mysqljs https github com mysqljs mysql得到结果后sql我变得不同TimeStamp格式如下 created at Sat Jul 16 2016 23 52 54 GMT 0430 IRDT 但
  • JavaScript onresize 事件多次触发

    我在尝试仅在触发 onresize 事件时运行一次函数时遇到一些麻烦 我已经看过这个问题DOM onresize 事件 https stackoverflow com questions 1500312 javascript onresiz
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • 如何在 gulp.src 中使用基本正则表达式?

    我正在尝试选择两个文件gulp src highcharts js and highcharts src js 当然 我知道我可以使用数组表达式显式添加这两个表达式 但出于学习目的 我尝试为它们编写一个表达式 我读过可以使用简单的正则表达式
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值

随机推荐

  • openGL之API学习(一七九)材质Material原理

    在光线照射到某个物体表面的时候 总体上会出现三种反应 吸收 反射以及折射 其中反射又分为漫反射和镜面反射 而所谓的能量守恒法则说的则是 能量不可能凭空产生也不可能凭空消失 只可能发生转换 用在光线传播过程中则可以得到这样一个公式 入射能量
  • js高级 5.作用域与执行上下文的区别与联系

    作用域与执行上下文的区别 区别1 全局作用域之外 每个函数都会创建自己的作用域 作用域在函数定义时就已经确定了 而不是在函数调用时 全局执行上下文环境是在全局作用域确定之后 js代码马上执行之前创建 函数执行上下文是在调用函数时 函数体代码
  • C++语法3——if switch break continue的定义及用法

    接上节 循环语句 这一节写的是判断语句 if else语句 基本语法 第一种 if bool 布尔变量 如果bool值为真执行的语句 else 如果bool值为假执行的语句 如果布尔表达式为 true 则执行 if 块内的代码 如果布尔表达
  • Windows—OpenGL core profile版本初始化

    Windows OpenGL core profile版本初始化 请求OpenGL接口 初始化GLEW 设置DC像素格式 创建OpenGL上下文 绑定OpenGL渲染上下文 请求OpenGL接口 因为OpenGL只是一个标准 规范 具体的实
  • 视频 服务器运行时失败,Windows Media Player服务器运行失败的解决办法讲解

    当大家遇到Windows Media Player服务器运行失败 怎么解决呢 小编给大家分享一个Windows Media Player服务器运行失败的解决办法讲解 希望可以帮到大家 Windows Media Player服务器运行失败的
  • Could not locate device support files. This iPhone X (Model A1865, A1901, A1902, A1903) is running i

    出现的问题如下 Could not locate device support files This iPhone X Model A1865 A1901 A1902 A1903 is running iOS 12 0 16A5327f w
  • eclipse把server目录删了,怎么加回去啊

    new一个新的出来就行有了 具体操作步骤 在左边项目树的空白区域点鼠标右键 弹出菜单后依次选择 new other server server 然后选择Apache tomcat对应版本 如果是jboss就选jboss对应版本 点完成在树上
  • 串口连接传输文件

    文章目录 一 实验内容 二 实验准备 三 实验过程 四 总结 一 实验内容 串口传输文件的练习 将两台笔记本电脑 借助 usb转rs232 模块和杜邦线 建立起串口连接 然后用串口助手等工具软件 带文件传输功能 将一台笔记本上的一个大文件
  • ARouter 基础使用详解

    文章目录 参考资料 配置ARouter 初始化与销毁 初始化 销毁 路由注解与跳转 Activity之间的跳转 路径定义 代码示例 Fragment之间的切换 Fragment注入路由 Fragment的获取与切换 带参数的跳转 示例代码
  • Springboot yml 复杂对象的二维数组

    有两种形式可以表达这种需求 一 通过建立一个二维维数组来表述 1 Grid类 Data AllArgsConstructor NoArgsConstructor public class Grid Long x 栅格中心位置 x 值 Lon
  • 挖矿病毒排查并清除

    近期 公司内网linux环境出现了挖矿病毒 该病毒占满cpu进行挖矿 导致系统缓慢 现摸索了以下步骤进行清除 1 检测服务器是否有挖矿病毒 使用top命令查看进程及占用cpu百分比 如果该进程名称为随机字符串 且cpu占的非常的高 则很可能
  • OSPF篇——SPF算法——002

    目录 最短路径优先算法 SPF 阶段1 构建SPF树 阶段2 计算最优路由 最短路径优先算法 SPF 在一类LSA和二类LSA中 包括了拓扑信息和路由信息 OSPF将依据SPF算法和各类LSA LSA内既包含拓扑信息又包含路由信息 但是分开
  • 关于VS Code 断点失效(断点变空心)

    问题 VS code 断点再有的文件中能正常使用 有的文件中打断点会变成灰色空心 这部分代码没问题能正常运行 但是断点失效无法重断点处停下来 解决方案 1 百度查看相似案例解决方案 2 这是我的问题解决方法 查看代码是否有问题 VScode
  • linux系统之字符设备驱动——DS18B20温度传感器

    linux系统之字符设备驱动 DS18B20温度传感器 1 原理图 2 驱动程序 驱动程序 ds18b20 c Author your name Date 2021 02 06 19 41 29 LastEditTime 2021 02 2
  • css根据内容自动调整td高度,css – 如何使div高度100%内部td的100%

    这个问题似乎在stackoverflow上至少有10次 但是其中一个实际上没有答案 这一点略有不同 因为问题出现在Firefox中 我的桌子高度为100 高度为100 我把td的边界设置成可以看到的东西 我看到td是预期的100 我把一个d
  • JS前端点击记住密码之后再次登录时显示账号密码

    一 前端html代码 div div
  • Nacos下载与安装详解

    目录 一 安装与下载 二 数据持久化 三 docker当中安装nacos 一 安装与下载 下载地址 https github com alibaba nacos releases 我这里下载的windows版本的 不需要安装 下载好直接解压
  • requests.exceptions.InvalidHeader: Value for header {XX: (‘XX‘,)} must be of type str or bytes, not

    requests exceptions InvalidHeader Value for header xxx xxx must be of type str or bytes not
  • Http协议及各版本对比

    前言 本文主要简单介绍http协议发展的历史版本以及https的安全机制 对于更多深入协议内层及网络通信相关的知识 在此暂不做总结 何谓Http协议 超文本传输协议 Hypertext Transfer Protocol HTTP 是一个简
  • echart单系列柱状图增加配置筛选legend

    先看整体效果图 这边简单说下实现思路 单列柱子在官网demo是没有legend的 但是多列柱子是有的 因此 我们可以让单列柱子变成多列柱子的集合 然后集合里面只有一列是有data的 相当于是这样的集合 0 1 0 然后使用重叠配置 把那些空