IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 来自一枚菜鸟的项目开发——Vue.js+Echarts的动态数据渲染 -> 正文阅读

[JavaScript知识库]来自一枚菜鸟的项目开发——Vue.js+Echarts的动态数据渲染

关于Echarts 可视化图像

Echarts 使用实例代码

<template>
  <div id="main" class="echarts"></div>
</template>
<script>
import moment from "moment";
export default {
  data() {
    return {
      myEcharts: null,
      showData: [[]],
      showDataY: [],
      option: {
        title: {
          text: "吉首大学--603草堂项目组",
          left: "1%"
        },
        tooltip: {
          trigger: "axis"
        },
        grid: {
          left: "5%",
          right: "15%",
          bottom: "10%"
        },
        xAxis: {
          data: ""
        },
        yAxis: {},

        toolbox: {
          right: 10,
          feature: {
            dataZoom: {
              yAxisIndex: "none"
            },
            restore: {},
            saveAsImage: {}
          }
        },
        dataZoom: [
          {
            startValue: "2021-09-20",
            start: "2.9554",
            end: "0.604"
          },
          {
            type: "inside"
          }
        ],
        visualMap: {
          top: 50,
          right: 10,
          pieces: [
            {
              gt: 0,
              lte: 50,
              color: "#93CE07"
            },
            {
              gt: 50,
              lte: 100,
              color: "#FBDB0F"
            },
            {
              gt: 100,
              lte: 150,
              color: "#FC7D02"
            },
            {
              gt: 150,
              lte: 200,
              color: "#FD0100"
            },
            {
              gt: 200,
              lte: 300,
              color: "#AA069F"
            },
            {
              gt: 300,
              color: "#AC3B2A"
            }
          ],
          outOfRange: {
            color: "#999"
          }
        },
        series: {
          name: "吉首大学--603草堂项目组",
          type: "line",
          data: this.showData,
          markLine: {
            silent: true,
            lineStyle: {
              color: "#333"
            },
            data: [
              {
                yAxis: 50
              },
              {
                yAxis: 100
              },
              {
                yAxis: 150
              },
              {
                yAxis: 200
              },
              {
                yAxis: 300
              }
            ]
          }
        }
      }
    };
  },
  created() {
    this.showD();
    this.showFlash();
  },
  watch: {
    showData() {
      this.initEcharts();
    },
    showDataY() {
      this.initEcharts();
    }
  },
  mounted() {
    this.initEcharts();
  },
  methods: {
    async showD() {
      var showdata = new Map();
      const data = await this.$api.quoteLalala();
      (this.showData = []), (this.showDataY = []);
      for (let i = 0; i < data.data.length; i++) {
        data.data[i].time = moment(data.data[i].time).format(
          "YYYY-MM-DD HH:mm:ss"
        );
        this.showDataY.push(data.data[i].xianX);
        showdata.set(i, [data.data[i].time, data.data[i].xianX]);
        this.showData.push(showdata.get(i));
      }
    },
    initEcharts() {
      this.myEcharts = this.$echarts.init(document.getElementById("main"));
      this.option = {
        title: {
          text: "吉首大学--603草堂项目组",
          left: "1%"
        },
        tooltip: {
          trigger: "axis"
        },
        grid: {
          left: "5%",
          right: "15%",
          bottom: "10%"
        },
        xAxis: {
          data: this.showData
        },
        yAxis: {},

        toolbox: {
          right: 10,
          feature: {
            dataZoom: {
              yAxisIndex: "none"
            },
            restore: {},
            saveAsImage: {}
          }
        },
        dataZoom: [
          {
            startValue: "2021-09-20"
          },
          {
            type: ""
          }
        ],
        visualMap: {
          top: 50,
          right: 10,
          pieces: [
            {
              gt: 0.01,
              lte: 1,
              color: "#93CE07"
            },
            {
              gt: 1.01,
              lte: 2,
              color: "green"
            },
            {
              gt: 2.01,
              lte: 3,
              color: "#FC7D02"
            },
            {
              gt: 3.01,
              lte: 4,
              color: "#FD0100"
            },
            {
              gt: 4.01,
              lte: 5,
              color: "#AA069F"
            },
            {
              gt: 5.01,
              lte: 6,
              color: "#AC3B2A"
            }
          ],
          outOfRange: {
            color: "#999"
          }
        },
        series: {
          name: "吉首大学--603草堂项目组",
          type: "line",
          data: this.showDataY,
          markLine: {
            silent: true,
            lineStyle: {
              color: "#333"
            },
            data: [
              {
                yAxis: 50
              },
              {
                yAxis: 100
              },
              {
                yAxis: 150
              },
              {
                yAxis: 200
              },
              {
                yAxis: 300
              }
            ]
          }
        }
      };
      this.myEcharts.setOption(this.option);
    },
    showFlash() {
      setInterval(() => {
        this.showD();
      }, 1000);
    }
  }
};
</script>
<style>
.echarts {
  width: 100%;
  height: 250px;
}
</style>

关于Echarts如何使用的项目开发经验

如何处理动态数据与Echarts结合在页面渲染的问题

在使用Echarts可视化图表库+Vue.js相结合过程中,我们遇到了动态数据渲染和Echarts注册挂载存在“时差”的问题。使用伊始认为是数据格式不符合渲染条件,在对数据处理后页面仍未显示预期效果。结合整个Vue框架的生命周期中created()和mounted()扮演的角色和产生的效果,我们理解了为什么数据为什么不能动态的渲染上去,就是两个钩子函数挂载执行的顺序有问题。

关于 created() 和 mounted()

created():
          在整个静态的html文件加载完成之前,执行created()函数,在有父组件和子组件的Vue文件中,执行顺序为父组件->子组件。created()钩子函数的主要作用是用于初始化数据,一般在开发中将需要向后端提交请求的函数(方法)放置在created()中。
mounted():
          在整个静态的html文件加载完成之后,执行mounted()函数,在有父组件和子组件的Vue文件中,执行顺序为子组件->父组件。mounted()钩子函数的主要作用是执行DOM操作,因此一般将DOM操作的函数(方法)放置在mounted()

解决办法

通过watch()函数监听x,y轴中数据的变化,每次变化都执行Echarts的DOM操作,从而实现基于Vue.js框架下Echarts可视化图像中数据的动态渲染。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-09-23 11:22:20  更:2021-09-23 11:23:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 13:08:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计