关于在 vue项目中对echarts图表的一些控制(及数组对象去重)

vue+echarts实现图表展示,数据是从后台请求获取 ECharts,一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。 ECharts 提供了常规的折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 阅读详情

1.利用replace对后台返回的json数据做替换处理
(不管是多么复杂的数据结构,都可以利用这样的方法去全部匹配)

var json = [{'real-name':'lolo'},{'real-name':'abc'},{'real-name':'LILI'}]
var list = JSON.parse( JSON.stringify(json).replace(/real_name/g,'name').replace(/index/g,'data'));
console.log( list )
// [{'name':'lolo'},{'name':'abc'},{'name':'LILI'}]

2.数组对象去重
(如下图,从后台得到这样一个json数据)
这里写图片描述

var list =
JSON.parse(JSON.stringify(json.result.teacher_num).replace(/real_name/g,'name').replace(/index/g,'data'));
var hash = {};
var i = 0;
var res = [];
list.forEach(function(item) {
   item.data = [item.num,item.data]
   var name = item.name;
   var teacher_uid = item.teacher_uid;
   hash[teacher_uid] ? res[hash[teacher_uid] - 1].data.push(item.data) : hash[teacher_uid] = ++i &&res.push({
       data:[item.data],
       name: name,
       teacher_uid:item.teacher_uid,
       type: 'line',
       show:true
   })
 });
console.log(res)
// [
    {
        data:[[1,6],[2,7],[2,8],[2,9],[2,10]],
        name:'全部',
        show:true,
        teacher_uid:0,
        type:'line'
    },
    {
        data:[[1,6],[2,7],[2,8],[2,9],[2,10]],
        name:'杨剑',
        show:true,
        teacher_uid:2781716,
        type:'line'
    }
]

3.控制 echarts 图表里面的 legend 线条的展示、影藏状态

  //第一步,我们在vue项目中,拟定一个方法来绘制图表,将echarst里面的option 和mychart 定义为全局变量,方便后期数据更改的时候重新调用方法改变变量,从而重新绘制图表

 getDistribution:function(){
     this.mychart = echarts.init(document.getElementById('distribution'));    //在vue的deta定义全局
     this.option = {                                                  //即:mychart=null,option=null
         backgroundColor: '#fff',
         tooltip: {
             trigger: 'axis',
             axisPointer: { type: 'cross'},
             show:true
         },
         legend: {
             show:true, orient:'horizontal',borderColor:'transparent',
             data:this.distributionList,
             y: 'bottom',
             selected:{}
         },
         xAxis: {
             data: this.column_list, 
             show:true,
             name:'分数区间',
         },
         yAxis: {
             type: 'value', show:true,name:'份数'
         },
         series:this.distributionLine,
     };
     this.mychart.setOption(this.option);
 },

//第二步,当某个数据发生改变
var obj = {name:'杨剑',show:true}
this.option.legend.selected[obj.name] = obj.show;
this.mychart.setOption( this.option )
this.getDistribution()  //调用期初定义的方法,重新绘制

4.在vue项目中,直接全局引入 echarts 是非常大的,也会给数据加载带来一定的困扰,所以我们采用 按需引入的方式来控制代码的体积:

//第一步:在vue项目的main.js入口文件中这样写:
//echarts 按需引入,line线性折线
require('echarts/lib/chart/line');
require("echarts/lib/component/legend");

//第二步,在需要用到echarts图表的地方这样写:
var echarts = require('echarts/lib/echarts');   //引入 echarts
var myCharts  = echarts.init(document.getElementById('distribution'));
var option  = { ......}
myCharts.setOption( option )

5.echarts自定义tooltip提示框内容

tooltip: {
    trigger: 'axis',
    axisPointer: { type: 'cross'},
    show:true,
    formatter:function (params) {
        var res='<div><p>所在区间:'+params[0].name+'</p></div>'
        for(var i=0;i<params.length;i++){
            res+=`<p>${params[i].seriesName}:${params[i].value}</p>`
        }
        return res;
    }
},

这里写图片描述

6.设置X轴的数据超出多少字自动换行

 axisLabel: {
    formatter : function(params){
        var newParamsName = "";//拼接加\n返回的类目项
        var paramsNameNumber = params.length;
        var provideNumber = 8;//每项显示文字个数
        var rowNumber = Math.ceil(paramsNameNumber / provideNumber);// 换行的话,需要显示几行,向上取整
        if (paramsNameNumber > provideNumber) {
            for (var p = 0; p < rowNumber; p++) {
                var tempStr = "";//每次截取的字符串
                var start = p * provideNumber;//开始截取的位置
                var end = start + provideNumber;//结束截取的位置
                if (p == rowNumber - 1) {
                    tempStr = params.substring(start, paramsNameNumber);
                } else {
                    tempStr = params.substring(start, end) + "\n";
                }
                newParamsName += tempStr;
            }

        } else {
            newParamsName = params;
        }
        return newParamsName
    },
    interval : 0,
    showMinLabel: true,
},

这里写图片描述

Vue中使用echarts实现常用图表总结 一、使用echarts前准备 1、安装echarts 控制台输入安装echarts npm install echarts --save 2、vue main.js中注册 import echarts from 'echarts' //引入echarts 二、Vue组件中使用 1、先找一个要放置图表的dom节点 <template> <div class="hygrometer" ref="hygrometer"></div> </template> 阅读详情

相关推荐

vue+echarts数据图表展示

1.安装Echarts npm install Echarts --save 2.引入Echarts 在需要的页面import引入。我的例子是将图表创建成组件,最后在App.vue渲染出来。 在components目录下创建文件Chart.vue,引入echarts包 import echarts from 'echarts' 3.使用 ①添加容器,添加样式。 <...

wusq的博客 2796

Vue使用echarts(完整版,解决各种报错)

前言:Echarts,它是一个与框架无关的 JS 图表库,但是它基于Js,只要是基于JS、TS的框架基本都能使用它,例如Vue,估计IONIC也能用。这一节主要将Vue如何使用echarts,并且包含各种错误解决方法。

geidongdong的博客 13万+

Vue项目中使用Echarts 和Echarts中水球liquidFill的中文API

一 安装Echarts npm install echarts echarts-liquidFill --save 二 引入Echarts 在入口文件index.js中 如下所示 仅供参考 import Vue from 'vue' import vueRouter from 'vue-router' import Echarts from 'echarts'//引入ech...

MrzhangxianshengJS的博客 1万+

如何在Vue和React中优雅的使用ECharts

前言 俗话说:“工欲善其事,必先利其器”。现如今已经有许多成熟易用的可视化解决方案,例如ECharts,AntV等等。我们可以把这些解决方案比作是一套套成熟的“工具”,那我们如何将这些“工具”应用于当前最热门的两个前端框架中呢? 不慌,现在我们就以ECharts为例,来尝试“工具”的各种用法。 Vue中运用ECharts 首先我们要把ECharts下载下来: npm install echarts --save 全局引用 全局引用的好处就是我们一次性把ECharts引入项目后,就可以在任何一个组件中使用E

qq_42002487的博客 941

海思ISP实战:YUV Sharpen参数调试全解析

本文深入解析了在海思ISP平台上进行YUV Sharpen参数调试的实战经验。文章以海思3516EV300芯片为例,详细拆解了EdgeFiltStr、TextureFreq等核心参数的作用与协同策略,并重点阐述了如何通过ISO联动调试,在图像清晰度与噪声抑制之间取得最佳平衡,为图像调试工程师提供了宝贵的避坑指南和实战参考。

grape的博客 209

360可视门铃双摄版数据恢复实战:BIN文件解析与视频重组

本文详细解析了360可视门铃双摄版BIN文件的数据恢复过程,包括文件结构分析、双摄像头数据存储机制及视频重组技术。通过Python开发环境和FFmpeg工具链,成功实现了H.265视频流的解析与重组,为智能家居设备数据恢复提供了实用解决方案。

weixin_29196891的博客 909

echarts - 柱状图常见问题

借助图形化的数段,清晰有效的传递和沟通信息,以视觉的方式展现数据,便于用户的认知,偏于图表的样式,相对于文字说明更加直观代码如下(示例): 2.读入数据 代码如下(示例): 该处可以加入窗口自适应 二、如何制作一个纵向堆叠柱状图 1. legend 展示 2. 纵轴加单位 3. 显示tooltip 层级被压 4. tooltip中如何获取百分比 5. tooltip中如何展示全部数据 更改样式可以用模板字符串加入class需要 deep scoped重要属性 参考文章 : https://blog

weixin_47353884的博客 1360

华硕笔记本全硬盘恢复原厂状态 实机操作,MYASUS IN WINRE恢复,ASUS RECOVERY恢复

本教程的前提的在之前就备份了原厂的RECOVERY分区,RESTORE分区,MYASUS分区 如果这些分区都没有的话那就只能找同型号笔记本的朋友要一份了,或者去售后,告诉他这三个分区都要恢复。一般售后为了节约硬盘空间,不会给你恢复restore分区,这个分区有将近20G。 我机器撒天选2 i7-11800H,3060,32G,512GB,型号FX506HM 这篇教程先说全格式化怎么做,下次有空再说免格式化怎么弄。下面开始。 首先首先你的先做给优盘或者移动硬盘做一个PE。网上做PE启动盘的教程很多,这

