先给大家看图

父组件

     <el-container v-show="abscissa">
        <lineEchart
          :CPUInfoList="CPUTotalUsage"
          :Timer="Timer"
          :abscissa="abscissa"
          :ordinate="ordinate"
          :title="title[0]"
          :titleList="titleList[0]"
          :unit="unit[0]"
        ></lineEchart>
      </el-container>
  components: {
    lineEchart
  },
上面是DOM和组件注册
  CPUTotalUsage: '',
  Timer: '',
  abscissa: [],
// 折线纵轴单位
unit: ['%', 'Mbps'],
// 折线title
title: ['教师端系统指标', '其他指标', 'TOP5进程占用-CPU', 'TOP5进程占用-内存'],
    ordinate: [],
上面这些是data里面定义的数据 下面是请求到的数据
.then(res => {
        if (res.Status == 1) {
          this.dataList = res.Content
          if (this.dataList) {
            this.dataList.forEach(item => {
              if (item.Datetime == this.Timer) {
                this.CPUTotalUsage = item.CPUProcessUsage
              }
              this.abscissa.push(item.Datetime)
              this.ordinateList.CPUTotalUsage.push(item.CPUTotalUsage)
              this.ordinateList.CPUProcessUsage.push(item.CPUProcessUsage)
              this.ordinateList.MemTotalUsage.push(item.MemTotalUsage)
              this.ordinateList.MemProcessUsage.push(item.MemProcessUsage)
              this.ordinateList.GPUTotalUsage.push(item.GPUTotalUsage)
              this.ordinateList.GPUMemUsage.push(item.GPUMemUsage)
              this.ordinateList.FPS.push(item.FPS)
              this.ordinateList.NetworkRecvSpeed.push(item.NetworkRecvSpeed)
              this.ordinateList.NetworkSendSpeed.push(item.NetworkSendSpeed)
            })
            this.ordinate = [
              {
                name: '系统CPU总占用',
                data: this.ordinateList.CPUTotalUsage
              },
              {
                name: '应用CPU占用',
                data: this.ordinateList.CPUProcessUsage
              },
              {
                name: '系统内存总占用',
                data: this.ordinateList.MemTotalUsage
              },
              {
                name: '应用内存占用',
                data: this.ordinateList.MemProcessUsage
              },
              {
                name: '系统GPU总占用',
                data: this.ordinateList.GPUTotalUsage
              },
              {
                name: '系统显存总占用',
                data: this.ordinateList.GPUMemUsage
              }
            ]
          } else {
            this.loading = false
            this.showFlag = false
          }
        } else {
          this.showFlag = false
          this.$message({
            message: res.Msg,
            type: 'error'
          })
        }
      })

我们看下返回的数据都是什么

这是整个接口的返回  我们就取一些数据

这个就是子组件echarts的组件实例

<template>
  <div class="echarts" ref="echarts"></div>
</template>
<script>
import echarts from 'echarts'
import wonderland from './echarts'
export default {
  props: {
    abscissa: {
      type: Array,
      default: () => []
    },
    ordinate: {
      type: Array,
      default: () => []
    },
    title: String,
    titleList: {
      type: Array,
      default: () => []
    },
    unit: String,
    Timer: String,
    CPUInfoList: String
  },
  data() {
    return {
      chart: null,
      myChart: null,
      option: {},
      lineList: []
    }
  },
  mounted() {},
  watch: {
    abscissa(newV, oldV) {
      this.draw()
    }
  },
  methods: {
    draw() {
      this.chart = this.$refs.echarts
      this.chart.style.width = document.documentElement.clientWidth - 200 + 'px'
      this.chart.style.height = 300 + 'px'
      echarts.init(this.chart, 'wonderland').dispose()
      echarts.registerTheme('wonderland', wonderland)
      this.myChart = echarts.init(this.chart, 'wonderland')
      this.option = {
        title: {
          text: this.title
        },
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'cross'
          }
        },
        legend: {
          data: this.titleList
        },
        toolbox: {
          feature: {}
        },
        grid: {
          left: '5%',
          right: '4%',
          bottom: '10%',
          containLabel: false
        },
        xAxis: [
          {
            type: 'category',
            boundaryGap: false,
            data: this.abscissa
          }
        ],
        yAxis: [
          {
            type: 'value',
            axisLabel: {
              formatter: '{value}' + this.unit
            }
          }
        ],
        dataZoom: [
          {
            type: 'slider',
            show: true,
            xAxisIndex: [0],
            start: 0,
            end: 100
          },
          {
            type: 'inside',
            xAxisIndex: [0],
            start: 0,
            end: 100
          }
        ],
        series: []
      }
      var this_ = this
      echarts.util.each(this.ordinate, function(item, index) {
        this_.option.series.push({
          name: item.name,
          type: 'line',
          showSymbol: false,
          sampling: 'average',
          data: item.data,
          markPoint: {
            symbolSize: this_.CPUInfoList ? 60 : 0,
            data: [
              {
                name: '某个坐标',
                yAxis: this_.CPUInfoList,
                xAxis: this_.Timer,
                value: '崩溃点'
              }
            ]
          }
        })
      })
      this.myChart.setOption(this.option)
      this.myChart.group = '1'
      echarts.connect('1')
      window.addEventListener('resize', () => {
        this.myChart.resize()
      })
    }
  }
}
</script>
<style lang="scss" scoped>
.echarts {
  // width: 100%;
  height: 500px;
}
</style>

