echarts双Y轴对齐;echarts堆叠柱状图;echarts数据集dataset结构;

news2024/12/27 12:59:06

提示:主要解决三个问题:1.echarts双Y轴设置和对齐 2.echarts堆叠柱状图 3.echarts数据集dataset结构

这里是引用


一、echarts双Y轴设置和对齐

1.双Y轴:

yAxis两组数据,且series有组数据设置 yAxisIndex: 1 代表使用哪个Y轴的数据展示(多个 y轴的时候有用) 0 1

      yAxis: [
        {
          type: "value",
          name: "数量(次)", //坐标轴名称
          min: 0, //最小值
          max: max_Y1, //最大值
          splitNumber: 5, //坐标轴的分割段数
          interval: max_Y1 / 5, // 强制设置坐标轴分割间隔度(取本Y轴的最大值 max / 分割段数 splitNumber )
          splitLine: {
            lineStyle: {
              color: "#ad1", //刻度线颜色
            },
          },
        },
        {
          type: "value",
          name: "平均响应时间", //坐标轴名称
          min: 0, //最小值
          max: max_Y2, //最大值
          splitNumber: 5, //坐标轴的分割段数
          interval: max_Y2 / 5, // 强制设置坐标轴分割间隔度(取本Y轴的最大值 max / 分割段数 splitNumber )
          axisLabel: {
            formatter: "{value}(ms)", //自定义Y轴刻度名称
          },
        },
      ],

这里是引用

2.解决对齐逻辑:

示例:使用双Y轴时候,由于左右刻度和最大值不同,会导致左右Y轴的横向刻度线不对齐。
在这里插入图片描述

设置左右两侧Y轴对齐(找到各自轴最大值,除以相同分割段数,就得到每截分割间隔度,即对齐)

获取各自轴最大:

    let max_Y1 = Math.ceil(Math.max(...[0, 1, 2, 130]) / 9.5) * 10 || 10; //找出左侧Y轴的数据的最大值 9.5与10的处理是为了不让最大值刚好到坐标轴最顶部
    let max_Y2 = Math.ceil(Math.max(...[0, 1, 2, 380]) / 9.5) * 10 || 10;

设置最小最大值、分割段数和刻度:

      yAxis: [
        {
          type: "value",
          name: "数量(次)", //坐标轴名称
          min: 0, //最小值
          max: max_Y1, //最大值
          splitNumber: 5, //坐标轴的分割段数
          interval: max_Y1 / 5, // 强制设置坐标轴分割间隔度(取本Y轴的最大值 max / 分割段数 splitNumber )
          splitLine: {
            lineStyle: {
              color: "#ad1", //刻度线颜色
            },
          },
        },
        {
          type: "value",
          name: "平均响应时间", //坐标轴名称
          min: 0, //最小值
          max: max_Y2, //最大值
          splitNumber: 5, //坐标轴的分割段数
          interval: max_Y2 / 5, // 强制设置坐标轴分割间隔度(取本Y轴的最大值 max / 分割段数 splitNumber )
          axisLabel: {
            formatter: "{value}(ms)", //自定义Y轴
          },
        },
      ],

二、echarts堆叠柱状图

1.设置对应stack相同值

这里是引用

三、echarts数据集dataset结构

1.数据集dataset文档

优点:

能够贴近数据可视化常见思维方式:(I)提供数据,(II)指定数据到视觉的映射,从而形成图表。
数据和其他配置可以被分离开来。数据常变,其他配置常不变。分开易于分别管理。
数据可以被多个系列或者组件复用,对于大数据量的场景,不必为每个系列创建一份数据。
支持更多的数据的常用格式,例如二维数组、对象数组等,一定程度上避免使用者为了数据格式而进行转换。

2.数据结构

      dataset: {
        // 每个维度的信息
        dimensions: [
          "product", // 默认product的值是X轴的刻度
          "正常请求数", //这5个是维度
          "错误响应数",
          "慢响应数",
          "非常慢响应数",
          "平均响应时间",
        ],

        
        source: [
          // ['product','正常请求数','错误响应数','慢响应数','非常慢响应数','平均响应时间'],//刻度+5个维度的值(这一组数据可以省略 那么他会自动对应到series的数据)
          ["2023-04-22", 121, 10, 4, 12, 61], //几个数组就代表有几次数据
          ["2023-04-23", 55, 33, 2, 12, 62],
          ["2023-04-24", 54, 0, 21, 0, 361],
          ["2023-04-25", 52, 11, 11, 11, 11],
          ["2023-04-26", 46, 0, 0, 0, 12],
          ["2023-04-27", 0, 0, 0, 0, 0],
        ],
      }

四、以下代码可直接复制使用

下载:

npm install echarts@5.2.2 --save

main.js:

// main.js 引入echarts方式如下
import * as echarts from 'echarts'
Vue.prototype.$echarts = echarts

index.vue:

<template>
  <div class="dlsFirst">
    <div class="one_box" id="one_box" ref="one_box"></div>
  </div>
</template>