JamesCurtis的博客 3万+

Vue项目中使用echarts教程

Vue项目中使用echarts教程 准备工作 npm 安装ECharts npm install echarts --save 引入 ECharts 项目入口文件main.js中引入Echarts 老版本引入方式 import echarts from 'echarts'; // 或者按需引入 import echarts from 'echarts/lib/echarts'; Vue.prototype.$echarts = echarts 新版本引入方式 import * as echarts

SatanDYG的博客 9220

PMF5.0计算

EPA PMF5.0 计算步骤

nuistsy的博客 4543

STM32F103用软件I2C读取IP2366电量数据,实测避坑指南(附完整源码)

本文详细介绍了如何使用STM32F103的软件I2C驱动读取IP2366电池管理芯片的电量数据,包括GPIO初始化、I2C时序实现、关键延时优化及常见问题解决方案。通过实测避坑指南和完整源码,帮助开发者快速实现稳定的电量数据读取,适用于嵌入式电池管理系统开发。

weixin_33725722的博客 514

Vue中使用Echarts实现数据可视化

Vue中使用Echarts实现数据可视化

letterljhx的博客 2290

Camera(5)metadata

Metadata 是整个 Android camera 中类似于高楼大厦中的管道系统一样,贯穿了整个 Camera 的 Framework 和 vendor HAL。Metadata 里面包含了所有的控制、参数、返回值等等。Metadata分为Android原生的Metadata和芯片商或者用户自定义的Metadata,即Android Tag和Vendor Tag。Vendor Tag在Hal中定义,并在camx和chi目录中使用。

qq_55893245的博客 3052

在Vue 3项目中使用 echarts

记得第一次使用 echarts 还是2019年的时候,那时做的一个物联网项目云平台的前端需要一些数据可视化功能,经过一些对比后就使用了 echarts 。上手非常快,专业性也足够,因此在后来其他的一些项目中就多次用到它。 echarts 是百度基于 JavaScript 实现的一个开源可视化图表库,主要特点就是可视化类型丰富、动画炫酷、使用简单。 这个教程就简单演示如何在 Vue 3 项目中使用 echarts。 一,创建 Vue3 项目并安装 echarts npm 创建项目: npm create u

dangfulin的博客 3万+

西门子AI面试问答(STAR法则回答实例)

通过建立良好的沟通渠道、倡导透明和积极的沟通,并建立信任和共享目标的文化,我成功地改善了团队合作的氛围和效果。对于一些存在分歧和冲突的情况,我采用了积极的解决问题的态度,促进双方的沟通和理解,寻找共同的利益点和解决方案。我的成果得到了评委和观众的认可,并为我的学术发展和进一步的科学研究奠定了基础。首先,我主动与团队成员进行一对一的沟通,倾听他们的观点和意见,了解他们在合作中遇到的问题和需求。我还参加了学校组织的科学俱乐部和研究小组,与其他热衷科学的同学一起进行讨论和实验,加深我的理解和实践技能。

kashine的博客 7249

C# 量子级跨平台开发:用Uno Platform实现Windows、iOS、Android的“量子纠缠”UI同步

墨瑾轩推出编程学习平台,通过XAML的“量子纠缠”技术,实现跨平台开发的高效与一致性。传统方案中,多平台代码重复率高,UI差异大,而量子级方案则通过一套代码构建全平台应用,UI原子化同步,开发效率提升5倍。Uno Platform的“量子纠缠”架构解决了代码碎片化、性能瓶颈和调试难题,实现UI原子化同步、性能提升300%和跨平台数据无缝同步。核心架构包括XAML的跨平台渲染、MVVM的量子叠加态架构、平台差异的量子退相干处理以及性能优化的量子隧穿效应,为开发者提供高效、一致的跨平台开发体验。

java专栏 1165

Vue+Echarts图表动态适配

在实际开发中,我们经常需要将图表嵌入到不同大小的容器中。例如,我们需要将一个折线图嵌入到一个宽度为100%的容器中,但是这个容器的宽度可能会随着浏览器窗口大小的改变而改变。这时,我们需要动态地改变图表的大小,以适应不同大小的容器。在本篇博客中,我们将介绍如何使用Vue和Echarts实现图表的动态适配,让图表在不同设备上都能够完美地展示。在实际开发中,我们可以根据具体项目的需求,选择合适的方案来实现图表的动态适配。上述方案可以解决图表动态适配的问题,但是在实际使用中,我们还可以进行一些优化。

