vue+echarts 動態繪制圖表以及異步加載數據


前言

  背景:vue寫的后台管理,需要將表格數據繪制成圖表(折線圖,柱狀圖),圖表數據都是通過接口請求回來的。

安裝

  cnpm install echarts --s   (我這里用了淘寶鏡像,不知道同學自行百度)

實例化

   在已有的項目中下載好了echarts 之后,可以打開官方文檔,但是我覺得官方文檔對於實例化介紹的不夠清晰,這也是我為什么在這么多的文章中還要寫的原因,前輩寫的太模糊了,我決定好好給后來人,需要在項目中引用圖表的人,一些實用,快捷的東西。

  官方文檔:http://echarts.baidu.com/tutorial.html#5%20%E5%88%86%E9%92%9F%E4%B8%8A%E6%89%8B%20ECharts

  不廢話,貼代碼

1.在需要用圖表的地方引入 例如:hello.js

    import echarts from 'echarts'

2.hello.vue  中寫個容器
    
    <div id='myChart' style='width:600px;height:600px'></div>

3.在hello.js
    
 export default {
  name: 'hello',
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  },
  mounted(){
    this.drawLine();
  },
  methods: {
    drawLine(){
        // 基於准備好的dom,初始化echarts實例
        let myChart = this.$echarts.init(document.getElementById('myChart'))
        // 繪制圖表
        myChart.setOption({
            title: { text: '在Vue中使用echarts' },
            tooltip: {},
            xAxis: {
                data: ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"]
            },
            yAxis: {},
            series: [{
                name: '銷量',
                type: 'bar',
                data: [5, 20, 36, 10, 10, 20]
            }]
        });
    }
  }
}

    這樣就調用好了實例了,在頁面刷新就可以了
                    

 

  效果如圖:

  

這樣是很簡單的方法,嗯重點來了,我的數據又不是寫死的~數據都是后台給我的呀(官方,還真的沒有怎么說,示例也是ajax異步請求的)

項目一開始是有完整的一個表格數據,也就是我要把表格數據繪制成圖表,還有一堆的篩選條件,有點懵逼~

  感覺問題很多啊,給我五分鍾,分析分析,分解分解一下

  1.數據我都是有的,我需要繪制四條折線,表格數據循環復制給新的四個數組(篩選條件一變,四組數據也跟着變)

  2.橫坐標也是動態,項目是時間(剛開始我還想偏了,自動填充日期的那種),表格的第一行就是日期,同樣用新數組儲存

  3.數據重新請求了,我的圖表也要跟着變才對呀(圖表重新繪制)

  再次貼代碼(廢話再多,不如一行代碼)

  其中 series  中的name就是各個折線的數據,這些數據通過get請求等等從服務器拉取回來的。

  通過vue的數據雙向綁定,動態更新數據源,echarts表格自然也會重新繪制。

  從而實現了動態圖標,數據異步請求

1.在調用篩選條件的方法那里,創建五個新的數組(四條折線),橫坐標(日期)
    這里沒有代碼
2.橫坐標動態的:
    xAxis: {
         type: 'category',
         boundaryGap: false,
         data: this.xData,  //xData 就是日期這個數組
      },
3.series (四條折線的數據)
    series : [{
    name:this.tooltipData[0],
    type:'line',
    stack: '總量',
    data:this.new_userData,
  },
  {
    name:this.tooltipData[1],
    type:'line',
    stack: '總量',
    data:this.new_deviceData,
  },
  {
    name:this.tooltipData[2],
    type:'line',
    stack: '總量',
     data:this.active_userData,
  },
  {
    name:this.tooltipData[3],
    type:'line',
    stack: '總量',
    data:this.active_deviceData,
  }]  
4.隨着篩選數據,重新繪制圖表
    調用篩選條件方法的時候再調用這個實例化 drawline 方法就可以了
    this.drawLine();

大概就是這樣就可以實現了

寫的不好,但是還是值得參考的。有不懂,可以在評論留言,共同探討

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM