vue3之echarts区域折线图

news2024/9/23 3:12:38
vue3之echarts区域折线图

效果:
在这里插入图片描述
核心代码:

<template>
    <div class="abnormal">
        <div class="per">单位:{{ obj.data?.unit }}</div>
        <div class="chart" ref="chartsRef"></div>
    </div>
</template>

<script setup>
import * as echarts from 'echarts';
import { reactive, onMounted } from 'vue';

const obj = reactive({
    data: {
        xdata: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
        ydata: [ 0, 0, 0, 1354, 0, 254, 0, 468, 0, 16, 498, 0],
        unit: '次'
    },
    op: {
        tooltip: {},
        grid: {
            top: '5%',
            left: '0%',
            right: '2%',
            bottom: '0%',
            containLabel: true,
        },
        xAxis: null,
        yAxis: [
            {
                type: 'value',
                nameLocation: 'end',
                axisTick: {
                    show: false,
                },
                axisLine: {
                    show: false,
                },
                axisLabel: {
                    textStyle: {
                        fontSize: 13,
                        color: '#ffffff',
                        fontFamily: 'DINPro-Regular',
                    },
                    padding: [0, 0, 0, -10],
                },
                splitLine: {
                    lineStyle: {
                        type: 'dashed',
                        color: 'rgba(160, 169, 192, 0.8)',
                    },
                },
            },
        ],
        series: [],
    },
})
let myCharts = null;
let chartsRef = ref(null)

const flushChart = () => {
    obj.op.xAxis = {};
    obj.op.series = [];
    obj.op.tooltip = {};

    obj.op.tooltip = {
        trigger: 'axis',
        axisPointer: {
            type: 'shadow',
            lineStyle: {
                color: 'rgba(135, 140, 147, 0.6)',
            },
        },
        formatter(params) {
            return `${params[0].name}月 : ${params[1].value}`;
        },
        backgroundColor: 'rgba(45, 105, 133, 0.8)',
        borderWidth: 0,
        textStyle: {
            color: '#DAE3E7',
            fontFamily: 'DINPro-Regular',
        },
    };
    obj.op.xAxis = {
        type: 'category',
        boundaryGap: false, // 坐标轴两边留白
        data: obj.data.xdata,
        axisLabel: {
            margin: 10,
            textStyle: {
                color: '#ffffff',
                fontSize: 13,
                fontFamily: 'DINPro-Regular',
            },

        },
        axisLine: {
            lineStyle: {
                color: 'rgba(160, 169, 192, 0.6)',
            },
        },
        axisTick: {
            show: true,
        },
    };
    obj.op.series.push(
        {
            name: 'bg',
            type: 'bar',
            data: [...Array(obj.data.ydata.length).fill(Math.max(...obj.data.ydata) === 0 ? 10 : Math.max(...obj.data.ydata))],
            barWidth: '50%',
            itemStyle: {
                color: 'rgba(255, 255, 255, 0.02)',
            },
        },
    );
    obj.op.series.push(
        {
            type: 'line',
            symbol: 'none',
            itemStyle: {
                normal: {
                    color: '#68A4FF',
                    lineStyle: {
                        color: '#68A4FF',
                        width: 3,
                    },
                    areaStyle: {
                        // 区域填充样式
                        color: new echarts.graphic.LinearGradient(0, 1, 0, 0, [
                            {
                                offset: 0,
                                color: 'rgba(104,164,255,0)',
                            }, {
                                offset: 0.5,
                                color: 'rgba(104,164,255,0.6)',
                            },
                            {
                                offset: 1,
                                color: 'rgba(104,164,255,1)',
                            },
                        ]),
                    },
                },
            },
            toolbox: {
                show: false,
            },
            data: obj.data.ydata,
        },
    );
    myCharts.setOption(obj.op);
}

const initChart = () => {
    myCharts = echarts.init(chartsRef.value);
    flushChart();
} 

onMounted(() => {
    initChart();
})

const destroyChart = () => {
    if (!myCharts) {
        return;
    }
    myCharts.dispose();
    myCharts = null;
}

onBeforeMount(() => {
    destroyChart();
})
</script>

