vue使用echarts动态获取数据不渲染

本文介绍如何使用ECharts绘制慢日志查询图,包括设置颜色、图例、坐标轴等配置项,并通过实际数据展示图表效果。

直接上图片,做成的效果图是这样的
在这里插入图片描述
上面的现状图很简单,两列一列是采集时间,一列是查询的时常,单位(S)
直接上代码:

<template>

  <div id="main1"  style="width:100%;height: 400px;">
  </div>

</template>

<script>
    import * as echarts from 'echarts';
    export default {
      name: '',
     data() {
      return {
       chartLine: null,
      }
     },
watch: {

  //观察option的变化

  option: {

   handler(newVal, oldVal) {

    if (this.chartLine) {

     if (newVal) {

      this.chartLine.setOption(newVal);

     } else {

      this.chartLine.setOption(oldVal);

     }

    } else {

      this.drawLineChart();

    }

   },

   deep: true //对象内部属性的监听,关键。

  }

 },
     mounted() {
      this.$nextTick(() => {
        this.drawLineChart();
      })
     },
     methods: {
      drawLineChart() {
       var inthis = this
       inthis.chartLine = echarts.init(this.$el, 'shine');// 基于准备好的dom,初始化echarts实例
       let option = {
          color: ['#c23531','#2f4554', '#61a0a8', '#d48265', '#91c7ae','#749f83',  '#ca8622', '#bda29a','#6e7074', '#546570', '#c4ccd3'],

        tooltip: {
         trigger: 'axis'
        },
        legend: {
         data: ['慢日志查询']
        },
        toolbox: {
            //show: true,
            itemSize: 20,
            itemGap: 30,
            right: 50,
            feature: {
                dataView: {show:true},
                saveAsImage: {
                    //excludeComponents :['toolbox'],
                    pixelRatio: 2
                }
            }
},
    //      dataZoom: [{
    //     type: 'inside',
    //     start: 0,
    //     end: 100
    // }, {
    //     start: 0,
    //     end: 100
    // }],
        calculable: true,
        xAxis: [
         {
          type: 'category',
          boundaryGap: false,
          axisTick: {
           show: false
          },
          data: []
         }
        ],
        yAxis: [
         {
          type: 'value',
          axisTick: {
           show: false
          },
          name: '(秒)'
         }
        ],
        series: [
                 {
          name: '慢日志查询',
          type: 'line',
          stack: '总量',
          data:[]
         }
        ]
       };
       // 使用刚指定的配置项和数据显示图表
       inthis.chartLine.setOption(option);//这一句如果不添加,那么echarts图片无法渲染
       // inthis.chartLine.showLoading();
       this.$store.dispatch('slowloghis/slowloghisgraph').then(res => {
        let arr1 = []
        let arr2 = []
        res.forEach(function (item, index) {
         arr1.push(item.ts_max)
         arr2.push(item.query_time_max)
        })
        inthis.chartLine.setOption({
         xAxis: {
          data: arr1
         },
         series: [
         {
          name: '慢日志查询',
              color: ['#37A2DA', '#32C5E9', '#67E0E3', '#9FE6B8', '#FFDB5C','#ff9f7f', '#fb7293', '#E062AE', '#E690D1', '#e7bcf3', '#9d96f5', '#8378EA', '#96BFFF'],
          type: 'line',
          stack: '总量',
          data:arr2
         }

        ]
        }


        );
       })
window.addEventListener("resize", inthis.chartLine.resize);
       console.log(inthis.chartLine)
      }
     }
    }
</script>

<style scope>
    /*#main{*/
    /*    width:50%;*/
    /*    height:100px;*/
    /*}*/
</style>

上面的代码windows.addEventListener是一个自适应屏幕显示比例的功能,可以自动缩放

inthis.chartLine.setOption(option);//这一句如果不添加,下面echarts图片无法渲染,会报错
Uncaught (in promise) TypeError: Cannot read property ‘get’ of undefined
at isCategory (referHelper.js?8b7f:187)
at cartesian2d (referHelper.js?8b7f:133)
at getCoordSysInfoBySeries (referHelper.js?8b7f:115)
at createListFromArray (createListFromArray.js?3301:90)
at ExtendedClass.getInitialData (LineSeries.js?217b:51)
at ExtendedClass.init (Series.js?4f85:136)
at ExtendedClass.eval (Global.js?7e63:238)
at Array.forEach ()
at each (util.js?1ee1:300)
at ExtendedClass.visitComponent (Global.js?7e63:212)
通过console打印我可以知道我的结果可
但是如果template模板这样写

  <div>
  <div id="main1"  style="width:100%;height: 400px;">
  </div>
</div>

什么都显示不出来
查看元素也是直接ID=“main1"没有了找不出问题,为了解决最后只能使用了v-charts

  • 技术无止境
内容概要:本文围绕可变桨叶四旋翼无人机的规范控制与点对点运动模拟展开,重点研究优化推力分配策略在翻转动作中的应用与性能比较。通过Matlab代码实现,构建了四旋翼动力学模型,并设计了多种控制算法以实现精确的姿态调整与轨迹跟踪。研究对比了不同推力分配方案在执行高机动性翻转动作时的稳定性、能耗效率与响应速度,旨在提升无人机在复杂飞行任务中的动态性能与控制精度。该仿真研究为无人机飞控系统的设计与优化提供了理论依据技术支持。; 适合人群:具备一定自动控制理论基础Matlab编程能力,从事无人机控制、飞行器动力学或机器人系统研究的科研人员及研究生。; 使用场景及目标:① 实现四旋翼无人机在三维空间中的精确点对点运动控制;② 对比分析不同推力分配策略在执行翻转等高难度动作时的控制效果与能耗表现,优化飞行性能;③ 为无人机自主飞行、特技飞行及复杂环境下的机动控制提供算法验证平台。; 阅读建议:此资源以Matlab仿真为核心,建议读者结合相关控制理论知识,深入理解代码实现细节,重点关注动力学建模、控制律设计与推力分配模块。在学习过程中,应动手调试参数,复现文中翻转动作的仿真结果,并尝试拓展至其他复杂飞行任务,以加深对无人机控制机理的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值