Echarts 实现两两柱图重叠(背景和实际值柱图)

news2024/11/27 18:38:37

Echarts实现两两重叠柱状图_echarts 重叠柱状图_Web_阿凯的博客-CSDN博客

引用启发的博客

先来效果:

option = {
  backgroundColor: '#03213D',
  animation: true, // 控制动画是否开启
  animationDuration: 1000, // 动画的时长, 它是以毫秒为单位
  animationDuration: function (arg) {
    return 1000 * arg;
  },
  animationEasing: 'bounceOut', //linear 缓动动画
  animationThreshold: 8, // 动画元素的阈值
  tooltip: {
    trigger: 'axis',
    backgroundColor: 'rgba(0,0,0,.6)',
    borderColor: 'rgba(147, 235, 248, 0)',
    textStyle: {
      color: '#FFF'
    }
  },
  grid: {
    top: '10%',
    bottom: '5%',
    left: '3%',
    right: '8%',
    containLabel: true
  },
  xAxis: [
    {
      data: ['焦二', '焦三', '焦四'],
      axisLine: {
        show: true, //隐藏X轴轴线
        lineStyle: {
          color: '#163a5f',
          width: 2
        }
      },
      axisTick: {
        show: false, //隐藏X轴刻度
        alignWithLabel: true
      },
      axisLabel: {
        show: true,
        textStyle: {
          color: 'rgb(255,255,255,.7)',
          fontSize: 16,
          fontWeight: 'bold'
        },
        interval: 0,
        formatter: function (value) {
          var ret = ''; //拼接加\n返回的类目项
          var maxLength = 4; //每项显示文字个数
          var valLength = value.length; //X轴类目项的文字个数
          var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数
          if (rowN > 1) {
            //如果类目项的文字大于5,
            for (var i = 0; i < rowN; i++) {
              var temp = ''; //每次截取的字符串
              var start = i * maxLength; //开始截取的位置
              var end = start + maxLength; //结束截取的位置
              //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
              temp = value.substring(start, end) + '\n';
              ret += temp; //凭借最终的字符串
            }
            return ret;
          } else {
            return value;
          }
        }
      }
    },
    {
      data: ['焦二', '焦三', '焦四'],
      show:false,
      axisLine: {
        show: false, //隐藏X轴轴线
        lineStyle: {
          color: '#163a5f',
          width: 2
        }
      },
      axisTick: {
        show: false, //隐藏X轴刻度
        alignWithLabel: true
      },
      axisLabel: {
        show: true,
        textStyle: {
          color: 'rgb(255,255,255,.7)',
          fontSize: 16,
          fontWeight: 'bold'
        },
        interval: 0,
        formatter: function (value) {
          var ret = ''; //拼接加\n返回的类目项
          var maxLength = 4; //每项显示文字个数
          var valLength = value.length; //X轴类目项的文字个数
          var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数
          if (rowN > 1) {
            //如果类目项的文字大于5,
            for (var i = 0; i < rowN; i++) {
              var temp = ''; //每次截取的字符串
              var start = i * maxLength; //开始截取的位置
              var end = start + maxLength; //结束截取的位置
              //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
              temp = value.substring(start, end) + '\n';
              ret += temp; //凭借最终的字符串
            }
            return ret;
          } else {
            return value;
          }
        }
      }
    }
  ],
  yAxis: {
    type: 'value',
    // name: "单位:ml",
    nameTextStyle: {
      color: '#BDD8FB',
      fontSize: 12
    },

    splitLine: {
      show: true,
      lineStyle: {
        color: 'rgba(255, 255, 255, 0.15)',
        type: 'dashed' // dotted 虚线
      }
    },
    axisTick: {
      show: false
    },
    axisLine: {
      show: true, //隐藏X轴轴线
      lineStyle: {
        color: '#163a5f',
        width: 1
      }
    },
    axisLabel: {
      show: true,
      textStyle: {
        color: 'rgba(207,227,252,0.6)',
        fontSize: 12
      }
    }
  },
  series: [
    {
      name: '值 - 全焦产量',
      type: 'bar',
      barWidth: 30,
      itemStyle: {
        color: function (params) {
          return {
            type: 'linear',
            x: 0, //右
            y: 0, //下
            x2: 0, //左
            y2: 1, //上
            colorStops: [
              {
                offset: 0.01,
                color: '#ffffff' // 0% 处的颜色
              },
              {
                offset: 0.1,
                color: '#13D5FC'
              },
              {
                offset: 1,
                color: 'transparent' // 100% 处的颜色
              }
            ]
          };
          // }
        },
        barBorderRadius: [8, 8, 0, 0]
      },
      label: {
        show: true,
        position: 'top',
        distance: 0,
        color: 'rgb(0,255,255)',
        formatter: '{c}'
      },
      data: [35, 33, 65]
    },
    {
      name: '背景 - 全焦产量',
      type: 'bar',
      barWidth: '30px',
      xAxisIndex: 1,
      data: [100, 100, 100], //背景阴影长度
      itemStyle: {
        normal: {
          color: 'rgba(255,255,255,0.06)',
          barBorderRadius: [0, 0, 0, 0],
          borderColor: 'rgb(33,156,251)'
        }
      },
      tooltip: {
        show: false
      },
      zlevel: 9
    },
    {
      name: '值 - 冶金焦产量',
      type: 'bar',
      barWidth: 30,
      barGap: '100%',
      itemStyle: {
        color: function (params) {
          return {
            type: 'linear',
            x: 0, //右
            y: 0, //下
            x2: 0, //左
            y2: 1, //上
            colorStops: [
              {
                offset: 0.01,
                color: '#ffffff' // 0% 处的颜色
              },
              {
                offset: 0.1,
                color: '#13D5FC'
              },
              {
                offset: 1,
                color: 'transparent' // 100% 处的颜色
              }
            ]
          };
          // }
        },
        barBorderRadius: [8, 8, 0, 0]
      },
      label: {
        show: true,
        position: 'top',
        distance: 0,
        color: 'rgb(0,255,255)',
        formatter: '{c}'
      },
      data: [25, 33, 65]
    },
    {
      name: '背景 - 冶金焦产量',
      type: 'bar',
      xAxisIndex: 1,
      barWidth: '30px',
      barGap: '100%',
      data: [100, 100, 100], //背景阴影长度
      itemStyle: {
        normal: {
          color: 'rgba(255,255,255,0.06)',
          barBorderRadius: [0, 0, 0, 0],
          borderColor: 'rgb(33,156,251)'
        }
      },
      tooltip: {
        show: false
      },
      zlevel: 9
    }
  ]
};