<script>
export default {
  name: "dlsFirst",
  data() {
    return {
      chartHeight1: "300px",
      option2: {},
    };
  },
  mounted() {
    // 这两个值为了设置左右两侧Y轴对齐(找到各自轴最大值,除以相同分割段数,就得到每截分割间隔度,即对齐)
    let max_Y1 = Math.ceil(Math.max(...[0, 1, 2, 130]) / 9.5) * 10 || 10; //找出左侧Y轴的数据的最大值 9.5与10的处理是为了不让最大值刚好到坐标轴最顶部
    let max_Y2 = Math.ceil(Math.max(...[0, 1, 2, 380]) / 9.5) * 10 || 10;

    // console.log(this.$echarts)
    const myChart = this.$echarts.init(this.$refs.one_box);
    //调用resize方法给图表设置动态宽高
    myChart.resize({
      height: this.chartHeight1,
    });
    this.option2 = {
      legend: {
        // 颜色模块哪几个和位置(为空对象时候默认都有{})
        data: [
          "正常请求数",
          "错误响应数",
          "慢响应数",
          "非常慢响应数",
          "平均响应时间",
        ],
        top: "bottom",
      },
      grid: {
        //图表在画布中的位置
        top: "12%",
        left: "6%",
        right: "8%",
        bottom: "26%",
      },
      xAxis: {
        type: "category",
        axisLabel: {
          color: "#000000D8",
          fontFamily: "PingFang SC",
          // fontWeight: 'medium',
          fontSize: 12,

          // formatter: "{value}自定义",
          // 使用函数模板,函数参数分别为刻度数值(类目),刻度的索引 --- 自定义对应轴的刻度名称文案
          formatter: function (value, index) {
            return value + "自定义";
          },
          interval: 0,
          textStyle: {
            //X轴Y轴下面文字或数据颜色设置
            color: "cyan",
          },
        },
      },
      yAxis: [
        {
          type: "value",
          name: "数量(次)", //坐标轴名称
          min: 0, //最小值
          max: max_Y1, //最大值
          splitNumber: 5, //坐标轴的分割段数
          interval: max_Y1 / 5, // 强制设置坐标轴分割间隔度(取本Y轴的最大值 max / 分割段数 splitNumber )
          splitLine: {
            lineStyle: {
              color: "#ad1", //刻度线颜色
            },
          },
        },
        {
          type: "value",
          name: "平均响应时间", //坐标轴名称
          min: 0, //最小值
          max: max_Y2, //最大值
          splitNumber: 5, //坐标轴的分割段数
          interval: max_Y2 / 5, // 强制设置坐标轴分割间隔度(取本Y轴的最大值 max / 分割段数 splitNumber )
          axisLabel: {
            formatter: "{value}(ms)", //自定义Y轴刻度名称
          },
        },
      ],
      tooltip: {
        // 提示框组件---默认如下配置即可。
        trigger: "axis", //触发类型。
        axisPointer: {
          //坐标轴指示器配置项。
          type: "shadow",
        },
      },
      //数据集
      dataset: {
        // 每个维度的信息
        dimensions: [
          "product", // 默认product的值是X轴的刻度
          "正常请求数", //这5个是维度
          "错误响应数",
          "慢响应数",
          "非常慢响应数",
          "平均响应时间",
        ],

        // 维度和数据(以下三种数据结构都可以)
        source: [
          // ['product','正常请求数','错误响应数','慢响应数','非常慢响应数','平均响应时间'],//刻度+5个维度的值(这一组数据可以省略 那么他会自动对应到series的数据)
          ["2023-04-22", 121, 10, 4, 12, 61], //几个数组就代表有几次数据
          ["2023-04-23", 55, 33, 2, 12, 62],
          ["2023-04-24", 54, 0, 21, 0, 361],
          ["2023-04-25", 52, 11, 11, 11, 11],
          ["2023-04-26", 46, 0, 0, 0, 12],
          ["2023-04-27", 0, 0, 0, 0, 0],
        ],
        // source: [
        //   { product: "2023-04-22", '正常请求数': 121, '错误响应数': 10,'慢响应数': 4, '非常慢响应数': 12, '平均响应时间': 61  },
        //   { product: "2023-04-23", '正常请求数': 55, '错误响应数': 33,'慢响应数': 2, '非常慢响应数': 12, '平均响应时间': 62  },
        //   { product: "2023-04-24", '正常请求数': 54, '错误响应数': 0,'慢响应数': 21, '非常慢响应数': 0, '平均响应时间': 361  },
        //   { product: "2023-04-25", '正常请求数': 52, '错误响应数': 11,'慢响应数': 11, '非常慢响应数': 11, '平均响应时间': 11  },
        //   { product: "2023-04-26", '正常请求数': 46, '错误响应数': 0,'慢响应数': 0, '非常慢响应数': 0, '平均响应时间': 12  },
        //   { product: "2023-04-27", '正常请求数': 0, '错误响应数': 0,'慢响应数': 0, '非常慢响应数': 0, '平均响应时间': 0  },
        // ],
        // source: [
        //   {
        //     product: "2023-04-22",
        //     正常请求数: 121,
        //     错误响应数: 10,
        //     慢响应数: 4,
        //     非常慢响应数: 0,
        //     平均响应时间: 61,
        //   },
        //   {
        //     product: "2023-04-23",
        //     正常请求数: 55,
        //     错误响应数: 33,
        //     慢响应数: 2,
        //     非常慢响应数: 0,
        //     平均响应时间: 62,
        //   },
        //   {
        //     product: "2023-04-24",
        //     正常请求数: 54,
        //     错误响应数: 0,
        //     慢响应数: 21,
        //     非常慢响应数: 0,
        //     平均响应时间: 361,
        //   },
        //   {
        //     product: "2023-04-25",
        //     正常请求数: 52,
        //     错误响应数: 11,
        //     慢响应数: 11,
        //     非常慢响应数: 11,
        //     平均响应时间: 11,
        //   },
        //   {
        //     product: "2023-04-26",
        //     正常请求数: 46,
        //     错误响应数: 0,
        //     慢响应数: 0,
        //     非常慢响应数: 0,
        //     平均响应时间: 12,
        //   },
        //   {
        //     product: "2023-04-27",
        //     正常请求数: 0,
        //     错误响应数: 0,
        //     慢响应数: 0,
        //     非常慢响应数: 0,
        //     平均响应时间: 0,
        //   },
        // ],
      },
      // 配置每一组的数据名称、颜色、类型
      series: [
        {
          name: "正常请求数",
          color: "#8BC34A",
          type: "bar",
          stack: "one", // stack值相同的堆叠到一起
        },
        {
          name: "错误响应数",
          color: "#FF5722",
          type: "bar",
          stack: "one",
        },
        {
          name: "慢响应数",
          color: "#FFEB3B",
          type: "bar",
          stack: "two",
        },
        {
          name: "非常慢响应数",
          color: "#FFC107",
          type: "bar",
          stack: "two",
        },
        {
          name: "平均响应时间",
          color: "#007d7b",
          type: "line",
          smooth: true, // 平滑曲线
          lineStyle: {
            width: 3,
          },
          yAxisIndex: 1, // 使用哪个Y轴的数据展示(多个 y轴的时候有用) 0  1
        },
      ],
    };
    myChart.setOption(this.option2);
  },
  methods: {},
};
</script>

<style lang="less" scoped>
</style>

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

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

