echarts组件——折线统计图

news2024/9/21 9:22:48

echarts组件——折线统计图

折线图&折线渐变图
在这里插入图片描述
组件代码

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

<script>
// 折线图&折线渐变图
import * as echarts from 'echarts'
require('echarts/theme/macarons') // echarts theme
import resize from './mixins/resize'

const animationDuration = 2000

export default {
  mixins: [resize],
  props: {
    classname: {
      type: String,
      default: 'chart'
    },
    width: {
      type: String,
      default: '100%'
    },
    height: {
      type: String,
      default: '100%'
    },
    color: { // 折线图颜色
      type: Array,
      default: () => ['rgba(88, 201, 113, 1)', 'rgba(22, 93, 255, 1)']
    },
    areacolor: { // 渐变颜色
      type: Array,
      default: () => [
        ['rgba(88, 201, 113, 0.3)', 'rgba(22, 93, 255, 0.3)'],
        ['rgba(88, 201, 113, 0)', 'rgba(22, 93, 255, 0)']
      ]
    },
    xaxisdata: { // x轴数据
      type: Array,
      default: () => ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    legenddata: { // 图例
      type: Array,
      default: () => [
        'Direct',
        'Mail Ad',
        'Affiliate Ad',
        'Video Ad',
        'Search Engine'
      ]
    },
    legendshow: { // 图例显示
      type: Boolean,
      default: () => true
    },
    linedata: { // 数据
      type: Array,
      default: () => [
        [100, 302, 301, 334, 390, 330, 320],
        [320, 132, 101, 134, 90, 230, 210],
        [220, 182, 191, 234, 290, 330, 310],
        [150, 212, 201, 154, 190, 330, 410],
        [820, 832, 901, 934, 1290, 1330, 1320]
      ]
    },
    labelshow: { // 数字是否展示
      type: Boolean,
      default: false
    },
    areashow: { // 是否有渐变阴影效果
      type: Boolean,
      default: false
    },
    smooth: { // 曲线是否平滑
      type: Boolean,
      default: false
    },
    ratiodata: { // 环比数据
      type: Array,
      default: () => []
    },
    rationame: {
      type: String,
      default: '环比'
    },
    ratiounit: {
      type: String,
      default: ''
    },
    xlinecolor: {
      type: String,
      default: '#000000'
    },
    ylinecolor: {
      type: String,
      default: '#000000'
    },
    gridbottom: {
      type: String,
      default: '0'
    },
    valueunit: {
      type: String,
      default: ''
    },
    toolnamecust: {
      type: Boolean,
      default: false
    },
    // x轴标签是否全部显示
    axislabelshow: {
      type: Boolean,
      default: false
    }
  },
  data() {
    return {
      series: [],
      chart: null
    }
  },
  watch: {
    linedata: {
      deep: true,
      handler(val) {
        this.$nextTick(() => {
          this.series = this.legenddata.map((name, sid) => {
            const data = {
              name,
              type: 'line',
              smooth: this.smooth,
              showSymbol: false,
              data: this.linedata[sid],
              animationDuration
            }
            if (this.areashow) {
              data.areaStyle = {
                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
                  {
                    offset: 0,
                    color: this.areacolor[0][sid] // 0% 处的颜色
                  },
                  {
                    offset: 1,
                    color: this.areacolor[1][sid] // 100% 处的颜色
                  }
                ])
              }
            }
            return data
          })
          this.initChart()
        })
      }
    }
  },
  mounted() {
  },
  beforeDestroy() {
    if (!this.chart) {
      return
    }
    this.chart.dispose()
    this.chart = null
  },
  methods: {
    initChart() {
      this.chart = echarts.init(this.$el, 'macarons')
      const _this = this
      this.chart.setOption({
        color: this.color,
        tooltip: {
          trigger: 'axis',
          axisPointer: { // 坐标轴指示器,坐标轴触发有效
            type: 'line' // 默认为直线,可选为:'line' | 'shadow'
          },
          formatter: (params) => {
            let result = `<div>${params[0].axisValue}</div>`
            if (_this.toolnamecust) {
              result = `<div>${params[0].axisValue}:00</div>`
            }
            params.map((item, index) => {
              result += `<div style="display: flex; justify-content: space-between"><span>${_this.legenddata[index]}: &nbsp; </span><span>${_this.linedata[index][params[0].dataIndex]}${this.valueunit}</span></div>`
            })
            if (this.ratiodata.length) {
              result += `<div>${this.rationame}: ${this.ratiodata[params[0].dataIndex]}${this.ratiounit}</div>`
            }
            return result
          }
        },
        legend: {
          icon: 'circle',
          top: '0',
          right: '0',
          show: this.legendshow,
          data: this.legenddata,
          bottom: '0'
        },
        grid: {
          top: '15%',
          left: '0%',
          right: '0%',
          bottom: this.gridbottom,
          containLabel: true
        },
        xAxis: [{
          type: 'category',
          data: this.xaxisdata,
          axisTick: {
            show: false,
            alignWithLabel: true
          },
          axisLine: {
            lineStyle: {
              color: this.xlinecolor
            }
          },
          axisLabel: this.axislabelshow ? {
            interval: 0 // x轴标签全部显示
          } : {}
        }],
        yAxis: [{
          type: 'value',
          // name: '单位',
          axisTick: {
            show: false
          },
          axisLine: {
            lineStyle: {
              color: this.ylinecolor
            }
          },
          splitLine: {
            show: true,
            lineStyle: {
              color: '#E5E6EB',
              type: 'dashed'
            }
          },
          splitArea: {
            show: false
          }
        }],
        series: this.series,
        dataZoom: this.axislabelshow ? [
          {
            show: true,
            type: 'slider',
            backgroundColor: 'rgba(127, 127, 127, 0.3)',
            fillerColor: 'rgba(127, 127, 127, 1)',
            borderColor: 'rgba(127, 127, 127, 0.3)',
            showDetail: false,
            filterMode: 'empty',
            showDataShadow: false,
            brushSelect: false, // 是否开启刷选功能
            height: 10,
            handleSize: 0,
            xAxisIndex: [0],
            zoomLock: true, // 是否锁定选择区域(或叫做数据窗口)的大小
            throttle: 100, // 设置触发视图刷新的频率。
            realtime: true,
            bottom: '-2%',
            startValue: 0,
            endValue: 6
          }
        ] : []
      })
    }
  }
}
</script>

使用组件,传值格式可以看组件的默认数据的格式
在这里插入图片描述

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

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

相关文章

2024最全网络安全工程师面试题(附答案),金九银十找工作必看!

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s…

版本控制工具git

版本控制工具 git 数据库 > 有代码历史版本 > 仓库 每个文件都是不同的历史版本&#xff0c;以便恢复 集中式版本控制系统 例如&#xff1a;SVN 缺陷&#xff1a; 1.依赖于中心服务器 分布式的版本管理系统 只有程序员用 git 只有需要在同步代码的时候需要联网 程…

Python运行时环境

1.1概念 程序运行只有栈帧不够&#xff0c;还要有进程与线程 Python在初始化时会创建一个主线程&#xff0c;所以其运行时环境中存在一个主线程&#xff0c;可以有多个线程 Python实现了对多线程的支持&#xff0c;而且一个线程就是操作系统上的一个原生线程 Python中所有线…

#Datawhale X 李宏毅苹果书 AI夏令营#1.2了解线性模型

1.2线性模型 什么是线性模型&#xff1f; 初始模型&#xff1a;, 其中y表示观看人数&#xff0c;x1表示前一天的观看人数&#xff0c;这个模型就是在用前一天的观看人数来预测当前的观看人数。 模型改进&#xff1a; 然而真实的数据是有周期性的&#xff0c;每隔7天&#…

向量数据库Milvus源码开发贡献实践

Milvus 是一款云原生的开源向量数据库&#xff0c;广泛应用于高维向量数据的管理和人工智能驱动的相似性搜索。无论是在构建智能搜索引擎还是开发数据驱动的应用&#xff0c;Milvus 都能提供强大的支持。我们将一起从头开始实践 Milvus 的标准开发流程&#xff0c;包括如何搭建…

企业画册在线版是怎么制作的?

随着互联网技术的飞速发展&#xff0c;传统的纸质企业画册已经逐渐无法满足现代企业的需求。为了让画册更加环保、便捷&#xff0c;同时提升企业形象和品牌影响力&#xff0c;企业画册在线版应运而生。那么&#xff0c;企业画册在线版究竟是如何制作出来的呢&#xff1f;今天&a…

嵌入式学习(数据库)

数据库的定义&#xff1a; 可以理解为数据库是用来存放数据的一个容器。有了数据库后&#xff0c;我们可以直接查找数据。或者可以对数据库进行读写删除等操作。 Sqlite 小型数据库 . Sqlite特点: 可以实现大数据量的管理 读写速度慢 最常见的数据库类型是关系型数据库管理…

QLU-AI助手初次微调Qwen2-7B-Instruct总结

一、微调代码 from datasets import Dataset import pandas as pd from transformers import (AutoTokenizer,AutoModelForCausalLM,DataCollatorForSeq2Seq,TrainingArguments,Trainer,GenerationConfig) import torch from peft import LoraConfig, TaskType, get_peft_mode…

探索待办事项管理新世界:10款工具带你告别杂乱无章