源码直接粘贴到Echarts官网即可运行

重要的是多个X轴,一个Y轴,使背景的都使用同一个X轴,实际值柱图使用另外一个X轴,然后每个使用X轴的同一系列的最后一个series属性中,将barGap属性调整一致即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1218856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构C语言之线性表

发现更多计算机知识&#xff0c;欢迎访问Cr不是铬的个人网站 1.1线性表的定义 线性表是具有相同特性的数据元素的一个有限序列 对应的逻辑结构图形&#xff1a; 从线性表的定义中可以看出它的特性&#xff1a; &#xff08;1&#xff09;有穷性&#xff1a;一个线性表中的元…

Homography详解在MVSNet中的应用

Homography&#xff08;单应性变换&#xff09;是计算机视觉中的一个重要概念&#xff0c;用于描述两个平面之间的透视关系。在图像处理和计算机视觉中&#xff0c;Homography通常表示两个平面之间的投影关系&#xff0c;这种关系可以通过一个3x3的矩阵来表示。 在数学上&…

YB4019是一款完整的单电池锂离子恒流/恒压线性充电器电池

YB4019 耐压18V 1A线性双节8.4V 锂电充电芯片 概述&#xff1a; YB4019是一款完整的单电池锂离子恒流/恒压线性充电器电池。底部采用热增强ESOP8封装&#xff0c;外部组件数量低使YB4019成为便携式应用的理想选择。此外&#xff0c;YB4019设计用于在USB电源规格范围内工作。Y…

洗袜子的洗衣机哪款好?内衣洗衣机测评

随着人们的生活水平的提升&#xff0c;越来越多小伙伴来开始追求更高的生活水平&#xff0c;一些智能化的小家电就被发明出来&#xff0c;而且内衣洗衣机是其中一个。现在通过内衣裤感染到细菌真的是越来越多&#xff0c;所以我们对内衣裤的清洗频次会高于普通衣服&#xff0c;…

File类和IO流

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

2024苹果笔记本清理内存清理优化工具CleanMyMac X

在使用苹果笔记本电脑的过程中&#xff0c;清理内存是保持电脑运行流畅的重要步骤之一。当我们使用大量的应用程序和文件时&#xff0c;电脑的内存可能会被占满&#xff0c;导致系统变慢甚至出现崩溃的情况。因此&#xff0c;了解如何清理苹果笔记本的内存是非常必要的。本文将…

代码随想录 Day47 动态规划15 LeetCode T583 两个字符串的删除操作 T72 编辑距离

LeetCode T583 两个字符串的删除操作 题目链接:583. 两个字符串的删除操作 - 力扣&#xff08;LeetCode&#xff09; 题目思路: 本题有两个思路 1.使用两个字符串的长度之和-2*最长公共子串(换汤不换药) 代码随想录Day45 动态规划13 LeetCode T1143最长公共子序列 T1135 不相交…

适用于 Mac 的 10 款最佳数据恢复工具

