echarts 交错柱状图, 对向柱状图, 双柱状图横向

设计图样式
在这里插入图片描述
上代码 父组件

 <bar-chart :option="energyOption"></bar-chart>
  initChart() {
      //上周能耗排行榜
      this.black_label = [
        "漫张农污处理设施",
        "邓庄农污处理设施",
        "王桥农污处理设施",
        "甲庄农污处理设施",
        "乔庄农污处理设施",
        "张门农污处理设施",
        "镇南河1#独立点源",
        "上张农污处理设施",
        "郭庄农污处理设施",
        "工部洲农污处理设施",
      ];
      this.red_label = [
        "白玉2农污处理设施",
        "护国农污处理设施",
        "新犁徐庄农污处理设施",
        "江圩1农污处理设施",
        "工农1农污处理设施",
        "滁河3农污处理设施",
        "高庄北农污处理设施",
        "大桥2号农污处理设施",
        "大桥1号农污处理设施",
        "姜桥河1#独立点源",
      ];
      this.black_Data = [
        "0.53",
        "0.52",
        "0.52",
        "0.50",
        "0.47",
        "0.41",
        "0.37",
        "0.30",
        "0.22",
        "0.05",
      ];
      this.red_Data = [
        "6.03",
        "6.51",
        "6.59",
        "7.06",
        "7.14",
        "7.56",
        "7.94",
        "7.95",
        "8.41",
        "9.90",
      ];
      let black_Data = this.black_Data;
      let red_Data = this.red_Data;
      let blackSalvProMax = this.processingData(this.black_Data);
      let redSalvProMax = this.processingData(this.red_Data);

      let option = {
        title: {
          left: "left",
          // text: "单位:度 / 吨",
          textStyle: {
            color: "#ccc",
            fontSize: 11,
          },
        },
        grid: [
          {
            left: "3%",
            right: "55%",
            containLabel: false,
            bottom: "3%",
            top: "4%",
          },
          {
            right: "7%",
            left: "55%",
            containLabel: false,
            bottom: "3%",
            top: "4%",
          },
        ],
        xAxis: [
          {
            type: "value",
            inverse: true,
            axisLine: {
              show: false,
            },
            axisTick: {
              show: false,
            },
            axisLabel: {
              show: false,
            },
            splitLine: {
              show: false,
            },
          },
          {
            gridIndex: 1,
            type: "value",
            axisLine: {
              show: false,
            },
            axisTick: {
              show: false,
            },
            axisLabel: {
              show: false,
            },
            splitLine: {
              show: false,
            },
          },
        ],
        yAxis: [
          {
            position: "right",
            axisLabel: {
              textStyle: {
                color: "#A3B0CC",
                fontSize: "12",
              },
              align: "right",
              padding: [0, 8, 0, 0],
              verticalAlign: "bottom",
              lineHeight: 36,
              formatter: function (value, index) {
                return value;
              },
            },
            axisLine: {
              show: false,
            },
            type: "category",
            inverse: false,
            axisTick: {
              show: false,
            },
            data: this.black_label,
          },
          {
            gridIndex: 1,
            position: "left",
            axisLabel: {
              textStyle: {
                color: "#A3B0CC",
                fontSize: "12",
                fontWeight: 1000,
              },
              align: "left",
              padding: [0, 0, 0, 8],
              verticalAlign: "bottom",
              lineHeight: 36,
              formatter: function (value, index) {
                return value;
              },
            },
            axisLine: {
              show: false,
            },
            type: "category",
            inverse: false,
            axisTick: {
              show: false,
            },
            data: this.red_label,
          },
        ],
        series: [
          {
            zlevel: 1,
            name: "红榜",
            type: "bar",
            barWidth: 16,
            label: {
              show: false,
              fontFamily: "Rubik-Medium",
              fontSize: 12,
              color: "#fff",
              position: "left",
              formatter: function (params) {
                return params.value;
              },
            },
            itemStyle: {
              color: {
                type: "linear",
                x: 0,
                y: 0,
                x2: 1,
                y2: 0,
                colorStops: [
                  {
                    offset: 0,
                    color: "#0087EB", // 0% 处的颜色
                  },
                  {
                    offset: 1,
                    color: "#41CFFF", // 100% 处的颜色
                  },
                ],
                global: false, // 缺省为 false
              },
            },
            data: this.black_Data,
          },
          //顶部的横杠代码
          {
            zlevel: 1,
            name: "红榜",
            type: "pictorialBar",
            symbol: "rect",
            symbolSize: [5, 16], //前者控制宽度 后者控制高度
            symbolOffset: [-5, 0],
            symbolPosition: "end",
            data: this.black_Data,
            itemStyle: {
              color: "#D0EBFF", //横线颜色
            },
          },
          //最大值
          {
            name: "红榜",
            type: "bar",
            barWidth: 16,
            barGap: "-100%",
            margin: "20",
            textStyle: {
              //图例文字的样式
              fontSize: 10,
              color: "#fff",
            },
            itemStyle: {
              normal: {
                color: "#05325F",
                fontSize: 10,
              },
            },
            label: {
              show: true,
              fontFamily: "Rubik-Medium",
              fontSize: 12,
              color: "#fff",
              position: "left",
              formatter: function (params) {
                return black_Data[params.dataIndex];
              },
            },
            data: blackSalvProMax,
          },
          {
            zlevel: 1,
            name: "黑榜",
            type: "bar",
            barWidth: 16,
            label: {
              show: false,
              fontFamily: "Rubik-Medium",
              fontSize: 12,
              color: "#fff",
              position: "right",
              formatter: function (params) {
                return params.value;
              },
            },
            xAxisIndex: 1,
            yAxisIndex: 1,
            itemStyle: {
              color: {
                type: "linear",
                x: 0,
                y: 0,
                x2: 1,
                y2: 0,
                colorStops: [
                  {
                    offset: 0,
                    color: "#3AD174", // 0% 处的颜色
                  },
                  {
                    offset: 1,
                    color: "#37B767", // 100% 处的颜色
                  },
                ],
                global: false, // 缺省为 false
              },
            },
            data: this.red_Data,
          },
          //顶部的横杠代码
          {
            zlevel: 1,
            name: "黑榜",
            type: "pictorialBar",
            xAxisIndex: 1,
            yAxisIndex: 1,
            symbol: "rect",
            symbolSize: [5, 16], //前者控制宽度 后者控制高度
            symbolOffset: [5, 0],
            symbolPosition: "end",
            data: this.red_Data,
            itemStyle: {
              color: "#D0EBFF", //横线颜色
            },
          },
          {
            name: "黑榜",
            type: "bar",
            barWidth: 16,
            xAxisIndex: 1,
            yAxisIndex: 1,
            barGap: "-100%",
            margin: "20",
            data: redSalvProMax,
            textStyle: {
              //图例文字的样式
              fontSize: 10,
              color: "#fff",
            },
            itemStyle: {
              normal: {
                color: "#05325F",
                fontSize: 10,
              },
            },
            label: {
              show: true,
              fontFamily: "Rubik-Medium",
              fontSize: 12,
              color: "#fff",
              position: "right",
              formatter: function (params) {
                return red_Data[params.dataIndex];
              },
            },
          },
        ],
      };
      this.energyOption = option;
    },
    //获取最大值
    processingData(arr) {
      console.log("arr", arr);
      if (arr.length) {
        var floatArray = arr.map(function (item) {
          return parseFloat(item);
        });
        // 获取最大值
        var maxValue = Math.max(...floatArray);
        var salvProMax = []; //背景按最大值
        for (let i = 0; i < arr.length; i++) {
          salvProMax.push(maxValue);
        }
        console.log("salvProMax", salvProMax);
        return salvProMax;
      }
    }
 

