【ECharts】调用接口获取后端数据的四种方法

使用eacharts做大屏,需要使用后端数据,下面的方法是自己试过有效的,有什么不对的,望各位大佬指点。

目录

方法一:在mounted中使用定时器调用eacharts方法(定时器可以获取到data中的数据)

方法二:在调用数据的时候调用图表(一个页面的所有数据都在这一个接口中)

方法三:使用chartes中的dataset数据集

方法四:在对应图表中,用ajax请求


方法一:在mounted中使用定时器调用eacharts方法(定时器可以获取到data中的数据)

mounted () {setTimeout(() => {this.axisOption() // 树状this.pieOption()//饼图}, 2000)},
//或者
mounted () {setTimeout(async () => {const res = await Getwx()this.Monthlist = res.Data.Monthlistthis.Visitpvlist = res.Data.Visitpvlistthis.drawLine();//柱状图
}, 0);
},

方法二:在调用数据的时候调用图表(一个页面的所有数据都在这一个接口中)

created () {this.GetProjectAll ()},methods: {
// 获取数据async GetProjectAll () {const res = await GetProjectAll({ projectid: this.formdata.type })this.tableData = res.data.jrgrsl.datathis.pieData = res.data.clbp.datathis.$nextTick(() => {this.axisOption() // 树状this.pieOption()//饼图})},}

方法三:使用chartes中的dataset数据集

<script>
import * as echarts from 'echarts'
import { getStatistics } from '@/api/home'
export default {data () {return {mainData: [],//折线图数据}},mounted () {this.chartSetting();},created () {this.CeData()},methods: {// 返回数据async CeData () {const { data } = await getStatistics()this.mainData = data.mainData},// 折现图chartSetting () {// 基于准备好的dom,初始化echarts实例this.mainChart = echarts.init(document.getElementById('main'))const option = {tooltip: {trigger: 'axis',axisPointer: {type: 'cross',label: {backgroundColor: '#6a7985'}}},dataset: [ // 数据{  source: this.mainData // 表数据 },{ transform: {type: 'sort'}}],xAxis: [{type: 'category',boundaryGap: false,axisLabel: { // 底部文字设置interval: 0, // 控制是否全部显示fontSize: 12},axisLine: { // 底部横线show: false},axisTick: { // 刻度线show: false}}],yAxis: [{ type: 'value' }],series: [{name: '项目',type: 'line',stack: 'Total',smooth: true,lineStyle: {  width: 1,   color: '#2e3192' },showSymbol: false,label: {  show: true,  position: 'top' },areaStyle: {opacity: 0.8,color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{  offset: 0,  color: '#62a0f8' },{  offset: 1, color: '#b5d5ff' }])},markPoint: { // 最大值和最小值标注data: [{ type: 'max', name: '最大值' }]},emphasis: {  focus: 'series' }}]}// 绘制图表this.mainChart.setOption(option)const that = thiswindow.addEventListener('resize', function () {that.mainChart.resize()})},}
}
</script>

方法四:在对应图表中,用ajax请求

 drawLine2 () {var chartDom = document.getElementById('main2');var myChart = echarts.init(chartDom);var option;option = {tooltip: {trigger: 'axis',axisPointer: {type: 'cross',crossStyle: {color: '#999'}}},grid: {left: "11%",width: "80%",height: "60%"},legend: [{data: ['单位: 秒'],top: "10",left: "10",itemWidth: 8,itemHeight: 8,icon: "rect",textStyle: {color: "#fff"}}, {data: ['增速%'],top: "10",right: "5%",itemWidth: 8,itemHeight: 8,icon: "rect",textStyle: {color: "#fff"}}],xAxis: [{type: 'category',data: [],axisPointer: {type: 'shadow'},axisTick: {show: false},axisLabel: {interval: 0,textStyle: {color: '#b8b8ba',},}}],yAxis: [{type: 'value',min: 0,max: 10000,interval: 2000,axisLabel: {formatter: function (value) {return value + ""},textStyle: {color: '#b8b8ba',},},axisLine: {show: true},axisTick: {show: false},splitLine: {show: true,lineStyle: {width: 0.5}},symbol: "triangle"},{type: 'value',min: 0.4,max: 0.9,interval: 0.1,axisLabel: {formatter: '{value}',textStyle: {color: '#b8b8ba',},},splitLine: {show: true,lineStyle: {width: 0.5}},}],series: [{name: '单位: 秒',type: 'bar',data: [],itemStyle: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: '#01c7f4' },{ offset: 1, color: '#003fe2' }]),borderRadius: 8},barWidth: 10},{name: '增速%',type: 'line',areaStyle: {},yAxisIndex: 1,data: [],itemStyle: {color: "#77ff3b",},lineStyle: {width: 1},symbolSize: 7,areaStyle: {opacity: 0.4,color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 1, color: '#040d0c' },{ offset: 0, color: '#5cd62c' }])},}]};const zoomSize = 6;myChart.on('click', function (params) {console.log(dataAxis[Math.max(params.dataIndex - zoomSize / 2, 0)]);myChart.dispatchAction({type: 'dataZoom',startValue: dataAxis[Math.max(params.dataIndex - zoomSize / 2, 0)],endValue:dataAxis[Math.min(params.dataIndex + zoomSize / 2, data.length - 1)]});});option && myChart.setOption(option);$.ajax({type: "get",// async: false, //同步执行url: "api/WxStatistics/GetStatisticsData",data: {},success: function (result) {myChart.setOption({xAxis: { data: result.Data.Monthlist },series: [{data: result.Data.Staytimeuvlist,},{data: [0.6, 0.65, 0.65, 0.68, 0.58, 0.61, 0.58, 0.6, 0.61, 0.65, 0.63, 0.55],}]})},error: function (errorMsg) {alert("不好意思,图表请求数据失败啦!");myChart.hideLoading();}})window.addEventListener("resize", function () {myChart.resize();});},

注意
如果一个图表需要展示不同数据时,每获取一次数据,图表都会重新渲染一次(例如下拉框中选取数据后,图表切换对应数据)。
可能会出现There is a chart instance already initialized on the dom.这样的警告,意思是dom上已经初始化了一个图表实例。
解决办法:可以在每次渲染前先销毁这个实例,然后再重新渲染。

var myChart //先注册全局变量axisOption () {//在方法内判断,然后销毁实例,然后再初始化if (myChart != null && myChart != "" && myChart != undefined) {myChart.dispose();//销毁}// 基于准备好的dom,初始化echarts实例myChart = echarts.init(document.getElementById('axisMain'))const option = { }// 绘制图表myChart.setOption(option)window.addEventListener('resize', function () {myChart.resize()})},

 

 

到这里就结束啦,这篇文章看完如果您觉得有所收获,认为还行的话,就点个赞收藏一下

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

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

相关文章

图解李白的“朋友圈”

《长安三万里》作为2023年票房第一的国漫电影&#xff0c;以安史之乱为背景&#xff0c;从诗人高适的视角铺设了一幅绚丽的历史长卷&#xff0c;细细讲述“诗仙”李白跌宕起伏的一生&#xff0c;以及大唐盛世一路荣耀幻灭的唏嘘。同时&#xff0c;在这部动画电影中出现了多位大…

CP04大语言模型ChatGLM3-6B特性代码解读(2)

CP04大语言模型ChatGLM3-6B特性代码解读&#xff08;2&#xff09; 文章目录 CP04大语言模型ChatGLM3-6B特性代码解读&#xff08;2&#xff09;构建对话demo_chat.py定义client对象与LLM进行对话 构建工具调用demo_tool.py定义client对象定义工具调用提示词定义main&#xff0…

接口测试需求分析

测试接口的时候&#xff0c;可能很多人都会想&#xff0c;按着研发给的接口协议文档来测&#xff0c;不就好了吗&#xff1f; 其实&#xff0c;对于接口的测试&#xff0c;还需要有点深度的需求分析&#xff0c;然后再进行对应的测试。对于接口测试&#xff0c;这里有个不太详…

利用nginx内部访问特性实现静态资源授权访问

在nginx中&#xff0c;将静态资源设为internal&#xff1b;然后将前端的静态资源地址改为指向后端&#xff0c;在后端的响应头部中写上静态资源地址。 近期客户对我们项目做安全性测评&#xff0c;暴露出一些安全性问题&#xff0c;其中一个是有些静态页面&#xff08;*.html&…

Android 开发一个耳返程序(录音,实时播放)

本文目录 点击直达 Android 开发一个耳返程序程序编写1. 配置 `AndroidManifast.xml`2.编写耳返管理器3. 录音权限申请4. 使用注意最后我还有一句话要说怕相思,已相思,轮到相思没处辞,眉间露一丝Android 开发一个耳返程序 耳返程序是声音录入设备实时播放的一种程序,理论上…

XFF伪造 [MRCTF2020]PYWebsite1

打开题目 直接查看源码 看到一个./flag.php 访问一下 购买者的ip已经被记录&#xff0c;本地可以看到flag&#xff0c;那么使用xff或者client-ip伪造一下ip试试 bp抓包 加一个X-Forwarded-For头 得到flag

关于git子模块实践(一)

背景 在日常项目开发中&#xff0c;随着项目的迭代&#xff0c;不可避免的是主项目会引入到很多三方库&#xff0c;或者自研的一些模块。有一种场景&#xff0c;就是这些模块&#xff0c;是随着开发而进行迭代&#xff0c;且多个项目公用的&#xff0c;这种情况&#xff0c;在…

探讨javascript中运算符优先级

如果阅读有疑问的话&#xff0c;欢迎评论或私信&#xff01;&#xff01; 本人会很热心的阐述自己的想法&#xff01;谢谢&#xff01;&#xff01;&#xff01; 文章目录 深入理解JavaScript运算符优先级运算符优先级概述示例演示示例1&#xff1a;加法和乘法运算符的优先级示…

86、移除推理路径上的所有内存操作

动态申请内存的影响,前两节已经介绍过了,细心的朋友可能会发现,在使用 C++实现的 resnet50 代码中,还存在一处动态申请内存的操作。 那就是对于每一层的输入或输出 feature map 数据进行内存申请,比如在 3rd_preload/ops/conv2d.cc 文件中,卷积的计算中存在对于输出 fea…

MaxScale实现mysql8读写分离

MaxScale 实验环境 中间件192.168.150.24MaxScale 22.08.4主服务器192.168.150.21mysql 8.0.30从服务器192.168.150.22mysql 8.0.30从服务器192.168.150.23mysql 8.0.30 读写分离基于主从同步 1.先实现数据库主从同步 基于gtid的主从同步配置 主库配置 # tail -3 /etc/my.…

Aigtek电压放大器的应用场合有哪些

电压放大器是一种主要用于信号处理的重要电子设备&#xff0c;它可以将输入的低电压信号放大到较高的输出电压水平。在各个应用领域中&#xff0c;电压放大器发挥着重要的作用。下面西安安泰点击将介绍电压放大器的应用场合。 通信系统&#xff1a;电压放大器在通信系统中具有重…

ant-design-charts 对带缩略轴柱状图 根据数据自定义列处理, 以颜色为例

摘要 本文主要对ant-design-charts中带缩略柱状图进行自定义列处理 ant-design-charts版本&#xff1a;1.4.2 1、定义数据 const data1 [{"a": "七台河","b": 52827.32,c: 2},{"a": "万县","b": 20000,c: 1},…

队列的基本操作——常见队列的对比分析(c语言完整代码包含注释)

目录 一、队列 1.1基本概念 1.2基本操作 1.3 队列分类 1.3.1带头队列 1.3.2不带头队列 1.3.3 循环带头队列 1.3.4 循环不带头队列 1.3.5 总结 二、代码实现 2.1带头队列 2.2不带头队列 2.3循环带头队列 2.4循环不带头队列 一、队列 1.1基本概念 队列&#xff08…

openGauss学习笔记-227 openGauss性能调优-系统调优-其他因素对LLVM性能的影响

文章目录 openGauss学习笔记-227 openGauss性能调优-系统调优-其他因素对LLVM性能的影响 openGauss学习笔记-227 openGauss性能调优-系统调优-其他因素对LLVM性能的影响 LLVM优化效果不仅依赖于数据库内部具体的实现&#xff0c;还与当前所选择的硬件环境等有关。 表达式调用C…

Ubuntu 20.04.1 共享samba给windows 10

通过ssh登录ubuntu&#xff0c;修改/etc/下的smb配置文件&#xff0c; uidq4932hzh57415u:/work$ cat /etc/samba/smb.conf [global] security ads realm V01.NET workgroup V01 idmap uid 10000-20000 idmap gid 10000-20000 winbind enum users yes winbind enum grou…

pandas/geopandas 笔记:判断地点在不在路网上 不在路网的点和路网的距离

0 导入库 import osimport pandas as pd pd.set_option(display.max_rows,5)import osmnx as oximport geopandas as gpd from shapely.geometry import Point 1 读取数据 假设我们有 如下的数据&#xff1a; 1.1 新加坡室外基站位置数据 cell_stationpd.read_csv(outdoor…

耐腐蚀的液位传感器有哪些

液位传感器在不同的应用环境中有着不同的要求&#xff0c;特别是在需要耐腐蚀性液体的环境中&#xff0c;选择合适的传感器至关重要。对于这种情况&#xff0c;一种常见且有效的选择是不锈钢液位传感器。 不锈钢液位传感器具有耐腐蚀性好、安装简便、功耗低、耐压性强等优点。…

企业计算机服务器中了crypt勒索病毒怎么办,crypt勒索病毒解密数据恢复

计算机服务器设备为企业的生产运营提供了极大便利&#xff0c;企业的重要核心数据大多都存储在计算机服务器中&#xff0c;保护企业计算机服务器免遭勒索病毒攻击&#xff0c;是一项艰巨的工作任务。但即便很多企业都做好的了安全运维工作&#xff0c;依旧免不了被勒索病毒攻击…

shiro 整合 springboot 实战

序言 前面我们学习了如下内容&#xff1a; 5 分钟入门 shiro 安全框架实战笔记 shiro 整合 spring 实战及源码详解 这一节我们来看下如何将 shiro 与 springboot 进行整合。 spring 整合 maven 依赖 <?xml version"1.0" encoding"UTF-8"?> …

Spring Boot应用集成Actuator端点自定义Filter解决未授权访问的漏洞

一、前言 我们知道想要实时监控我们的应用程序的运行状态&#xff0c;比如实时显示一些指标数据&#xff0c;观察每时每刻访问的流量&#xff0c;或者是我们数据库的访问状态等等&#xff0c;需要使用到Actuator组件&#xff0c;但是Actuator有一个访问未授权问题&#xff0c;…