文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

ECharts如何调用接口获取后端数据

2023-07-04 14:17

关注

这篇文章主要介绍了ECharts如何调用接口获取后端数据的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇ECharts如何调用接口获取后端数据文章都会有所收获,下面我们一起来看看吧。

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

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

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

created () {    this.GetProjectAll ()  },  methods: {// 获取数据    async GetProjectAll () {      const res = await GetProjectAll({ projectid: this.formdata.type })      this.tableData = res.data.jrgrsl.data      this.pieData = res.data.clbp.data      this.$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 = this      window.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()      })    },

关于“ECharts如何调用接口获取后端数据”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“ECharts如何调用接口获取后端数据”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