相关文章

算法训练Day37:738.单调递增的数字 968.监控二叉树

文章目录 单调递增的数字题解 监控二叉树题解 单调递增的数字 CategoryDifficultyLikesDislikesContestSlugProblemIndexScorealgorithmsMedium (50.32%)3690--0 Tags 贪心 | 数学 Companies 当且仅当每个相邻位数上的数字 x 和 y 满足 x < y 时&#xff0c;我们称这个…

【源码解析】多数据源 dynamic-datasource快速入门及源码解析

快速入门 依赖引入 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>3.5.1</version></dependency>配置文件 spring.datasource.druid.stat-view-se…

在不确定性时代,亚马逊云科技让企业拥有持续增长力

2023年3月29日「哈佛商业评论-未来管理沙龙」活动盛大启幕&#xff0c;此次沙龙活动以穿越周期的力量为主题方向&#xff0c;以解码跨国企业持续增长源动力为主旨&#xff0c;希望为企业高层管理者们带来更多思考和启迪。 作为特邀嘉宾&#xff0c;亚马逊全球副总裁、亚马逊云…

【数据库】数据库的基础知识

目录 前言 1、 查看数据库 1.1、查看所有数据库&#xff08;show databases;&#xff09; 1.2、创建数据库之后&#xff0c;查看创建的数据库的基本信息。 2、 创建数据库 2.1、直接创建数据库&#xff08;create database [数据库名];&#xff09; 2.2、创建数据库的时…

如何将b站缓存的m4s视频转换成mp4格式

阅读前请看一下&#xff1a;我是一个热衷于记录的人&#xff0c;每次写博客会反复研读&#xff0c;尽量不断提升博客质量。文章设置为仅粉丝可见&#xff0c;是因为写博客确实花了不少精力。希望互相进步谢谢&#xff01;&#xff01; 文章目录 阅读前请看一下&#xff1a;我是…

【Unity VR开发】结合VRTK4.0:瞬移

语录&#xff1a; 到不了的地方都叫做远方&#xff0c;回不去的世界都叫做家乡&#xff0c;我一直向往的却是比远更远的地方。 前言&#xff1a; 在VR场景中的移动主要有&#xff1a;瞬移和平移。瞬移相当于在虚拟世界中标记出目标位置&#xff0c;并自动传输到该位置&#xff…

【C++】5. 引用

文章目录 前言一、引用1.1 理解引用1.2 引用的特性1.3 引用的权限1.4 引用的使用场景1.4.1 做参数1.4.2 做返回值 1.5 引用的本质 前言 C语言中什么最难学&#xff1f;那当然就是指针了。不但使用起来麻烦&#xff0c;时不时还会产生一些意料之外的错误。C提供了一种方式&…

Direct local .aar file dependencies are not supported when building an AAR.

前言 起因&#xff1a;项目中含有视频播放功能&#xff0c;使用的是GSYVideoPlayer&#xff0c;因为公司网络问题经常依赖添加不了&#xff0c;所以将关于它的aar包全部下载下来直接本地依赖。 因为多个业务都可能涉及视频播放功能&#xff0c;为了复用&#xff0c;就想着将视频…

XTDrone PX4 仿真平台|使用Docker快速部署仿真环境

XTDrone PX4 仿真平台|使用Docker快速部署仿真环境 Docker简介NVIDIA驱动安装NVIDIA-Docker安装Docker镜像下载与使用Docker与宿主机建立ROS通信宿主机安装 XTDrone 源码 宿主机系统环境Ubuntu20.04 Docker简介 Docker 是一个开源的应用容器引擎&#xff0c;让开发者可以打包…

TestNG 中使用 Guice 来进行依赖注入

Guice是Google开发的一个轻量级&#xff0c;基于Java5&#xff08;主要运用泛型与注释特性&#xff09;的依赖注入框架(IOC)。 Guice非常小而且快。Guice是类型安全的&#xff0c;它能够对构造函数&#xff0c;属性&#xff0c;方法&#xff08;包含任意个参数的任意方法&…

3.微服务项目实战---Nacos Discovery--服务治理