子组件:

<template>
  <div :class="className" :style="{height:height,width:width}" />
</template>

<script>
import echarts from "echarts";
require("echarts/theme/macarons"); // echarts theme
import resize from "./mixins/resize";

const animationDuration = 6000;

export default {
  mixins: [resize],
  props: {
    className: {
      type: String,
      default: "chart",
    },
    width: {
      type: String,
      default: "100%",
    },
    height: {
      type: String,
      default: "100%",
    },
    option: {
      type: Object,
    },
  },
  data() {
    return {
      chart: null,
    };
  },
  watch: {
    option: {
      deep: true,
      handler(val) {
        this.setOptions(val);
      },
    },
  },
  mounted() {
    this.$nextTick(() => {
      this.initChart();
    });
  },
  beforeDestroy() {
    if (!this.chart) {
      return;
    }
    this.chart.dispose();
    this.chart = null;
  },
  methods: {
    initChart() {
      // this.chart = echarts.init(this.$el, "macarons");
      this.chart = echarts.init(this.$el, );
      this.chart.setOption(this.option);
    },
    setOptions(option) {
      this.chart.setOption(option);
    }
  },
};
</script>

实现的效果
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

做抖音小店卖什么最赚钱?精准锁定爆款的技巧!新手商家必看

哈喽~我是电商月月 做抖音小店的核心就是选品&#xff0c;商品好&#xff0c;出单的几率就多&#xff0c;那么怎么选中一个好的商品&#xff0c;就是每个商家必须细琢的一个技巧&#xff01; 为了解答这个疑惑&#xff0c;今天月月就给大家介绍几个赚钱的类别&#xff0c;并教…