对于依赖计算机处理重要文件&#xff08;无论是个人照片还是重要业务文档&#xff09;的任何人来说&#xff0c;数据丢失都可能是一场噩梦。 值得庆幸的是&#xff0c;有多种数据恢复工具专门用于Mac用户&#xff0c;可以帮助您恢复丢失或意外删除的文件。 在本文中&#xff0c…

Rust图形界面:eGUI的Panel布局

文章目录 Panel布局尺寸调节源码 Panel布局 eGUI提供面板堆叠的布局方案&#xff0c;即Panel布局。其布局逻辑是&#xff0c;根据当前面板指定的方向&#xff0c;尽可能地填充空间。 CentralPanel 占据屏幕剩余部分的空间SidePanel 占据屏幕两侧的空间&#xff0c;在具体调用…

【网络】TCP协议的相关实验

TCP协议的相关实验 一、理解listen的第二个参数1、实验现象2、TCP 半连接队列和全连接队列3、关于listen的第二个参数的一些问题4、SYN洪水Ⅰ、什么是SYN洪水攻击Ⅱ、如何解决SYN洪水攻击&#xff1f; 二、使用Wireshark分析TCP通信流程 一、理解listen的第二个参数 在编写TCP…

【23真题】无耻!“官方”假真题!害人!

这套华侨23真题是学弟给我从考场抄出来的版本&#xff0c;我刚刚做完解析&#xff01;后台就收到了另外一份“官方华侨23真题”的投稿。我本想对对回忆版&#xff0c;补充下题干。结果一对吓一跳&#xff01;竟然一道题都不一样&#xff01;给大家看下&#xff0c;真的好逼真&a…

《向量数据库指南》——TruLens + Milvus Cloud 构建RAG案例

具体案例 如前所述,RAG 配置选择可能对消除幻觉产生重大影响。下文中将基于城市百科文章构建问答 RAG 应用并展示不同的配置选择是如何影响应用性能的。在搭建过程中,我们使用 LlamaIndex 作为该应用的框架。大家可以在 Google Colab( https://colab.research.google.com/git…

Theory behind GAN

假如要生成一些人脸图&#xff0c;实际上就是想要找到一个分布&#xff0c;从这个分布内sample出来的图片像是人脸&#xff0c;分布之外生成的就不像人脸。而GAN要做的就是找到这个distribution。 在GAN之前用的是Maximum Likelihood Estimation。 Maximum Likelihood Estimat…

【用unity实现100个游戏之15】开发一个类保卫萝卜的Unity2D塔防游戏2(附项目源码)

文章目录 先看本次实现的最终效果前言敌人生命值扣血测试&#xff0c;敌人死亡控制敌人动画敌人死亡动画敌人转向问题源码完结 先看本次实现的最终效果 前言 本期紧接着上一篇&#xff0c;本期主要内容是实现敌人血条、动画和行为逻辑。 敌人生命值 绘制血条UI 新建 publ…

快速入门:构建您的第一个 .NET Aspire 应用程序

##前言 云原生应用程序通常需要连接到各种服务&#xff0c;例如数据库、存储和缓存解决方案、消息传递提供商或其他 Web 服务。.NET Aspire 旨在简化这些类型服务之间的连接和配置。在本快速入门中&#xff0c;您将了解如何创建 .NET Aspire Starter 应用程序模板解决方案。 …

unity 烘焙的时候出现模型没有光影的情况

unity 烘焙的时候出现模型没有光影的情况 1.模型没有设置生成光照贴图 需要勾选模型的生成光照贴图UVs,然后应用 2.游戏对象没有勾选静态选项 点开静态下拉列表&#xff0c;选择 contribute GI

Accelerate 0.24.0文档 四:Megatron-LM

参考《Megatron-LM》 文章目录 一、Megatron-LM集成简介二、环境配置设置conda环境的步骤&#xff1a; 二、Accelerate Megatron-LM Plugin三、自定义训练过程四、检查点转换五、文本生成六、支持ROPE 、 ALiBi和Multi-Query Attention七、注意事项 一、Megatron-LM集成简介 在…

再谈谷歌GMS认证之Android 13

写在前面的话 2023年来到一个新的公司&#xff0c;传说中的做互联网金融即将上市的高大上公司。 入职后才发现就是做pos机设备的一个小厂 哎&#xff0c;什么命啊&#xff01; 工作和手机开发的工作重合度可以达到95%以上&#xff0c;我不想做手机&#xff0c;偏偏又干上…

全网首位数字军人“穆兰”惊艳亮相,与拓世法宝共同绘就未来社会图景

古有穆桂英、花木兰挂帅出征&#xff0c;今有全网首位虚拟数字军人“穆兰”展巾帼风采。今年国庆节后&#xff0c;中国军号在全网为解放军新闻传播中心数字记者暨全军首位超写实虚拟数字军人征名&#xff0c;历时一个多月&#xff0c;经过征名提交、评委初评、公众投票、专家共…