【mpvue】mpvue-echarts echarts动态渲染、延迟加载、双轴动态计算、双轴对齐

news2024/12/29 10:20:38

mpvue-echarts 双轴折线案例

  • 使用echarts双轴折线图实战
    • 项目导入
      • 一、打包结果超过小程序大小限制?
        • 1.下载自定义echarts.js
        • 2. 引入 echarts.js![在这里插入图片描述](https://img-blog.csdnimg.cn/ff4ad6d894404e97bceff0581fc1f736.png#pic_center)
        • 3. 项目引入
      • 二、图表配置
      • 二、Demo 图表集成

使用echarts双轴折线图实战

转载请注明出处
http://blog.csdn.net/u014513456/article/details/54381527
Author:ruanjianjiagou@163.com

难点:

  1. mpvue-echarts 引入
  2. mpvue-echarts 打包大小问题
  3. mpvue-echarts 动态加载
  4. mpvue-echarts 双轴折线图动态计算

效果图:
在这里插入图片描述

项目导入

git地址
https://github.com/F-loat/mpvue-echarts

$ npm install mpvue-echarts
$ npm install echarts

一、打包结果超过小程序大小限制?

1.下载自定义echarts.js

使用自定义版 echarts,官网定制
https://echarts.apache.org/zh/builder.html
选择需要的功能后点击下载

2. 引入 echarts.js在这里插入图片描述

将下载的echarts.js 重命名为 diy_echarts.js
粘贴到node_modules/echarts/dist 下

3. 项目引入

import * as echarts from 'echarts/dist/diy_echarts'
import mpvueEcharts from 'mpvue-echarts'

二、图表配置

yAxis 则配置双轴
yAxis- max: this.maxRight, 需要动态计算轴最大值,通过动态计算左右轴最大值可以实现双轴对齐效果
axisLine:Y轴刻度值及颜色
series:y轴数据项
xAxis:x 轴数据项

initChart () {
      this.option = {
        backgroundColor: '#fff',
        color: this.colors,
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'cross'
          }
        },
        grid: {
          containLabel: true
        },
        legend: {
          data: ['gmv', '订单数'],
          top: 'top'
        },
        xAxis: {
          type: 'category',
          axisTick: {
            alignWithLabel: true
          },
          data: this.orderDate
        },
        yAxis: [
          {
            type: 'value',
            name: '总订单数',
            position: 'right',
            alignTicks: true,
            max: this.maxRight,
            axisLine: {
              show: true,
              lineStyle: {
                color: this.colors[1]
              }
            }
          },
          {
            type: 'value',
            name: '总Gmv(元)',
            position: 'left',
            alignTicks: true,
            max: this.maxLeft,
            axisLine: {
              show: true,
              lineStyle: {
                color: this.colors[0]
              }
            },
            axisLabel: {
              formatter: '{value} 元'
            }
          }
        ],
        series: [
          {
            name: 'gmv',
            type: 'line',
            data: this.gmv
          },
          {
            name: '订单数',
            type: 'line',
            yAxisIndex: 1,
            data: this.orderNumber
          }]
      }

      this.$refs.echarts.init()
    }
  }

二、Demo 图表集成

<div class="wrap">
      <mpvue-echarts lazyLoad :echarts="echarts" :onInit="handleInit" ref="echarts"/>
</div>
<script>
import * as echarts from 'echarts/dist/diy_echarts'
import mpvueEcharts from 'mpvue-echarts'

data () {
    return {
    maxLeft: 0,
      maxRight: 0,
      rotate: 0, // 旋转的度数
      interval: 0, // 间隔数
      option: null,
      echarts,
      colors: ['#409EFF', '#ff9933'],
      gmv: [],
      orderNumber: [],
      orderDate: []
    }
  },
  mounted () {
  //获取网络数据
    this.getOperateData()
  },  
  components: {
    mpvueEcharts
  },
  onShareAppMessage () {
  },
  methods: {
  async getOperateData () {
      const res = await operateData(param)
      if (res.code === 'SUCCESS' && res.data) {
        // console.log(res)
        this.maxState = false
        const data = res.data.operateData
        var mGmv = []
        var mNum = []
        var mDate = []
        data.forEach((item, index) => {
          item.gmv = (item.gmv).toFixed(2)
          mGmv.push(item.gmv)
          mNum.push(item.number)
          mDate.push(item.orderDate)
        })
        this.gmv = mGmv
        this.orderNumber = mNum
        this.orderDate = mDate
        
        this.maxLeft = Math.max.apply(null, mGmv)
        this.maxRight = Math.max.apply(null, mNum)
        //设置最小值小于6则执行展示6个单位
        if (this.maxLeft === 0) {
          this.maxLeft = 6
        }
        if (this.maxRight === 0) {
          this.maxRight = 6
        }
        //控制双Y轴 最大值以保证刻度对齐
        this.maxLeft = Math.ceil(this.maxLeft / 6) * 6
        this.maxRight = Math.ceil(this.maxRight / 6) * 6
        this.chartData.rows = data
        const length = this.chartData.rows.length
        //控制x轴展示坐标数量 动态计算
        if (length <= 7) {
          this.rotate = 0
          this.interval = 1
        } else if (length > 7 && length <= 14) {
          this.rotate = 10
          this.interval = 1
        } else if (length > 14 && length <= 21) {
          this.rotate = 20
          this.interval = 1
        } else {
          this.rotate = 30
          this.interval = 1
        }
        // chart.setData(this.chartData.rows)
        this.initChart()
      }
    },
     handleInit (canvas, width, height) {
      chart = echarts.init(canvas, null, {
        width: width,
        height: height
      })
      canvas.setChart(chart)
      chart.setOption(this.option)
      return chart
    },
    initChart () {
      this.option = {
        backgroundColor: '#fff',
        color: this.colors,
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'cross'
          }
        },
        grid: {
          containLabel: true
        },
        legend: {
          data: ['gmv', '订单数'],
          top: 'top'
        },
        xAxis: {
          type: 'category',
          axisTick: {
            alignWithLabel: true
          },
          data: this.orderDate
        },
        yAxis: [
          {
            type: 'value',
            name: '总订单数',
            position: 'right',
            alignTicks: true,
            max: this.maxRight,
            axisLine: {
              show: true,
              lineStyle: {
                color: this.colors[1]
              }
            }
          },
          {
            type: 'value',
            name: '总Gmv(元)',
            position: 'left',
            alignTicks: true,
            max: this.maxLeft,
            axisLine: {
              show: true,
              lineStyle: {
                color: this.colors[0]
              }
            },
            axisLabel: {
              formatter: '{value} 元'
            }
          }
        ],
        series: [
          {
            name: 'gmv',
            type: 'line',
            data: this.gmv
          },
          {
            name: '订单数',
            type: 'line',
            yAxisIndex: 1,
            data: this.orderNumber
          }]
      }

      this.$refs.echarts.init()
    }
  }
</script>

————————————————
版权声明:本文为CSDN博主「HarmonyOS Developer」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014513456/article/details/54381527

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

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

相关文章

蓝桥杯备赛Day4——多维数组

二维数组初始化 p[[0 for i in range(5)] for j in range(2)] #法一 p[[0]*5 for j in range(2)] #法二 s[[1,2,3],[4,5,6]] print(s) for i in range(2):for j in range(3):print(s[i][j],end ) 三维数组初始化 a[[[0 for _ in range(2)] for __ in…

RabbitMQ总结

目录 工作模式 简单模式 工作队列模式 发布订阅模式 路由模式 通配符模式 SpringBoot整合RabbitMQ 项目搭建 配置类中创建队列和交换机 编写生产者 编写消费者 消息的可靠性传递 死信队列 延迟队列 工作模式 RabbitMQ共有六种工作模式&#xff1a;简单模式&#xff08;Si…

网络编程 select模型

目录 select模型详解 select函数解释 整体代码 select模型在代码上和c/s模型的前面一部分是一样的&#xff0c;可以去看 这个https://blog.csdn.net/weixin_62859191/article/details/128397927?spm1001.2014.3001.5501&#xff0c;相同的代码如下 #define _CRT_SECURE_NO_…

cadence SPB17.4 - orcad - WARNING(ORCAP-2354) - Wire is hanging at Point

文章目录cadence SPB17.4 - orcad - WARNING(ORCAP-2354) - Wire is hanging at Point概述普通画法, 引起的不可理解的hang wire 警告ENDcadence SPB17.4 - orcad - WARNING(ORCAP-2354) - Wire is hanging at Point 概述 在使用SPB17.4从一个PCB中反推原理图. 原理图重建的差…

Jenkins入门(一)Jenkins介绍、GitLab基础环境安装

视频学习地址&#xff1a;01-Jenkins教程简介_哔哩哔哩_bilibili 一、介绍&#xff1a; Jenkins是一个独立的开源自动化服务器&#xff0c;可用于自动化各种任务&#xff0c;如构建&#xff0c;测试和部署软件。 它替代了管理员手动集成、构建、测试&#xff0c;提交代码后自…

深度学习:ResNet从理论到代码

深度学习&#xff1a;ResNet从理论到代码面临的问题模型退化问题ResNet核心思想反向传播公式推导残差的由来残差模块为什么效果好代码实现面临的问题 模型退化问题 随着网络层数加深&#xff0c;性能逐渐降低&#xff0c;但它并不是过拟合&#xff0c;因为在test error降低的同…

多准则决策问题评估方法 | 灰云模型(含代码)

目前多准则决策问题的评估方法主要分为定性分析方法和定量分析方法两类。定性分析方法主要包括专家咨询、熵权法、案例研究和德尔菲法等&#xff1b;定量分析法主要包括层次分析法、主成分分析法、因子分析法、模糊综合评价法、灰色综合评价法以及数据包络分析法&#xff08;DE…

Apollo星火计划学习笔记——Apollo路径规划算法原理与实践