3.1 服务治理介绍 先来思考一个问题 通过上一章的操作&#xff0c;我们已经可以实现微服务之间的调用。但是我们把服务提供者的网络地址 &#xff08; ip &#xff0c;端口&#xff09;等硬编码到了代码中&#xff0c;这种做法存在许多问题&#xff1a; 一旦服务提供者地址…

什么?Python一行命令快速搭建HTTP服务器并公网访问?

文章目录 1.前言2.本地http服务器搭建2.1.Python的安装和设置2.2.Python服务器设置和测试 3.cpolar的安装和注册3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 转载自远程内网穿透的文章&#xff1a;【Python】快速简单搭建HTTP服务器并公网访问「cpolar内网穿透…

【C++入门必备知识:内联函数+指针空值nullptr】

【C入门必备知识&#xff1a;内联函数指针空值nullptr】 ①.内联函数Ⅰ.概念Ⅱ.宏与内联Ⅲ.总结 ②.指针空值nullptr(C11)Ⅰ.C98中的指针空值Ⅱ.注意&#xff1a; ①.内联函数 Ⅰ.概念 用inline修饰的函数就叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方将函数…

密歇根大学,一个被低估的美国公立常春藤名校

密歇根大学&#xff08;University of Michigan&#xff09;创建于1817年&#xff0c;是美国历史最悠久的公立大学之一&#xff0c;被誉为“公立常春藤”和“公立大学的典范”&#xff0c;与加州大学伯克利分校和威斯康星大学麦迪逊分校等大学一起代表了美国公立大学的最高水平…

Unity Camera -- (1)概览

Camera章节笔记所用的资源包在这里&#xff1a; https://connect-prd-cdn.unity.com/20230208/a0898204-bc36-4d6e-a3b2-d4b83ae67c1d/CreativeCore_Camera_2021.3LTS.ziphttps://connect-prd-cdn.unity.com/20230208/a0898204-bc36-4d6e-a3b2-d4b83ae67c1d/CreativeCore_Came…

ERTEC200P-2 PROFINET设备完全开发手册(9-1)

9. PROFIDRIVE AC1/AC4参考代码 PROFIdrive是西门子 Profibus 与 Profinet 两种通讯方式针对驱动的生产与自动化控制应用的一种协议框架&#xff0c;也可以称作“行规”&#xff0c; PROFIdrive使得用户更快捷方便实现对驱动的控制。PROFIdrive的最大特点是互操作性 – 不同厂…

低代码平台名声臭,用起来却真香——60%开发者不敢承认

群体盲从意识会淹没个体的理性&#xff0c;个体一旦将自己归入该群体&#xff0c;其原本独立的理性就会被群体的无知疯狂所淹没。——《乌合之众》 不知道从什么时候开始&#xff0c;“低代码不行”的论调充斥着整个互联网圈子&#xff0c;csdn、掘金、知乎、B站、脉脉……到处…

遗传算法求取函数最值问题

目录 1. 关于遗传算法 2. 遗传算法的步骤 3. 代码实现 3.1 工具函数 3.1.1 目标函数 3.1.2 解码 3.1.3 交叉 3.1.4 变异 3.2 主函数部分 3.3 代码 4. 其他 1. 关于遗传算法 遗传算法是根据生物进化论提出的计算最优解的一种算法&#xff0c;核心思想是物竞天择&…

九龙证券|光模块概念股封单资金超3亿元,传媒板块涨停潮来袭

今天A股三大股指低开低走。沪深两市收盘共37股涨停。剔除4只ST股&#xff0c;合计33股涨停。另外&#xff0c;10股封板未遂&#xff0c;整体封板率为78.72%。 涨停战场&#xff1a; 华工科技封单资金超3亿元 从收盘涨停板封单量来看&#xff0c;同方股份封单量最高&#xff0…

【UE】制作简单的山脉地形

在上一篇博客中&#xff08;【UE】使用Quixel Bridge下载免费贴图&#xff09;&#xff0c;介绍了如何下载免费贴图&#xff0c;本篇博客介绍如何使用这些贴图制作地形贴图。 1. 创建地形 2. 用雕刻工具绘制地形 3. 新建两个材质函数&#xff0c;分别命名为“GrassAuto”、“R…