ECharts 动态更新数据

序言:本篇继续介绍Echarts的使用,主要解决数据更新!

在这里插入图片描述

一、echarts动态更新

echarts 由数据驱动,数据的改变驱动图表的改变,因此动态数据的实现也变得异常简单。
echarts 中通过 setOption 更新所有的数据,我们要做的只是定时获取数据,然后使用 setOption 填入数据,至于数据在过程中发生了哪些变化,不在我们的考虑范围内。
1、虚拟数据
一般可能用ajax请求来获取数据,这里为了方便大家查看–整了些虚拟数据,进行随机抽取数据

//虚拟数据
 randomList = [
 	[6, 22, 32, 11, 36, 20],
    [12, 32, 8, 34, 18, 14],
    [22, 12, 32, 10, 10, 20],
    [18, 38, 16, 26, 14, 14],
    [16, 10, 10, 38, 10, 14],
    [28, 12, 32, 35, 17, 20]
  ];

2、获取随机数据,setOption更新数据
实例化Echarts,设置了autoChange方法:随机获取数据并setOption更新数据

// 基于准备好的dom,初始化echarts实例
var echartBar = echarts.init(document.getElementById('echartBar'));
function autoChange(){
    //获取随机数组
    var random = Math.ceil(Math.random()*6-1);
    console.log("random:"+random)
    // 指定图表的配置项和数据
    var optionBar = {
         title: {
         	  text: 'Echarts动态更新数据'
         },
         tooltip: {},
         legend: {
         	data:['销量']
        },
         //设置X轴
        xAxis: {
           	data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
        },
        yAxis: {},
        series: [{
      	  	name: '销量',
        	type: 'bar',
        	data: randomList[random], 
       	 }]
    };
    // 使用刚指定的配置项和数据显示图表。
	echartBar.setOption(optionBar);
}

3、创建定时任务,进行动态更新
设置定时任务,定时调用autoChange方法,完成上方gif图展示效果:

autoChange();  //初始化实例后,首次设置数据
setInterval(  //设置定时器,1s更新一次
	function(){
		autoChange();
	},1000
);

二、echarts-for-react动态更新

echarts-for-react 是针对于 React 的 Echarts 封装插件。
echarts-for-react 可以在React中调用echarts接口直接渲染出Echarts图表,只要传入相关的参数和数据即可。
1、react环境安装依赖
使用npm安装依赖

npm install --save echarts
npm install --save echarts-for-react

2、引入echarts-for-react

import ReactEcharts from 'echarts-for-react';

3、页面上使用

 <ReactEcharts option={this.getOption(random)} />

4、实例如下
react环境下图表若想动态更新,必须设置state值作为参数动态变化。如下完成上方gif图展示效果:

import React, { Component }  from 'react';
import ReactEcharts from 'echarts-for-react';

const randomList = [
  [6, 22, 32, 11, 36, 20],
  [12, 32, 8, 34, 18, 14],
  [22, 12, 32, 10, 10, 20],
  [18, 38, 16, 26, 14, 14],
  [16, 10, 10, 38, 10, 14],
  [28, 12, 32, 35, 17, 20]
  ];

class EchartsDemo extends Component{
  state = { 
    random: randomList[0],
  }; 
  
   // 组件初始化时要挂载的内容
  componentDidMount() {
    //设置定时器,1s更新一次
    this.timer = setInterval(() => {
      var num = Math.ceil(Math.random()*6-1);
      this.setState( 
        { 
          random: randomList[num],
        }
      )
    }, 1000)
  };

   //组件卸载时清除定时器
  componentWillUnmount() {
    clearInterval(this.timer);
  }

  /**
   * 折线图的配置对象
   */
  getOption = (random) =>{
      return {
          title: {
              text: 'Echarts动态更新数据'
          },
          tooltip: {},
          legend: {
              data:['销量']
          },
          xAxis: {
              data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
          },
          yAxis: {},
          series: [{
              name: '销量',
              type: 'bar',
              data: random
          }]
      };
  }
  
  render(){
      const {random} = this.state;
      return(
          <div style={{width:660,height:400}}>
             <ReactEcharts option={this.getOption(random)} />
          </div>
      )
  }
}

export default EchartsDemo;

·········································································································································
本文介绍Echarts动态更新数据,请大家多多指教,能get到知识点不要忘了关注点个赞~

在Vue Echarts中,当我们需要更新数据时,我们可以重新初始化Echarts来使图表根据新的数据进行变化。具体做法是在请求成功后,调用Echarts的初始化函数,将新的数据传递给它。这样Echarts会根据新的数据重新绘制图表,实现动态更新数据的效果。 举个例子,假设我们有一个饼图,我们可以在请求成功后重新初始化Echarts,传入新的数据。代码示例如下: ```javascript // 在Vue的methods中定义一个函数来重新初始化Echarts methods: { pie_submit(index, newData) { // 请求成功后获取到新的数据newData // 重新初始化Echarts let chartDom = document.getElementById('first-line-left'); let myChart = echarts.init(chartDom); let option = { // 设置Echarts的配置项和数据 // ... series: [{ type: 'pie', data: newData }] }; myChart.setOption(option); } } ``` 在上面的例子中,我们通过获取到新的数据newData后,重新初始化了Echarts,并将新的数据传递给它的series来更新饼图的数据。这样就可以实现了Vue Echarts动态更新数据的效果。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* *2* [vue使用echarts是,动态获取数据动态更新图表数据。](https://blog.csdn.net/weixin_46371752/article/details/123342748)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值