vue2.x-echarts公共组件封装--简易篇(3d柱状图,炫酷仪表盘,折线,曲线图)

vue2+echarts实现3d柱状图 【代码】vue2+echarts实现3d柱状图。 阅读详情

更新一下之前写的echarts简单图表公共组件的封装,该组件可以实现自适应展示效果

废话不多说,上代码:

vue-echarts通用组件

<template>
  <div class="companyList-ctn" :style="{ 'width':'100%','height': '100%' }">
    <div :id="id" :style="{'width':'100%','height': '100%'}"></div>
  </div>
</template>
<script>
let _c = { id: 1 };
import * as echarts from 'echarts';
import echartMixins from "@/utils/resizeMixins";
//引入echart
import 'echarts-gl'
export default {
  mixins: [echartMixins],
  created() {
    _c.id++;
    this.id = "charts_" + _c.id;
  },
  props: {
    echartsData: {
      type: Object,
    },
  },
  data() {
    return {
      myPieChart:'',
      width:'100%',
      height:400+'px'
    };
  },
  computed: {
    heightFun(){
      return this.echartsData.height+'px'
    }
  },
  watch: {
    echartsData:{
         handler(newval, oldVal){
           this.initChart();
         },
         deep:true //true 深度监听
     }
  },
  mounted() {
    // 初始化echarts
    this.$nextTick(()=>{
      this.initChart();
    })
    window.addEventListener('resize',this.initChart,false);
  },
  //vue组件实例销毁之前移除监听事件,避免当我们切换路由时导致vue出现警告:
  //echarts.js?1be7:2160 Uncaught Error: Initialize failed: invalid dom.
  beforeDestroy () {
    window.removeEventListener('resize', this.initChart)
  },
  methods: {
    initChart() {
      var chartDom = document.getElementById(this.id);
      if (this.myPieChart != null && this.myPieChart != "" && this.myPieChart != undefined) {
        this.myPieChart.dispose();//销毁
      }
      this.myPieChart = echarts.init(chartDom);
      this.myPieChart.resize()
      var option=this.echartsData.option
      this.myPieChart.setOption(option);
    },
  },
};
</script>
<style lang="scss" scoped>
.companyList-ctn {
  width: 260px;
  border-radius: 4px;
  // background: white;
  .companyList-oneItem {
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
}
</style>

下面的一个混入文件是用来实现,窗口改变echarts自适应的js文件:

// 混入代码 resize-mixins.js
import { debounce } from '@/utils/index';
const resizeChartMethod = '$__resizeChartMethod';

export default {
  data() {
    // 在组件内部将图表init的引用映射到chart属性上
    return {
      chart: null,
    };
  },
  created() {
    window.addEventListener('resize', this[resizeChartMethod], false);
  },
  beforeDestroy() {
    window.removeEventListener('reisze', this[resizeChartMethod]);
  },
  methods: {
    // 通过lodash的防抖函数来控制resize的频率
    [resizeChartMethod]: debounce(function() {
      if (this.chart) {
        this.chart.resize();
      }
    }, 100),
  },
};

接下来是debounce.js

export function debounce(func, wait, immediate) {
  let timeout, args, context, timestamp, result;

  const later = function() {
    // 据上一次触发时间间隔
    const last = +new Date() - timestamp;

    // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait
    if (last < wait && last > 0) {
      timeout = setTimeout(later, wait - last);
    } else {
      timeout = null;
      // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用
      if (!immediate) {
        result = func.apply(context, args);
        if (!timeout) context = args = null;
      }
    }
  };

下面直接上代码:父组件调用+展示效果

<template>
  <div class="user_protocal_box">
    <!-- 折线图 -->
    <DayLinkRatioCharts :echartsData="dayLinkRatio" />
  </div>
</template>

<script>
import DayLinkRatioCharts from "@/components/charts";
export default {
components: {
    DayLinkRatioCharts 
  },
  data () {
    return {
      dayLinkRatio:{//日环比
        option:{
          tooltip: {
            trigger: "axis",
          },
          legend: {
            //标记属性
            data: ['今日','昨日'],
            orient: "horizontal", //标记排列显示
            top:20, //标记位置
            right:23, //标记位置
            icon:'rect',
            itemWidth: 16,
            itemHeight:3,
            itemGap:16,
            formatter: [//用富文本组件实现图例与文字对齐的关键是富文本的格式转换
              '{a|{name}}'
            ].join('\n'),
            textStyle: {
              color:'rgba(159,216,253,0.6)',
              fontSize:13,
              height:20,//图例字体高度
              lineHeight:22, //图例字体行高
              rich:{//用富文本组件实现图例与文字对齐
                a:{
                  verticalAlign: 'middle'//图例与文字对齐方式
                }
              }
            },
          },
          grid:{
            //绘图区调整
            left:23,
            right:23,
            bottom:20,
            containLabel: true,
          },
          xAxis: {
            type: "category",
            boundaryGap: true,
            data: ["0点","1点","2点","3点","4点","5点","6点","7点","8点","9点","10点","11点","12点","13点","14点","15点","16点","17点","18点","19点","20点","21点","22点","23点"],//x轴数据
            axisLabel: {
              //坐标轴文字显示样式
              lineHeight: 15, //字体行高
              fontSize:13,
            
ECharts 3D柱状图与折线图混合组件开发实战:BarLine3D.vue 深度解析 是一个功能强大的混合图表组件,它巧妙地将3D立体柱状图与面积折线图结合在一起,适用于需要同时展示两种不同类型数据的场景。这种组合图表在业务监控、数据分析等场景中具有重要价值。组件展示了如何在前端项目中实现复杂的混合图表需求。通过结合3D柱状图和折线图,该组件能够同时展示两种不同类型的数据趋势,为用户提供更丰富的数据洞察。技术亮点创新的3D图形自定义实现智能的坐标轴计算算法现代化的响应式布局方案完善的性能优化和内存管理适用场景业务指标监控面板数据对比分析报告实时性能监控系统多维度数据可视化。 阅读详情

相关推荐

vue-echart柱状图 案例代码分享

引言:因笔者在项目中只用到了柱状图,此处仅分享柱状图的案例代码,使用的是vue-echarts,涉及到数据请求,柱状图渲染,简化的鼠标经过显示数据内容,以及鼠标点击柱形图某个柱子的事件代码。 正文: 1、安装vue-echarts:npm install echarts vue-echarts; 2、使用方法(笔者用在src/views/chart.vue文件中): 1)按需引入vue-e...

菜鸟小筑 1258

vue运用之echart柱状图3D效果案例代码

在ECharts中,创建3D柱状图需要使用GL模块,并设置type为’bar3D’柱状图案例可参考,我的这篇文章Echarts之柱状图。

日常笔记/总结/系列知识梳理 1522

Vue2仪表盘开发:实现左侧导航+卡片式布局 前端进阶实战:Vue2后台管理系统仪表盘设计 从零开始用Vue2打造动态仪表盘页面(附源码) Vue2实战:仪表盘式功能页面布局与交互实现 前端必学案例:

Vue2仪表盘开发:实现左侧导航+卡片式布局 前端进阶实战:Vue2后台管理系统仪表盘设计 从零开始用Vue2打造动态仪表盘页面(附源码) Vue2实战:仪表盘式功能页面布局与交互实现 前端必学案例:Vue2仪表盘设计+分类功能展示 Vue2+CSS3教程:构建现代化仪表盘页面 响应式仪表盘开发:用Vue2实现高效功能布局Vue2仪表盘开发:实现左侧导航+卡片式布局 前端进阶实战:Vue2后台管理系统仪表盘设计 从零开始用Vue2打造动态仪表盘页面(附源码) Vue2实战:仪表盘式功能页面布局与交互实现 前

sky10100100的博客 1316

Vue+ECharts驾驶舱项目实战:从3D地图到可视化大屏的完整方案

数据可视化大屏是企业展示核心指标的重要形式,其本质是通过图表与交互动效将复杂数据转化为直观洞察。ECharts作为成熟的可视化库,配合Vue框架的组件化能力,能够高效构建具备科技感的驾驶舱界面。从技术选型、图表配置、3D地图实现到性能优化,系统复盘一个基于Vue3、ECharts5和echarts-gl的园区监控大屏项目,涵盖大屏分辨率适配、数据轮询刷新、视频流接入及Electron打包等关键环节,并针对地图分段、渲染异常、移动端兼容等常见问题给出排查方案。无论是正在规划领导驾驶舱,还是希望提升数据呈现效果

weixin_29009669的博客 109

Python小波变换实战:用PyCWT分析气候数据(附完整代码)

本文详细介绍了如何使用Python中的PyCWT库进行小波变换分析,特别针对气候数据(如NINO3海温异常数据)的多尺度周期性特征提取。通过完整的代码示例,从数据预处理、小波参数配置到结果可视化,逐步指导读者掌握小波变换在气候研究中的实际应用。

weixin_29088655的博客 282

FreeRTOS-Plus-CLI使用笔记

FreeRTOS-Plus-CLI使用笔记 一、简介 详细介绍可参考FreeRTOS-Plus-CLI官网地址入口 FreeRTOS+CLI(Command Line Interface, 命令行接口)提供了一种简单、小型、可扩展且RAM高效的方法,使FreeRTOS应用程序能够处理命令行输入。添加一条指令的步骤如下: 提供一个实现命令功能的函数 将命令映射到该功能函数 注册命令 运行命令解释器 命令行调试接口对于排查分析出现的问题提供了很好的接口,可以通过查看传感器信息判断传感器是否正常,可以查看内置

ApexYuan 6964

IC 时钟设计核心问题与高质量系统设计指南(附源码)

本文深入探讨了IC时钟设计的核心问题与高质量系统设计方法。时钟系统作为IC的"心脏",其性能直接影响时序稳定性、功耗效率和可靠性。文章从五个维度展开分析:时钟源选择与性能匹配、时钟分配网络设计、抖动抑制、多时钟域管理和功耗优化。针对高质量时钟系统设计,提出了时钟源优化、时钟树结构优化、干扰抑制与仿真验证等具体方法。同时,系统阐述了时钟与复位的协同设计关系,强调异步复位同步释放等技术的重要性。文章还总结了高质量IC系统设计的综合要点,包括电源/信号完整性、时序功耗平衡、可靠性设计及全流程验

Open 1060

Windows11安装UE4+Airsim

Windows11安装UE4+Airsim

Legendyyy的博客 3743

信奥赛csp初赛高频考点【位运算】(详细解析)

信奥赛csp初赛高频考点【位运算】(详细解析)

王老师青少年编程 371

行测测评——矩阵、圆形、环形三角图形数列推理解题技巧

写在前面:各大公司的测评做的让人眼花缭乱,很多题型都是第一次见,比如逻辑关系、信息推理,最难的要属找规律的数字推理了。根据B站UP主刘文超老师的课程,记录一下解题技巧。感谢UP主的无私奉献,原地址连接:https://www.bilibili.com/video/BV1it411M7o2?t=528&p=7 解题技巧: 从图形的上下、左右、交叉 角度进行尝试求解 基本法则是“加、减、乘、除、倍数、次方”六种形态。 一、有心数阵 解题技巧:周边数字通过某种运算得到中间数字 1.周边数..

涵盖了计算机专业基础知识、数学建模相关实践、复杂网络论文研究、LeetCode算法刷题经验、C语言开发经验、前端Vue、React框架开发实战相关知识 8643

Python爬虫实战:基于最新技术栈的晋江文学城小说爬取

本文将详细介绍如何使用Python最新技术栈构建一个高效的晋江文学城小说爬虫。我们将从爬虫基础知识讲起,逐步深入到反爬机制应对、分布式爬虫设计以及数据存储优化等高级话题。文章包含完整的代码实现,使用aiohttp+asyncio实现异步爬取,Playwright处理动态渲染,并结合Redis实现分布式任务队列。本文旨在为读者提供一个全面的现代Python爬虫开发指南。网络爬虫(Web Crawler)是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据分析和内容聚合等领域。

2201_76125261的博客 872

大唐杯历届省赛押题训练(6)

考试-TD-LTE无线网络设备介绍-TD-LTE网络架构一、单选题1TD-LTE的接入网E-UTRAN由下列哪些网元组成( )。0分/1分A、RNCB、BTSC、eNode BD、Node B提交答案:B正确答案:C考点TD-LTE网络架构解析暂无试题解析二、多选题1关于LTE网络整体结构,哪些说法是正确的( )0分/2分A、E-UTRAN用E-NodeB替代原有的RNC-NodeB结构B、E-NodeB间的接口为S1接口C、各网络节点之间的接口使用IP传输。

nimo观察者 638

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: vue+tinymce富文本插件的使用
下一篇: vue滚动插件之 vue-srcollto
皮蛋灬
博客等级 码龄9年 26粉丝 45原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值