目标检测数据集 - 打架检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍&#xff1a;打架检测数据集&#xff0c;真实监控场景高质量打架图片数据&#xff0c;涉及场景丰富&#xff0c;比如街道场景打架数据、酒吧场景打架数据、商店场景打架数据、公交车场景打架数据、监狱场景打架数据、空旷地打架数据、两人打架数据、多人群殴数据等。…

用cocos2d-python绘制游戏开发的新篇章

用cocos2d-python绘制游戏开发的新篇章 第一部分&#xff1a;背景 在游戏开发的世界中&#xff0c;寻找一个强大而灵活的框架至关重要。cocos2d-python是一个Python游戏开发框架&#xff0c;它提供了一套丰富的功能&#xff0c;用于创建2D游戏、图形和交互式应用。基于流行的c…

企业办公网安全管控挑战与解决方案

在数字化浪潮的推动下&#xff0c;企业正经历前所未有的变革。然而&#xff0c;随之而来的是一系列复杂的网络安全风险和挑战。我们的网络边界不再清晰&#xff0c;各种设备轻松接入企业网络&#xff0c;这不仅带来了便利&#xff0c;也极大地增加了安全风险。想象一下&#xf…

面试被问准备多久要孩子?这样回答

听说有人面试被问到多久要孩子的问题&#xff0c;当时觉得很尴尬&#xff0c;不知如何回答&#xff0c;怕回答的不好不被录用&#xff0c;其实你可以这样回答&#xff0c;让面试官心满意足。 A 面试官&#xff1a;结婚了吗&#xff1f; 我&#xff1a;结婚了 面试官&#xff1…

innovus:max_delay与path adjustment

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 一些过约束的path&#xff0c;比如端口in/out上的时序&#xff0c;我们需要让它更乐观以免过修浪费资源&#xff0c;反而让需要clean的path没修干净。这时候我们常用set_path_a…

数据中心综合解决方案

安科瑞电气股份有限公司 祁洁 acrelqj 一、方案介绍 安科瑞电气紧跟数据中心发展形式&#xff0c;推出数据中心综合解决方案&#xff0c;集成了变配电监测、电源备自投、电气接点测温、智能照明控制、电能质量监测及治理、蓄电池在线监测、精密配电监控、智能母线监控以及消…

pdf文件太大如何变小,苹果电脑压缩pdf文件大小工具软件

压缩PDF文件是我们在日常办公和学习中经常会遇到的需求。PDF文件由于其跨平台、保持格式不变的特点&#xff0c;被广泛应用于各种场合。然而&#xff0c;有时候我们收到的PDF文件可能过大&#xff0c;不便于传输和存储&#xff0c;这时候就需要对PDF文件进行压缩。下面&#xf…

通过ssr-echarts,服务端生成echarts图

ssr-echarts &#xff1a;一个开源项目&#xff0c;它能够服务端渲染 ECharts 图表&#xff0c;并直接生成 PNG 图片返回。该项目提供了多种主题&#xff0c;并且支持 GET 和 POST 请求。如果参数较多&#xff0c;建议使用 POST 方法。用户可以自己部署这个服务。 1. 服务端安装…

Codeforces Round 948 (Div. 2) A~D

A. Little Nikita &#xff08;思维&#xff09; 题意&#xff1a; 小 A A A决定用一些立方体建一座塔。一开始&#xff0c;塔上没有任何立方体。在一次移动中&#xff0c;小 A A A要么正好把 1 1 1 个立方体放到塔顶&#xff0c;要么正好从塔顶移走 1 1 1 个立方体。存不存…