文章目录1. 路径规划算法总体介绍1.1 Task&#xff1a; LANE_CHANGE_DECIDER1.2 Task&#xff1a; PATH_REUSE_DECIDER1.3 Task&#xff1a; PATH_BORROW_DECIDER1.4 Task&#xff1a; PATH_BOUNDS_DECIDER1.5 Task&#xff1a; PIECEWISE_JERK_PATH_OPTIMIZER1.6 Task&#xf…

人脸识别经典论文Arcface解读

来源&#xff1a;投稿 作者&#xff1a;小灰灰 编辑&#xff1a;学姐 研究背景 1、在人脸识别时&#xff0c;我们需要特征的discrimination 2、之前提出到的一些方法&#xff0c;如triplet loss,center loss, L-softmax,a-softmax都有一些缺陷。 3、centerloss&#xff1a;提…

2022.12.25 学习周报

文章目录摘要文献阅读1.题目2.摘要3.问题和方案4.介绍5.Attention Transfer5.1 Activation-based Attention Transfer5.2 Gradient-based Attention Transfer6.实验7.结论深度学习Attention机制的本质Encoder to Decoder抛开encoder-decoderAttention函数工作机制Attention机制…

20221225 海豚调度2.0.5连接星环库使用记录

阳阳的一周&#xff0c;算是挺过来了&#xff0c;现在只剩感冒了&#xff0c;迷迷糊糊的干了一周&#xff0c;混口饭吃不容易呀&#xff01;简单记录一下遇到的问题吧&#xff01; 连接hive(星环)数据库失败 方案一 &#xff1a; 海豚调度2.0.5使用的hive包是2.0版本,星环库包…

云原生之部署wordpress博客及设置圣诞主题风格

2022年圣诞节到来啦&#xff0c;很高兴这次我们又能一起度过~ CSDN诚邀各位技术er分享关于圣诞节的各种技术创意&#xff0c;展现你与众不同的精彩&#xff01;参与本次投稿即可获得【话题达人】勋章【圣诞快乐】定制勋章&#xff08;1年1次&#xff0c;错过要等下一年喔&#…

Python的条条框框

Python的条条框框 了解编程语言的分类 从运行角度的分类 从运行角度来看&#xff0c;编程语言的类型可以分为两种&#xff1a;编译型和解释型。 Python属于解释型语言。 解释型语言&#xff1a; 代码可以直接运行。当然&#xff0c;这也是依赖于附加程序&#xff08;解释器&…

【VUE3】保姆级基础讲解(三)非父子组件通讯,$refs,动态组件,keep-alive,Composition API

目录 非父子组件通讯 全局事件总线mitt库 组件的生命周期 $refs 动态组件 keep-alive 异步打包 v-model绑定组件 Composition API 定义响应式数据 readonly toRefs与toRef computed $ref 生命周期钩子 provide和inject watch侦听 watchEffect script setup语法…

C++必须掌握的知识点

面向对象的三大特性 封装 继承 父类中所有的非静态成员都会被子类继承下去&#xff0c;只是父类的私有成员被编译器屏蔽了&#xff0c;访问不到。可以利用开发人员工具查看对象模型继承中&#xff0c;先构造父类&#xff0c;再构造子类&#xff0c;析构的顺序和构造的顺序完…

QT系列第8节 自定义对话框

在实际业务开发中经常要有各种各样的对话框来处理用户信息&#xff0c;本节就结合例子来说明如何自定义对话框。 目录 1.创建对话框 2.创建非模态对话框 3.创建模态对话框 4.综合案例 1.创建对话框 &#xff08;1&#xff09;项目鼠标右键菜单 - 添加新文件 &#xff08;…

Hexo + Butterfly 自定义页脚

原文链接 &#xff1a;Hexo Butterfly 自定义页脚 推荐阅读 基于 Hexo 从零开始搭建个人博客&#xff08;一&#xff09;: 环境准备基于 Hexo 从零开始搭建个人博客&#xff08;二&#xff09;: 项目初识基于 Hexo 从零开始搭建个人博客&#xff08;三&#xff09;: 主题安装…

CSDN每日一练最长递增的区间长度 C语言

题目名称&#xff1a;最长递增的区间长度 时间限制&#xff1a;1000ms 内存限制&#xff1a;256M 题目描述 给一个无序数组&#xff0c;求最长递增的区间长度。如&#xff1a;[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3 &#xff08;注意&#xff1a;测试用例仅做参考&#xff0c;…

Spring web开发之Request 获取三种方式

在开发 Java Web 项目中&#xff0c;我们经常使用 HttpServletRequest 获取请求参数、请求头等信息。在Spring项目&#xff0c;我们通常会使用 Spring 提供的注解获取参数&#xff0c;如 RequestParam、RequestHeader。 不过在某些场景下&#xff0c;我们可能需要从 HttpServl…

初识Docker:(4)Docker基本操作

初识Docker&#xff1a;&#xff08;4&#xff09;Docker基本操作1 镜像操作1.1 镜像名称1.2 镜像操作命令1.3 案例&#xff1a;docker拉取nginx镜像利用docker save将nginx镜像导出磁盘&#xff0c;然后再通过load加载回来1.4 镜像操作总结2 容器操作2.1 案例创建运行一个ngin…