echarts做折线图的更多相关文章

  1. echarts版本折线图

    1.效果如下:         绘制折线图,应该算是说echarts中使用最简单也算使用频率最高的一种功能了吧.根据官网列子能找出规律,只是有些属性对于初接触者来说,会有点陌生,不过仔细阅读一下还是不 ...

  2. Echarts line折线图使用(vue)

    实现 首先引入echarts工具 // vue文件中引入echarts工具 let echarts = require('echarts/lib/echarts') require('echarts/ ...

  3. ECharts使用—折线图动态加载

    最近需求中用到折线图,单线条,多线交错,之前是散点图,用的是另一个 amcharts.js,这个文档也能找的到,回归早本次重点:ECharts 一.首先引入echarts.common.min.js文 ...

  4. 移动端引用echarts的折线图

          移动端写一个图表引用echarts,highcharts插件,本次要找一个能够显示最新数据的折线图,最后只找到显示最大值: 找到echarts的实例:记一下个各功能.   <!DOC ...

  5. echarts实现折线图

    前端框架使用的angular,折线图使用echarts实现. 这里实现的折线图只是简单是折线图,折线图显示在table中,不需要xy轴的数据说明. 1. item.component.html < ...

  6. Echarts案例-折线图

    一:先在官网下载 https://www.echartsjs.com/zh/download.html 然后再建立工程,导入这两个包: 写代码: <!DOCTYPE html> <h ...

  7. echarts自定义折线图横坐标时间间隔踩坑总结

    折线图需求:横坐标为时间,要求按一定间隔展示,鼠标移至折线上间隔时间内的数据也可展示 其实很简单的一个配置就可搞定,但在不熟悉echarts配置的情况下,就很懵逼 xAxis: { boundaryG ...

  8. echarts之折线图介绍及使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 使用Echarts实现折线图的一点总结

    使用Echarts的一点总结 1.安装,我使用得vue cnpm install echarts --save 2.在入口文件main.js中注册,并使用 // 引入折线图 echarts impor ...

  10. ECharts绘制折线图

    首先看实现好的页面 实现 首先引入echarts工具 // vue文件中引入echarts工具 let echarts = require('echarts/lib/echarts') require ...

随机推荐

  1. modbus通信案例简单介绍

    介绍: 1.仪表等其他智能设备的modbus通信协议,确定其内部功能码地址.以型号U-MIK-P350-SCN2的杭州美控公司的压力变送器为例.查看对应手册20页.2.PLC端的编程配置.以西门子s7 ...

  2. 力扣122(java&python)-买卖股票的最佳时机 II(中等)

    题目: 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格. 在每一天,你可以决定是否购买和/或出售股票.你在任何时候 最多 只能持有 一股 股票.你也可以先购买 ...

  3. java应用提速(速度与激情)

    简介: 本文将阐述通过基础设施与工具的改进,实现从构建到启动全方面大幅提速的实践和理论. 作者 | 阿里巴巴CTO技术来源 | 阿里开发者公众号 联合作者:道延 微波 沈陵 梁希 大熊 断岭 北纬 未 ...

  4. 全链路灰度新功能:MSE上线配置标签推送

    简介: 微服务场景下,全链路灰度作为一种低成本的新功能验证方式,得到了越来越广泛的应用.除了微服务实例和流量的灰度,微服务应用中的配置项也应该具备相应的灰度能力,以应对灰度应用对特殊配置的诉求. 为什 ...

  5. 基于 K8s 的交付难题退退退!| 独家交付秘籍(第三回)

    简介: 经过仔细研究,我们发现秘籍中提到许多帮助解决交付问题的招式,而其中一个让我们印象很深,是关于在原有社区版容器底座 Kubernetes(以下简称 K8s)的基础上,对容器底座进行改进,可更好的 ...

  6. 更灵活的边缘云原生运维:OpenYurt 单元化部署新增 Patch 特性

    简介: 在正文开始之前,我们先回顾一下单元化部署的概念和设计理念.在边缘计算场景下,计算节点具有很明显的地域分布属性,相同的应用可能需要部署在不同地域下的计算节点上. 作者 | 张杰(冰羽)来源 |  ...

  7. 实时数仓Hologres首次走进阿里淘特双11

    ​简介:这是淘特在阿里巴巴参与的第二个双11大促,大促期间累计超过上千万消费者在此买到心仪的商品,数百万家商家因为淘特而变得不同,未来,淘特也将会继续更好的服务于下沉市场,让惠民走近千万家. 2021 ...

  8. [GPT] 对于一个复杂的html文档而言,如何用 js 批量替换页面上的某些文字从A替换为B,前提是不能去掉标签和已绑定的事件

      原生:示例代码 function replaceTextInDocument(node) { if (node.nodeType === Node.TEXT_NODE) { node.textCo ...

  9. [FE] jsoneditor 在 vue-router 和 vue-ssr 渲染下出现两个实例的问题

    由于 vue-router 页面是无刷新的,如果存在两次渲染,会出现如下情形. 简单粗暴的解决办法是通过判断容器中是否已经有了子节点. 此时再从其他 router link 返回就不会重复渲染了. M ...

  10. [PHP] 浅谈 Laravel 三大验证方式的区别, auth:api, passport, auth:airlock

    auth:api 最先出来,提供了最简单和最实用的方式进行 api 身份校验. 关于它的含义和用法你可以参考以下两篇: 浅谈 Laravel Authentication 的 auth:api 浅谈 ...