Echart实现动态线性图

该博客展示了如何在Vue环境中利用Echarts库实现动态线性图的功能。内容包括线性图的效果展示,Vue组件的代码实现以及数据JSON的结构解析。重点在于根据用户的选择动态加载或移除图表数据。
摘要由CSDN通过智能技术生成

效果如下图:

在这里插入图片描述

效果:
1:选择数据,对把应的数据加载到 线性图。
2:取消选择数据,对应的数据从图表上消失。

代码实现(Vue)

<template>
  <div style="margin-top :10px;">

    <el-row :gutter="20" style="vertical-align:middle;" >
      <el-col :span="4"><div class="maid-col" style="vertical-align: middle;">{
  {header.DATE_VAL}}</div></el-col>
      <el-col :span="3"><div class="maid-col">{
  {header.MEASURE_MAN}}</div></el-col>
      <el-col :span="3"><div class="maid-col">{
  {header.MEAS_STAN}}</div></el-col>
      <el-col :span="3"><div class="maid-col">{
  {header.PART_RATE}}</div></el-col>
      <el-col :span="3"><div class="maid-col">{
  {header.ALL_RATE}}</div></el-col>
    
      <el-col :span="3"><div class="">部位:
        <el-select v-model="condition.option" style="width:100px;" placeholder="请选择">
          <el-option
            v-for="item in options"
            :key="item.value"
            :label="item.label"
            :value="item.value">
          </el-option>
        </el-select>
      </div></el-col>
      <!-- <el-col :span="3"><div class="maid-col">
          标签:

      </div></el-col> -->
      <el-col :span="3"><div class=""> <el-button type="primary"  round >导出</el-button> </div></el-col>
    </el-row>


    <el-divider></el-divider>
    <el-row >
      <el-col :span="23">
        <transition name="el-zoom-in-top">
        <div id="myChart" v-show="charts_cfg.show" class="charts"  style="width: 1500px;"></div>
      </transition>
      </el-col>
   
    </el-row>

    <el-row :gutter="20" style="vertical-align:middle; " >
 
      <el-col >
        <div class="data">
        <el-table :data="rptData.GRID"  align="center"  :max-height='table_cfg.maxHeight'   @selection-change="handleSelectionChange" >
          <el-table-column
          type="selection"
          width="55"    >
        </el-table-column>
        <el-table-column
      type="index" label="序号"
      width="50">
    </el-table-column>
          <el-table-column   prop="PART_POS" label="部位" width="120">
          </el-table-column>
          <el-table-column   prop="POS_ID" label="单点编号" width="120">
          </el-table-column>
          <el-table-column   prop="POS_NAME" label="单点名称" width="120">
          </el-table-column>
          <el-table-column   prop="RL_VAL" label="R/L" width="80">
          </el-table-column>
          <el-table-column   prop="REMARK" label="备注" width="120">
          </el-table-column>
          <el-table-column   align="center" label="检规-规格" width="150">
            <el-table-column  prop="CHECK_SPEC_ADD"  label="+" width="50">
            </el-table-column>
            <el-table-column   prop="CHECK_SPEC_SUBTRA"  label="-" width="50">
            </el-table-column>
            <el-table-column  prop="CHECK_JUDGE"  label="判定" width="50">
            </el-table-column>
          </el-table-column>
          <el-table-column   align="center" label="内规-规格" width="150">
            <el-table-column  prop="INNER_SPEC_ADD"  label="+" width="50">
            </el-table-column>
            <el-table-column   prop="INNER_SPEC_SUBTRA"  label="-" width="50">
            </el-table-column>
            <el-table-column  prop="INNER_JUDGE"  label="判定" width="50">
            </el-table-column>
          </el-table-column>
          <el-table-column   align="center" label="平均值" width="20">
            <el-table-column  prop="ERR5"  label="Err" width="60">
            </el-table-column>
            <el-table-column prop="AVGN"   label="N=10" width="100">
            </el-table-column>
            <el-table-column prop="ERRN"   label="Err" width="60">
            </el-table-column>
           
          </el-table-column>
          <el-table-column   align="center" label="上一数据" width="150">
            <el-table-column  prop="LASTVAL"   label="10/13" width="80">
            </el-table-column>
            <el-table-column prop="ERRLAST"   label="Err" width="50">
            </el-table-column>
            
          </el-table-column>
    
          <el-table-column   prop="AVGN" label="V" width="80">
     
          </el-table-column>
          <el-table-column   prop="CP" label="CP" width="80">
     
          </el-table-column>
          <el-table-column   prop="CPK" label="CPK" width="80">
     
          </el-table-column>
          <el-table-column    label="趋势图" width="120">
     
          </el-table-column>
        </el-table></div>
      </el-col>
    </el-row>
  </div>
  </div>

</template>
<style>
    .maid-col {
    
        height: 20px;
        padding: 12px 0 0 10px;
    }
    
    .data {
    
        /* height: 300px; */
    }
    
    .charts {
    
        width: 100%;
        height: 300px;
    }
</style>

<script>
    import axios from "axios";
    import reportData from "./reportData.json";

    export default {
    
        name: 'hello',
        data() {
    
            return {
    
                myChart: undefined,
                chartOption: undefined,
                rptData: reportData,
                header: {
    },
                options: [{
    
                    "value": "左后门",
                    "lable": "左后门"
                }, {
    
                    "value": "右后门",
                    "lable": "右后门"
                }, {
    
                    "value": "左前门",
                    "lable": "左前门"
                }, {
    
                    "value": "右前门",
                    "lable": "右前门"
                }],
                condition: {
    
                    "option": "左前门"
                },
                table_cfg: {
    
                    maxHeight: 350
                },
                charts_cfg: {
    
                    show: false,
                }
            }
        },
        mounted() {
    
            this.init();
            this.drawLine();
        },
        methods: {
    
            init: function() {
    
                if (this.rptData.BASIC_INFO.length > 0) {
    
                    this.header = reportData.BASIC_INFO[0];
                };

                this.chartOption = {
    
                    notMerge: true,
                    title: {
    
                        text: '折线图堆叠'
                    },
                    // tooltip: {
    
                    //     trigger: 'axis'
                    // },
                    // legend: {
    
                    //     data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎']
                    // },
                    grid: {
    
                        left: 
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值