国内外主流的10款免费待办事项app对比&#xff1a;1.PingCode&#xff1b;2.Worktile&#xff1b;3.Todoist&#xff1b;4.Trello&#xff1b;5.Habitica&#xff1b;6.Forest&#xff1b;7.Teambition&#xff1b;8.Asana&#xff1b;9.嘀嗒清单&#xff08;TickTick&#xff…

poe供电原理以及应用

1,根据IEEE802.3af标准,一个完整的PoE系统包括供电端设备PSE和受电端设备PD两部分; 供电设备PSE是整个系统的电源提供者,为PD设备提供直流电源,其可分为M

[动态规划]---背包问题

前言 作者&#xff1a;小蜗牛向前冲 专栏&#xff1a;小蜗牛算法之路 专栏介绍&#xff1a;"蜗牛之道&#xff0c;攀登大厂高峰&#xff0c;让我们携手学习算法。在这个专栏中&#xff0c;将涵盖动态规划、贪心算法、回溯等高阶技巧&#xff0c;不定期为你奉上基础数据结构…

如何让ChatGPT说话更像人类

ChatGPT在多个领域展现了卓越的能力&#xff0c;但对话中仍不可避免地带有一定的机械感。幸运的是&#xff0c;OpenAI推出的GPTs功能可以让用户自定义prompt。最近&#xff0c;我发现了其中一个GPTs&#xff0c;它能让ChatGPT的对话更加贴近真人&#xff0c;现在就来与大家分享…

【生日视频制作】农村文化墙广告标语AE模板修改文字软件生成器教程特效素材【AE模板】

生日视频制作教程农村文化墙广告标语AE模板修改文字软件生成器 怎么如何做的【生日视频制作】农村文化墙广告标语AE模板修改文字软件生成器教程特效素材【AE模板】 生日视频制作步骤&#xff1a; 安装AE软件 下载AE模板 把AE模板导入AE软件 修改图片或文字 渲染出视频

复杂网络|节点重要性评价指标

author: xiao黄 time: 2024-08-28 公众号: 复杂网络与网络科学 CSDN: https://blog.csdn.net/Python_Matlab评价节点重要性算法的指标有多种&#xff0c;如基于信息传播方面的动力学模型、单调性、Distinct Metric以及基于网络脆弱性和鲁棒性的方法等。不同的评价指标所考虑的角…

Java Web_00001

目录 Web项目介绍网页的组成部分 HTMLHTML简介HTML示例HTML文件的书写规范HTML标签标签介绍标签的语法&#xff1a;常用标签font特殊字符标题标签超链接列表标签img标签表格标签跨行跨列表格iframe框架标签(内嵌窗口)表单标签表单的显示表单格式化表单提交细节 其他标签 CSSCSS…

羟基“消失术”,化学合成中的巧妙方法

羟基(-OH)是一个很常见的官能团&#xff0c;在有机合成的转化过程中往往起到桥梁作用。在化合物合成过程中由于合成选择的原因通常会先引入一些基团&#xff0c;以降低合成化合物的难度以及提高其产率。而羟基的引入或者生成是比较常见的。羟基化方法有很多&#xff0c;其中包括…

JDBC和Mybatis中的批处理

src目录下创建jdbc.properties mysql驱动5.1.6之后,只需要配置url,username,password mysql 5.1.6之后可以无需Class.forName("com.mysql.jdbc.Driver") * 从jdk1.5之后可以通过配置文件来配置 * 会自动加载mysql驱动jar包下META-INF/services/java.sql.Driver文本中…

Python深度学习股价预测、量化交易策略:LSTM、GRU深度门控循环神经网络|附代码数据

全文链接&#xff1a;https://tecdat.cn/?p37539 原文出处&#xff1a;拓端数据部落公众号 分析师&#xff1a;Shuo Zhang 本文以上证综指近 22 年的日交易数据为样本&#xff0c;构建深度门控循环神经网络模型&#xff0c;从股价预测和制定交易策略两方面入手&#xff0c…

8月29日

思维导图 作业&#xff1a; 仿照string类&#xff0c;实现myString 代码 mystring.h #ifndef MYSTRING_H #define MYSTRING_H#include <iostream> #include<string.h>using namespace std;class myString { private:char *str;int size;public://无参构造myStr…

在自己的数据集上测试coco评价指标——以Mar20为例

参考&#xff1a; 1.在自己的数据集上调用cocoapi计算map 2. COCO Result Format 3.COCO result json 之前的模型都是在COCO数据集上训练&#xff0c;数据集的标注以及结果的生成格式都是按照官方的格式组织的&#xff0c;调用cocoapi和官方下载的instance_val2017.json计算就可…