<style lang="scss" scoped>
.abnormal {
    position: relative;
    width: 100%;
    height: 276px;
    margin-top: 19px;
    display: inline-block;

    .per {
        font-size: 12px;
        color: rgba(255, 255, 255, 0.5);
        margin-bottom: 19px;
    }

    .chart {
        display: inline-block;
        width: 100%;
        height: 185px;
        zoom: 1;
    }
}
</style>

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

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

相关文章

如何在Linux以docker-compose方式快速部署运行StackEdit,并实现公网访问

文章目录 1. docker部署Stackedit2. 本地访问3. Linux 安装cpolar4. 配置Stackedit公网访问地址5. 公网远程访问Stackedit6. 固定Stackedit公网地址 StackEdit是一个受欢迎的Markdown编辑器&#xff0c;在GitHub上拥有20.7k Star&#xff01;&#xff0c;它支持将Markdown笔记保…

井下特种兵——智能管网监测终端

深入井下&#xff0c;守护每一滴水的智慧——井下特种兵&#xff0c;智能管网监测终端 你是否曾为地下管网的监测和维护感到困扰&#xff1f;现在&#xff0c;我们向你介绍一款强大的井下特种兵——智能管网监测终端。这是一款专门为解决地下管网监测难题而设计的智能设备&…

单/三相dq解耦控制与特定次谐波抑制

1. 单相整流器dq坐标系下建模 单相整流器的拓扑如图所示&#xff0c;可知 u a b u s − L d i s d t − R i s {u_{ab}} {u_{s}} - L\frac{{d{i_s}}}{{dt}} - R{i_s} uab​us​−Ldtdis​​−Ris​。   将电压和电流写成dq的形式。 { u s U s m sin ⁡ ( ω t ) i s I …

FPGA_探针(ISSP)调试工具

探针则是将 FPGA 内部的节点信号通过 JTAG 电缆传输到 PC 机上&#xff0c;方便用户观察。对于一些变化比较缓慢或者实时性要求不高的信号&#xff0c;使用该工具调试非常的方便&#xff0c;例如观察 ADC 的采样结果。 为了更便捷地进行板级调试&#xff0c;这里介绍 Qusrtus …

前端本地存储数据库IndexedDB

前端本地存储数据库IndexedDB 1、前言2、什么是 indexedDB&#xff1f;3、什么是 localForage&#xff1f;4、localForage 的使用5、VUE 推荐使用 Pinia 管理 localForage 1、前言 前端本地化存储算是一个老生常谈的话题了&#xff0c;我们对于 cookies、Web Storage&#xff…

键盘控制ROS车运动

键盘控制ROS车运动 上位机 使用pyseria库与stm32单片机进行通信控制 #!/usr/bin/env python # -*- coding: utf-8 -*import sys, select, termios, tty import serialmsg """ ---------------------------w a x ds w : x a : y s : -x …

NX二次开发UF_CAM_ask_cam_preferences 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;里海NX二次开发3000例专栏 UF_CAM_ask_cam_preferences Defined in: uf_cam.h int UF_CAM_ask_cam_preferences(UF_CAM_preferences_p_t prefs ) overview 概述 This function provides the current settings of the CAM pre…

2024一定要看的文章系列!!!接口自动化测试框架思路和实战(5):【推荐】混合测试自动化框架(关键字+数据驱动)

混合测试自动化框架(关键字数据驱动) 关键字驱动或表驱动的测试框架 这个框架需要开发数据表和关键字。这些数据表和关键字独立于执行它们的测试自动化工具&#xff0c;并可以用来“驱动&#xff02;待测应用程序和数据的测试脚本代码&#xff0c;关键字驱动测试看上去与手工测…

Leetcode 153. 寻找旋转排序数组中的最小值

