【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://www.mzph.cn/news/698546.shtml

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

相关文章

Stable Diffusion 3震撼发布模型与Sora同架构

Prompt&#xff1a;Epic anime artwork of a wizard atop a mountain at night casting a cosmic spell into the dark sky that says "Stable Diffusion 3" made out of colorful energy Stability AI发布Stable Diffusion 3文本到图像模型。该模型采用扩散变换架构…

SQL库操作

1、创建数据库 概念 创建数据库&#xff1a;根据项目需求创建一个存储数据的仓库 使用create database 数据库名字创建 数据库层面可以指定字符集:charset/character set 数据库层面可以指定校对集:collate 创建数据库会在磁盘指定存放处产生一个文件夹 创建语法 create …

【算法分析与设计】1的个数

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;算法分析与设计 ⛺️稳中求进&#xff0c;晒太阳 题目 编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中数字位…

【初始RabbitMQ】交换机的实现

交换机概念 RabbitMQ消息传递模型的核心思想就是&#xff1a;生产者生产的消息从不会直接发送到队列。实际上&#xff0c;通常生产者不知道这些消息会传递到那些队列中 相反&#xff0c;生产者只能将消息发送到交换机&#xff0c;交换机的工作内容也很简单&#xff0c;一方面…

云服务器发展史

在数字化浪潮的推动下&#xff0c;云服务器作为信息技术领域的一颗璀璨明珠&#xff0c;其发展史是一部科技进步和创新思维的缩影。从最初的概念提出到现如今的广泛应用&#xff0c;云服务器经历了翻天覆地的变化&#xff0c;不仅极大地推动了信息技术的发展&#xff0c;也彻底…

JavaScript运算符

文章目录 运算符介绍算术运算符递增和递减运算符比较运算符逻辑运算符短路运算逻辑与 逻辑或 赋值运算符运算符优先级 运算符介绍 算术运算符 %取余运算符的主要用途&#xff1a; 判断某个数是否能被某个数整除。 浮点数的精度问题&#xff1a; 所以&#xff1a;不要直接判断…

Unicode转换 [ASIS 2019]Unicorn shop1

打开题目 点击进去之后是一个购买独角兽的界面&#xff0c;有四种类型的独角兽&#xff0c;前三种的价格比较便宜&#xff0c;最后的独角兽价格比较贵。 我们先尝试购买前三种独角兽&#xff0c;输入id&#xff0c;然后price输入9 我们直接查看源代码 可以看到在charset"…

操作符的属性:优先级、结合性(缺表达式求值)

C语言的操作符有2个重要的属性&#xff1a;优先级、结合性&#xff0c;这两个属性决定了表达式求值的计算顺序。 我们先简单了解一下操作符的优先级和结合性&#xff0c;附上表格&#xff0c;简单记一下顺序&#xff0c;搭配几道题来加深印象。 1.优先级 优先级指的是&#x…

linux常用的网络命令实战分享

文章目录 ifup/down命令ifconfig命令观察网络接口信息修改接口参数增加虚拟网络接口 route命令查看路由表增加路由表规则删除路由表规则 IP 命令ip linkip addr设定路由 ip route arp 命令 在实际研发运维工作中常常会涉及到网关相关的操作和知识&#xff0c;这里对linux下常用…

要赢,且不止一次,2024创维汽车势不可挡!

随着除夕钟声的敲响&#xff0c;创维汽车迎来了全新的一年。过往取得的成绩已成为了历史&#xff0c;全新的未来还有待奋斗者们去开创。为辞旧迎新&#xff0c;创维汽车于2月22日及2月23日召开了“新春启航&#xff0c;共谋发展”营销会议&#xff0c;为2024做下全新布局。 创维…

js设计模式:组合模式

作用: 可以用来将数据组合成树形的数据,可以像操作单独的对象一样去操作整个树形结构 树是相对复杂的数据,使用组合模式去封装树形的组件,是很重要的,可以对外暴露很多树的操作方法 示例: //一个树型的对象数据class Organ {constructor(label, value, parentName) {this.la…

离散化算法

离散化算法的思想是将一组连续的数据映射到一组离散的取值&#xff0c;通常是整数。它的主要目的是将连续的数据转换为离散的数据&#xff0c;以便进行统计、计数、排序等操作。 C代码实现: #include<iostream> #include<vector> #include<algorithm> usi…

数据库事物复习

事务 比如说将张三的银行账户拿出一千给李四&#xff0c;首先需要查询张三的账户余额&#xff0c;扣除1000&#xff0c;然后如果给李四加上1000的过程中出现异常会回滚事务&#xff0c;临时修改的数据会回复回去。 -- 1. 查询张三账户余额 select * from account where name …

如何用GPT进行成像光谱遥感数据处理?

第一&#xff1a;遥感科学 从摄影侦察到卫星图像 遥感的基本原理 遥感的典型应用 第二&#xff1a;ChatGPT ChatGPT可以做什么&#xff1f; ChatGPT演示使用 ChatGPT的未来 第三&#xff1a;prompt 提示词 Prompt技巧&#xff08;大几岁&#xff09; 最好的原则和策…

洛谷P8772 [蓝桥杯 2022 省 A] 求和(前缀和差分)

#include <stdio.h> #include<stdlib.h> int main() {int n;scanf("%d", &n);// 读取数组 aint* a (int*)malloc(n * sizeof(int));for (int i 0; i < n; i) {scanf("%d", &a[i]);}// 计算前缀和数组 prefix_sumlong long *prefi…

unity学习(30)——跳转到角色选择界面(跳转新场景)

1.在scene文件夹中&#xff08;[siːn]&#xff09;&#xff0c;右键->create->scene&#xff0c;名字叫SelectMenu&#xff08;选择角色场景&#xff09;。 2.把新建场景拖拽到hierarchy[ˈhaɪərɑːki]中。 3.此时才能在file->build setting中Add open scene&…

【Docker快速入门】Docker部署MySQL

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

Kotlin filterIsInstance filterNotNull forEach

Kotlin filterIsInstance filterNotNull forEach fun main(args: Array<String>) {val i1 MyItem(1, 1)val i2: MyItem? nullval i3: Int 3val i4 "4"val i5 nullval i6 MyItem(6, 6)val list mutableListOf<Any?>(i1, i2, i3, i4, i5, i6)lis…

SpringBoot-2.7.6基于SLF4J日志门面的日志框架切换

SpringBoot 没有强制性的日志记录依赖项,但 Commons Logging API 除外,它通常由 Spring Framework 的模块提供。 要使用 Logback,您需要将其包含在类路径中。 推荐的方法是您只需要通过启动器,这都取决于 . 对于 Web 应用程序 ,因为它可传递地依赖于日志记录启动器。 如果…

【MySQL】数据库概述

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