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

news/发布时间2024/5/18 15:48:33

使用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://www.bcls.cn/TVSp/3224.shtml

如若内容造成侵权/违法违规/事实不符,请联系编程老四网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

【C++精简版回顾】7.析构函数

1.析构函数 class MM { public:MM() {}MM(const char* a) {name new char[strlen(a)1];strcpy(name, a);cout << name << endl;}~MM() {delete[] name;name nullptr;cout << "调用析构函数" << endl;} private:char* name; }; int main(…

设计模式——工厂模式

定义: ​ 工厂顾名思义就是创建产品&#xff0c;根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式&#xff0c;根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。该模式用于封装和管理对象的创建&#xff0c;是一种创建型模式。 本章代码:小麻雀icknn/设…

Qt应用-录音机实例

本文讲解Qt录音机应用实例。 实现的功能 录音开始暂停停止、已录时间显示。 录音文件输出。 可用录音设备查找。 录音信息显示。 界面设计 UI文件 <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"><class>…

error: src refspec master does not match any

当git报这个错的时候&#xff0c;证明我们执行了git push命令&#xff0c;但是我们会发现代码提交不上去 git push -u origin main 执行这个命令就可以解决&#xff08;注释&#xff1a;现在master改成了main&#xff09;

C语言之mkdtemp()特定占位符:XXXXXX 用法实例(八十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

普中51单片机学习(十四)

中断系统 中断的概念 CPU在处理某一事件A时&#xff0c;发生了另一事件B请求CPU迅速去处理&#xff08;中断发生&#xff09;,CPU暂时中断当前的工作&#xff0c;转去处理事件B&#xff08;中断响应和中断服务)&#xff0c;待CPU将事件B处理完毕后&#xff0c;再回到原来事件…

10.vue学习笔记(组件数据传递-props回调函数子传父+透传Attributes+插槽slot)

文章目录 1.组件数据传递2.透传Attributes&#xff08;了解&#xff09;禁用Attributes继承 3.插槽slot 1.组件数据传递 我们之前讲解过了组件之间的数据传递&#xff0c;props 和 自定义事件 两种方式 props&#xff1a;父传子 自定义事件&#xff1a;子传父 props通过额外方…

nginx服务

“欢唱吧&#xff0c;呼唤它&#xff0c;回来啊~” Web服务器简介 Web服务器&#xff0c;一般是指“网站服务器”&#xff0c;其本质就是驻留于互联网中&#xff0c;某一台机器(计算机)上的进程(程序)。Web服务器通常就是为用户提供信息浏览服务&#xff0c;更可以放置数据文件…

强化学习入门(Matlab2021b)-创建环境【2】

目录 1 前言2 利用step和reset函数创建自定义环境2.1 对象描述2.2 reset函数2.3 step函数2.3 构建自定义环境3 使用匿名函数传递额外的参数4 可视化检查自定义函数的输出参考链接1 前言 本文介绍如何基于MATLAB编写step、reset函数,创建自己的强化学习环境(Environment)。 使…

Java面试题:volatile专题

王有志,一个分享硬核Java技术的互金摸鱼侠 加入Java人的提桶跑路群:共同富裕的Java人 今天是《面霸的自我修养》第4篇文章,我们一起来看看面试中会问到哪些关于volatile的问题吧。数据来源: 大部分来自于各机构(Java之父,Java继父,某灵,某泡,某客)以及各博主整理文档…

【C语言经典100题#4】判断三角形

题目名称&#xff1a; 输入三个整数a,b,c&#xff0c;判断由a,b,c作为三条边组成的三角形&#xff0c;如果不能组成三角形则输出&#xff1a;非三角形&#xff1b;如果是三角形&#xff0c;再继续判断&#xff0c;如果是等边三角形&#xff0c;则输出&#xff1a;等边三角形&a…

NLP_GPT生成式自回归模型

文章目录 介绍完整代码小结 介绍 自回归(Autoregressive)是自然语言处理模型的一种训练方法&#xff0c;其核心思想是基于已有的序列(词或字符)来预测下一个元素。在GPT中&#xff0c;这意味着模型会根据给定的上文来生成下一个词&#xff0c;如图所示。 在GPT模型的训练和推…

网络原理-TCP/IP(7)

目录 网络层 路由选择 数据链路层 认识以太网 以太网帧格式 认识MAC地址 对比理解MAC地址和IP地址 认识MTU ARP协议 ARP协议的作用 ARP协议工作流程 重要应用层协议DNS(Domain Name System) DNS背景 NAT技术 NAT IP转换过程 NAPT NAT技术的优缺点 网络层 路由…

【MySQL】数据库概述

目录 一、为什么使用数据库&#xff1f; 二、数据库与数据库管理系统 2.1 相关概念 2.2 两者关系 三、 MySQL介绍 四、 RDBMS和非RDBMS 4.1 关系型数据库&#xff08;RDBMS&#xff09; 4.2 非关系型数据库&#xff08;非RDBMS&#xff09; 五、关系型数据库设计规则 …

在Mac上搭建MongoDB环境

最近工作中需要装MongoDB环境&#xff0c;搭建过程中遇到了一些问题&#xff0c;在这里记录一下安装MongoDB环境的方法以及问题的解决方法。有两种安装MongoDB的方法&#xff1a;brew安装和手动安装。 目录 使用Homebrew安装MongoDB 手动安装MongoDB&#xff08;不使用Homebr…

Neo4j导入数据之JAVA JDBC

目录结构 前言设置neo4j外部访问代码整理maven 依赖java 代码 参考链接 前言 公司需要获取neo4j数据库内容进行数据筛查&#xff0c;neo4j数据库咱也是头一次基础&#xff0c;辛辛苦苦安装好整理了安装neo4j的步骤&#xff0c;如今又遇到数据不知道怎么创建&#xff0c;关关难…

【QT-lineEidte动画效果

QT-lineEidte动画效果 一、演示效果二、核心代码三、下载链接 一、演示效果 二、核心代码 #ifndef DynamicUnderlineLineEdit_H #define DynamicUnderlineLineEdit_H#include <QWidget> #include <QLineEdit> #include <QPainter> #include <QPaintEvent…

构造器详解

定义: 是一种特殊类型的方法&#xff0c;用于创建对象时初始化对象的状态。 使用new关键字创建对象 构造器特点: 1.和类名相同 2.没有返回值 public class Person {String name;public Person() {this.name"John";}}public class Test {public static void main…

解决docker中运行的jar包连不上前端程序

目录 检查端口映射 查看容器的 IP 地址 检查容器网络设置 防火墙和网络策略 前端程序配置 跨域资源共享 (CORS) 日志查看 连接问题通常涉及到网络配置和端口映射。确保你在 Docker 中运行的 JAR 包可以被前端程序访问&#xff0c;可以采取以下步骤来解决问题&#xff1a…

美团面试:说说Java OOM的三大场景和解决方案?

美团面试&#xff1a;说说Java OOM的场景和解决方案&#xff1f; 尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的面试题&…
推荐文章