目标检测数据集 - 城市道路行驶车辆检测数据集下载「包含VOC、COCO、YOLO三种格式」

​​​数据集介绍&#xff1a;城市道路行驶车辆检测数据集&#xff0c;真实监控场景高质量图片数据&#xff0c;涉及场景丰富&#xff0c;比如城市道路快速行驶车辆、城市道路慢速行驶车辆、城市道路密集行驶车辆、城市道路夜间低光行驶车辆数据等。数据集标注标签划分为 "…

Qt报错:libvlc开发的程序,出现Direct3D output全屏窗口

问题描述&#xff1a; 在qt中开发重播模块时&#xff0c;第一次在窗口正常播放&#xff0c;点击重播按钮后会弹出新的Direct3D output窗口播放视频 分析&#xff1a; 因为libvlc_media_player_set_hwnd 这个函数 设置了不存在的窗口句柄&#xff0c;导致vlc视频播放窗口没有嵌…

python-题库篇-为什么数组下标从0 开始而不是 1

为什么很多编程语言要把 0 作为第一个下标索引&#xff0c;而不是直观的 1 呢&#xff1f; 这个问题 Dijkstra 已经解答过了&#xff0c;没错&#xff0c;就是你知道的 Dijkstra&#xff0c;Dijkstra 最短路径算法&#xff0c;荷兰语全名是 Edsger Wybe Dijkstra&#xff0c;于…

【一百零五】【算法分析与设计】分解质因数,952. 按公因数计算最大组件大小,204. 计数质数,分解质因数,埃式筛

分解质因数 题目&#xff1a;分解质因数 题目描述 给定一个正整数 n&#xff0c;编写一个程序将其分解为质因数&#xff0c;并按从小到大的顺序输出这些质因数。 输入格式 一个正整数 n&#xff0c;其中 n 的范围是 1 < n < 10^18。 输出格式 按从小到大的顺序输出 n 的质…

【NoSQL数据库】Redis命令、持久化、主从复制

Redis命令、持久化、主从复制 redis配置 Redis命令、持久化、主从复制Redis数据类型redis数据库常用命令redis多数据库常用命令1、多数据库间切换2、多数据库间移动数据3、清除数据库内数据 key命令1、keys 命令2、判断键值是否存在exists3、删除当前数据库的指定key del4、获取…

品牌控价数据监测频次

品牌控价首先需对全网品牌相关链接进行数据监测&#xff0c;涵盖页面价与到手价&#xff0c;促销信息监测必不可少&#xff0c;如平台优惠券、店铺券、满减券、新人券、会员券等&#xff0c;因其优惠信息和价格随时可能变化&#xff0c;故监测频次要合理设置以实现全网数据的准…

硬件26、EDA绘制板框

1、放置-板框-矩形 2、在pcb上绘制出需要大小的板框 3、设置板框四个角为圆弧状&#xff0c;在右侧属性栏设置圆角半径

【python】成功解决“ModuleNotFoundError: No module named ‘timm’”错误的全面指南

成功解决“ModuleNotFoundError: No module named ‘timm’”错误的全面指南 一、引言 在Python编程中&#xff0c;经常会遇到各种导入模块的错误&#xff0c;其中“ModuleNotFoundError: No module named ‘timm’”就是一个典型的例子。这个错误意味着你的Python环境中没有安…

自动驾驶仿真:python和carsim联合仿真案例

文章目录 前言一、Carsim官方案例二、Carsim配置1、车辆模型2、procedure配置3、Run Control配置 三、python编写四、运行carsim五、运行python总结 前言 carsim内部有许多相关联合仿真的demo&#xff0c;simulink、labview等等都有涉及&#xff0c;这里简单介绍下python和car…

使用kubespray部署k8s生产环境

使用kubespray部署k8s生产环境 系统环境 OS: Static hostname: test Icon name: computer-vm Chassis: vm Machine ID: 22349ac6f9ba406293d0541bcba7c05d Boot ID: 83bb7e5dbf27453c94ff9f1fe88d5f02 Virtualization: vmware Operating System: Ubuntu 22.04.4 LTS Kernel: L…