class Solution {//因为最小值和最大值总是相邻的&#xff08;除了初始状态&#xff09;//1.用二分查找&#xff0c;如果右侧是有序则最小值在左侧//2.如果右侧无序则最小值在右侧//如果mid正好是最小值&#xff0c;那么右侧自然是有序的&#xff0c;//为了将mid加入到搜索的一…

如何用内容营销推动企业成长?媒介盒子教你三步实现

信息时代下每个人都能通过网络了解自己所需的信息&#xff0c;企业与受众的接触也更加直接&#xff0c;企业在获得更多消费者触达通道的同时&#xff0c;消费者也在经历信息爆炸和碎片化&#xff0c;如何在大量信息中脱颖而出&#xff0c;抓住消费者心智&#xff0c;成为许多品…

外卖小程序系统:数字化餐饮的编码之道

在当今数字化时代&#xff0c;外卖小程序系统成为了餐饮业的一项技术巨制。这个系统不仅提供了便捷的点餐体验&#xff0c;更通过先进的技术手段&#xff0c;实现了高效订单处理、实时配送追踪以及个性化推荐。让我们深入了解外卖小程序系统的技术魔法&#xff0c;一起揭秘数字…

API接口接入1688电商数据平台获取商品详情数据示例

1688电商数据平台是一个提供海量商品信息的数据平台&#xff0c;通过API接口可以方便地获取商品详情数据。以下是一个示例&#xff0c;演示如何接入1688电商数据平台&#xff0c;获取商品详情数据。 步骤一&#xff1a;注册1688账号并获取API权限 首先需要在1688电商数据平台…

ArkTS编程语法基础,让你成为HarmonyOS开发高手

文章目录 ArkTS简介ArkUI开发框架的整体架构ArkTS的基础类型条件语句函数类模块函数定义函数的参数箭头函数 迭代器后续学习资源介绍 ArkTS简介 ArkTS是HarmonyOS主力应用开发语言。它在TypeScript (简称TS)的基础上&#xff0c;匹配ArkUI框架&#xff0c;扩展了声明式UI、状态…

防火墙..

目录 1.什么是防火墙 1.1分类 1.2.Netfilter(数据包过滤) 1.2.1定义 1.2.2Netfilter分析内容 1.3防火墙无法完成的任务 1.4iptables 与firewalld区别 2.iptables 2.1iptables执行原则 2.1.1原则 2.1.2防火墙规则 2.2规则链 2.2.1概念 2.2.2分析 2.2.3规则链分类…

leetcode:反转链表

题目描述 题目链接&#xff1a;206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 分析题目 思路一 我们可以设计算法让整个链表掉头 定义三个代码n1,n2,n3 n1指向NULL&#xff0c;n2指向head&#xff0c;n3指向第二个结点 当n2不为NULL的时候&#xff0c;让n2->ne…

fastdfs-client-java-1.30 maven 打包安装

1. 进入源代码目录&#xff0c;打开cmd mvn clean install 或者 mvn package 问题不大的话会在同级目录target目录下生成打包后文件 2. 当前目录下cmd进行maven安装 mvn install:install-file -DgroupIdorg.csource -DartifactIdfastdfs-client-java -Dversion${version} -D…

CompletableFuture.join() vs Future.get(),开发中哪个更好

CompletableFuture和Future都是Java中的接口&#xff0c;用于异步编程和并发处理。 Future表示一种异步计算的结果&#xff0c;可以通过get()方法获取计算结果或等待计算的完成。但是&#xff0c;如果计算还未完成&#xff0c;get()方法会阻塞线程&#xff0c;这会影响并发性能…

虾皮台湾站点什么好卖

在如今的电商时代&#xff0c;越来越多的人选择通过网购来满足购物需求。而中国台湾地区作为一个充满机遇的市场&#xff0c;吸引了许多商家的目光。虾皮作为台湾地区最大的电商平台之一&#xff0c;为卖家提供了丰富的销售机会。但是&#xff0c;卖家们在选择什么产品来销售时…

文档明明在桌面上却不显示?5个方法轻松解决!

“我之前保存文档的时候明明选择保存在桌面&#xff0c;上次看的时候文件还在&#xff0c;但是今天打开电脑后发现我保存在桌面的文档不见了&#xff0c;这是为什么呢&#xff1f;还有机会找回我的文件吗&#xff1f;” 在日常使用电脑时&#xff0c;有些用户为了方便&#xff…