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

news2025/1/23 4:54:16

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

 <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>

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

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

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

相关文章

充电宝如何选购?2024年全网充电宝选购大全!选充电宝注意这几点

在2024年的数字生活浪潮中&#xff0c;充电宝虽小&#xff0c;却是维系我们设备活力的关键。但市面上产品良莠不齐&#xff0c;安全问题频发&#xff0c;如何从中筛选出既安全又实用的充电宝&#xff0c;成为每位数码达人的必修课。别担心&#xff0c;这篇“充电宝如何选购&…

leetcode第867题:转置矩阵

matrix[i][j]需要放在转置矩阵的(j,i)位置 public class Solution {public int[][] Transpose(int[][] matrix) {int rows matrix.Length; int columns matrix[0].Length; int[][] array2 new int[columns][];// 初始化内部数组&#xff08;列数&#xff09;for (int i 0…

判断经纬度是否在某个城市内

一、从高德获取指定城市边界经纬度信息 通过apifox操作&#xff1a; 二、引入第三方jar包&#xff1a; maven地址&#xff1a;https://mvnrepository.com/ maven依赖&#xff1a; <dependency><groupId>org.locationtech.jts</groupId><artifactId>…

私域流量课程企业培训小程序网站的作用是什么

中高型企业在发展方面&#xff0c;各个环节都需俱到&#xff0c;内部培训或是外部相关课程需求度都比较高&#xff0c;比如近些年火热的私域流量运营&#xff0c;存在着不少干货输出机构或个人&#xff0c;线上线下课程培训&#xff0c;做企业培训和私域流量运营课程输出的机构…

深入分析 Android Service (完)

文章目录 深入分析 Android Service (完)1. Service 的生命周期管理2. Service 的生命周期方法2.1 onCreate()2.2 onStartCommand(Intent intent, int flags, int startId)2.3 onBind(Intent intent)2.4 onUnbind(Intent intent)2.5 onRebind(Intent intent)2.6 onDestroy() 3.…

在当前页面拿到抽屉弹窗页面中从后端返回的值 #Vue3 #两个.vue页面之间传值问题

在当前页面拿到抽屉弹窗页面中从后端返回的值 #Vue3 #两个.vue页面之间传值问题 *解决方法一&#xff1a; 将抽屉弹窗里从后端返回得到的值缓存在浏览器中&#xff0c;在当前页面中从浏览器中获取该值。 &#xff08;原理其实就是借助第三个盒子来传递一下值&#xff0c;太小学…

钣金件设计规范

(一&#xff09; 钣金 1、钣金的概念 钣金&#xff08;sheet metal&#xff09;是针对金属薄板&#xff08;厚度通常在6mm以下&#xff09;的 一种综合冷加工工艺&#xff0c;包括冲裁、折弯、拉深、成形、锻压、铆合等&#xff0c; 其显著的特征是同一零件厚度一致。 2、钣…

【代码审计】star7th/showdoc:v3.2.4 Phar反序列化写webshell

目录 漏洞速览 复现 漏洞速览 微步在线X情报社区-威胁情报查询_威胁分析平台_开放社区 主要就是两步&#xff0c;sql注入拿到用户token&#xff0c;再以用户身份上传恶意phar包打phar反序列化 因为文件上传对用户权限没有限制&#xff0c;故本文对sql注入部分不做探讨。…

Python SMTP配置示例:如何群发邮件列表?

Python SMTP配置的高级技巧&#xff1f;API接口的正确使用方法&#xff1f; Python的SMTP库为我们提供了一种简单而强大的方式来实现邮件的群发功能。Aok将通过一个示例&#xff0c;向您展示如何使用Python SMTP配置来群发邮件列表&#xff0c;并在此过程中提及AokSend邮件API…

MulterError: Field name missing 报错解决

Request POST /FileUpload/chunkApi/upload/mProjectNews/Images failed with status code 500. MulterError: Field name missing. 原因&#xff1a;Multer是基于Busboy解析的表单参数信息&#xff0c;经定位发现是解析表单中文本参数时出现了null&#xff0c;故收到MISSION_…

掌握 NestJS 10.x:NestJS 结合 PostgreSQL 使用详解

NestJS 是一个用于构建高效、可扩展的 Node.js 服务端应用的框架。结合 PostgreSQL 数据库,可以为应用提供强大的数据存储和查询功能。本文将详细介绍如何在 NestJS 项目中集成和使用 PostgreSQL,并创建一个包含增加用户接口的完整示例。 1. 安装必要的依赖 首先,确保你的…

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

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

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

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

echarts legend. icon的展示

默认展示 icon展示circle圆形rect矩形roundRect圆角矩形triangle三角形diamond菱形pin水滴arrow箭头none不显示

Linux C语言:输入输出(printf scanf)

一、数据输出 1、C语言I/O操作由函数实现 #include <stdio.h> 2、字符输出函数 格式: int putchar( int c ) 参数: c为字符常量、变量或表达式 功能&#xff1a;把字符c输出到显示器上 返值&#xff1a;putchar函数的返回值是参数的ASCLL码值&#xff1b; #inclu…

蓝牙网关是什么?能做什么?

蓝牙网关是一种集成了蓝牙通信技术的设备&#xff0c;它在物联网&#xff08;IoT&#xff09;和其他无线通信场景中扮演着重要的角色。以下是蓝牙网关的基本概念以及它的主要功能和应用场景&#xff1a; 蓝牙网关是什么&#xff1f; 蓝牙网关是一种设备&#xff0c;它能够将蓝…

什么是通配符SSL证书?要怎么申请?

通配符SSL证书的作用主要是为了方便管理和加密具有多个子域名的网站。它能够保护一个主域名及其所有的同级子域名&#xff0c;无论子域名的数量多少或名称如何变化。使用一个通配符证书&#xff0c;你可以为像 *.example.com 这样的设置加密&#xff0c;这样不论是 blog.exampl…

使用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…

【成品设计】基于华大hc32F005c6ua的读取NFC卡

《基于华大hc32F005c6ua的读取NFC卡》 整体功能&#xff1a; 单片机:华大hc32F005c6ua 1、支持单片机spi接口读取nfc读卡器芯片rc522读写数据 2、读取到的数据可以通过单片机uart接口通信&#xff0c;上报给上位机&#xff08;485主机&#xff09; 3、uart接口支持modbus协议…

飞腾D2000+FPGA云终端,实现从硬件、操作系统到应用的完全国产、自主、可控

飞腾云终端基于国产化飞腾高性能8核D2000处理器平台的国产自主可控解决方案&#xff0c;搭载昆仑国产化固件,支持UOS、银河麒麟等国产操作系统&#xff0c;满足国产化信息安全运算的需求&#xff0c;实现从硬件、操作系统到应用的完全国产、自主、可控&#xff0c;是国产信息安…