欢迎来到我的前端博客!这里汇集了关于前端开发的最新技术、实用工具和经验分享。我将为你提供详细的教程、代码示例和实战案例,帮助你掌握Web开发的核心概念和技能。不论你是初学者还是有经验的开发者,这个博客都适合你。 5125

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【vue3】 ECharts 结合实现动态图表展示

通过修改 yAxis 的 show 属性来控制图表的显示状态,并动态调整图表的布局。它通过 Vue.js 的setup语法糖和 Composition API 来管理组件的状态和逻辑,同时使用 ECharts 来渲染图表。动态加载历史数据:根据用户选择的视图类型(常规曲线或加速度曲线),动态加载并展示相应的历史数据。图表交互:用户可以通过按钮切换图表的显示/隐藏,调整图表的刻度范围,以及导出数据。响应式布局:图表会根据窗口大小自动调整尺寸,确保在不同设备上都能有良好的展示效果。

2264

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

在Vue 3中使 echarts 图表宽度自适应变化

作用是在界面显示一个柱状图:问题是在页面缩放时,图表大小始终固定:希望图表能够根据页面宽度自动调整,特别是在页面缩放时。

dangfulin的博客 1585

一篇文章带你搞定所有Echarts可视化图表

可视化图表种类如此之多,什么场景下应该用什么图表展示,是一个让人头秃的难题。本篇文章带你从ECharts安装使用到配置各种样式的ECharts图表。ECharts官网Apache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。

qq_41765777的博客 5659

Vue中EChatrs中两个图表联动(一个图表控制另一个图表的数据)

前言 这篇文章给小伙伴们带来的是EChatrs的操作,是通过点击一个图表来控制另一个图表的数据的操作,看着还是蛮有用的,因为大家在做管理系统的项目的时候,应该都是可以用的上的,也非常的简单,就是有的小伙伴可能刚接触EChatrs的时候可能不太熟悉其中的属性,因为它的属性功能太多、太强大了。 展示 一、原理 它的原理其实十分的简单,非常的简单,就是给一个图表绑定一个点击事件,当然这个操作在原生的js代码中还是很好实现的,就获取下DOM,然后操作操作就可以了。 但是这篇文章来主要给大家说的是在Vue中应该怎样

qyp_1的博客 3255

从零开始:使用 Vue-ECharts 实现数据可视化图表功能

从零开始:使用 Vue-ECharts 实现数据可视化图表功能

小二丶的博客 2346

echarts在vue3中的使用——其他页面跳转回echarts图表页面时,不显示图表的问题

简而言之,这相当于每个图表的一个唯一标识。每次图表创建时,就会生成这个东西。 也就是说,在首页加载成功时,这个东西就已经生成了,当我从其他页面跳转到首页时,这个东西还在。 所以就有了上面的警告:There is a chart instance already initialized on the dom. 那么也就是说,只要删除掉这个属性,那么每次dom都会重新挂载,在切换页面时首页就可以正常显示了。

杜永康的博客 3959

解决Vue中v-show控制echarts图表显示但图表宽度为100px问题

问题出现场景 在vue项目中,使用v-show控制div元素的显示,div标签中是echarts图表,自定义的echarts CSS样式是width为100%,但实际显示时图表宽度确为100px 实际代码 父组件代码 <template> <div> <div v-show="showMain"> <div style="backgro...

sinat_34241861的博客 5484

vue2.0_在vue中使用echarts图表插件

说明:本例子基于vue-cli脚手架搭建 首先,安装echarts依赖 npm install echarts -S 注:安装NodeJS之后,使用npm来安装包使用的是国外的地址,经常会出现超时错误,这时可以通过修改为国内的淘宝镜像来加速安装。 //淘宝镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org 在main.js中全局引入 //引入echarts import echarts from 'echarts' //vu

QiuRenBB的博客 1万+

【Vue中使用Echarts】在Vue中优雅的使用Echarts——图表轮播图、Echarts图表组件封装、节流函数优化图表性能

如果没有对插件进行封装,在后期使用插件的时候效率会十分低下也不便于后期对程序的维护拓展,在优雅的使用echarts时,首先,我们考虑到多个地方需要用到echarts,就需要封装一个组件出来,由于每一个图中的属性均由配置项option进行控制,所以我们可以将option选项提取出来,在将来用到图表的时候从父组件传进来,父组件需要做的就是为图标提供一个有大小的盒子,以便于将图表放进盒子内。当然这只是粗略的想法,具体应如何做还要阅读博客中的内容。

一个非常Cool的人 3247
上一篇: vue封装共用组件-confirm
下一篇: CSS3实现div滑入滑出效果(从下往上)
Amy o-O
博客等级 码龄9年 19粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值