vue中使用 echarts3.0 或 echarts2.0 (模拟迁徙图,折线图)

一、echarts3.0(官网: http://echarts.baidu.com/)
   首先通过npm安装echarts依赖,安装的为3.0版本
     npm install echarts -s
   也可以使用淘宝镜像
     npm install -g cnpm --registry=https://registry.npm.taobao.org
     cnpm install echarts -s
   引入的方式有两种:
     1、main.js中全局引入
       import echarts from ‘echarts‘
       Vue.prototype.$echarts = echarts
       然后在组件中通过 this.$echarts.init(document.getElementById(‘your_div‘)) 来初始化
     2、只应用基本包,加快加载速度
       在需要使用echarts的组建中引入:
       let echarts = require(‘echarts/lib/echarts‘)
       然后通过  echarts.init(document.getElementById(‘your_div‘)) 来初始化
   使用的话就比较简单,直接将官方实例封装一个为方法,在mounted中调用即可。

二、 echarts2.0(官网: http://echarts.baidu.com/echarts2/)
  1、引入
     到官网下载echarts2.0的包echarts-all.js,放到static下面,然后在index.html中引用:
       <script type="text/javascript" src="./static/echarts-all.js"></script>
  2、使用
     直接封装一个方法,在mounted中调用,通过 echarts.init(document.getElementById(‘your_div‘)) 来初始化

三、可能适合你的做法
 1、便于数据变更的处理方法是:
    首先在 data 中定义全局变量 
     data(){
        return{
           myChart: null,
           option: []
        }
      }
     然后在 mounted 中将获取到的dom节点赋值给myChart
       this.myChart = echarts.init(document.getElementById(‘myChart‘))
       在 methoes 中封装一个方法 drawLine()
       methods: {     
         drawLine (option) {     
            this.myChart.setOption({     
              //此处调用需要的图表参数及方法     
            })     
         }     
       }
      在 watch 中监听接口数据以及将数据格式化后传给图表参数,并初始化图表
          watch: {
           yourData: {       
               deep: true,       
               handler (v, ov) {       
                 if (v.length > 0) {       
                     //格式化数据并传给图表参数option       
                 }        
                 this.myChart.clear();// 重绘之前清理画布         
                 this.drawLine(this.option)       
               }       
            }
         
          }
    2、假如你使用了折线图,需要实现一个鼠标点击图表调用接口,并且将数据自定义渲染的功能,可以使用如下做法:
         tooltip: {   
             trigger: ‘axis‘,           
             triggerOn: ‘click‘,//鼠标点击时触发   
             axisPointer: { // 坐标轴指示器,坐标轴触发有效     
             type: ‘shadow‘// 默认为直线,可选为:‘line‘ | ‘shadow‘       
         },           
         formatter: function (params, ticket, callback) {     
             var content = ‘‘;
             for (var i = 0; i < params.length; i++) {         
                 if (params[i].name) {                 
                    content += "<div class=‘tootipBox‘><div class=‘tootipDate‘>" + params[i].name + "</div>";           
                    break;               
                 }             
              }
              for (var i = 0, key = {}; i < params.length; i++) {           
                 key = params[i];               
                 if (typeof key.value === ‘undefined‘ || key.value === ‘-‘){       
                    key.value = ‘暂无‘;               
                 }               
                 content += "<div class=‘tootipContent‘ style=‘border-bottom: solid 1px #fff;‘><i style=‘background-color: "         
                 + key.color + " ‘></i> "             
                 + key.seriesName                 
                 + " : " + key.value + "</div>";         
             }
             that.$store.dispatch(‘youInterfaceMethod‘, param).then((data, index) => {       
                 if (data && data.code == 1) {   
                   that.appDataArr = data.data         
                   if (data.data.length > 0) {         
                     for (var i = 0; i < data.data.length; i++) {       
                       content += ‘<div class="tooltip">‘ + that.item[i].str ‘</div>‘;           
                     }           
                    } else {   
                        content += ‘<div class="tooltip">‘ + ‘Loading...‘ + ‘</div>‘;         
                    }               
                    content += ‘</div>‘;     
                    callback(ticket, content)           
                  }             
             })
              return "Loading";
            }   
        }

    3、假如你使用了模拟迁徙图(本例子是echarts2.0版本的方法),想把接口返回的但是在 geoCoordMap 里找不到的城市,在地图上显示成未知,可以使用如下做法:
          首先,在 geoCoordMap 里插入一条数据,名称为 "未知",坐标自定义;
          然后,data 中定义变量:
             data(){
               return{
                  total: 0,
                  SHData: [], 
                  SHSCircleData: [],   
                  myChart: null,     
                  valueArr: [],     
                  maxNum: 0,       
                  unknowArea: {},     
                  unknowCount: 0
               }
             }
          然后在 watch 中格式化数据:
             watch: {
                 yourData: {     
                    deep: true,     
                    handler (v, ov) { 
                        this.total = 0 
                        this.SHData = [] 
                        this.SHSCircleData = [] 
                        this.unknowArea = {}     
                        this.unknowCount = 0
                        if (v.length > 0) {   
                           v.forEach((item) => {   
                              this.total = this.total + item.count     
                              if (item.count === 0) return         
                              if (item.city == ‘未知‘ || !this.geoCoordMap.hasOwnProperty(item.city)) {
                                  // 若item.city ‘未知‘ 或者在对象 ‘geoCoordMap‘ 中不存在               
                                  this.unknowCount += item.count               
                                  this.unknowArea = {name: ‘外太空‘, value: this.unknowCount}
                                  return;             
                               }             
                               this.SHData = this.SHData.concat([[{name: ‘上海‘}, {name: item.city, value: item.count}]])
                               this.SHSCircleData = this.SHSCircleData.concat([{name: item.city, value: item.count}])           
                         })           
                         this.SHData = this.SHData.concat([[{name: ‘上海‘}, this.unknowArea]])
                         this.SHSCircleData = this.SHSCircleData.concat([this.unknowArea])
                    }        
                   this.myChart.clear();// 重绘之前清理画布
                   this.myChart.setOption(this.option(this.SHData, this.SHSCircleData))       
                }       
              }
          } 

      methods封装方法:
     
         option(SHData, SHSCircleData){ 
           return {     
               //调用方法及参数   
               //特别提出一个,关于颜色的,取返回数据的总数除以数组长度然后再取整,会让颜色一直都像放烟花   
               dataRange: {           
                  show: true,           
                  min: 0,           
                  max: parseInt(this.total/this.SHData.length),   
                  calculable: true,           
                  color: [‘#ff3333‘, ‘orange‘, ‘yellow‘, ‘lime‘, ‘aqua‘],   
                  textStyle: {             
                      color: ‘#fff‘           
                  }         
               }
             }     
           }
      mounted调用:
      mounted () { 
         this.getOnlineUser()//数据接口调用   
         setInterval(() => {//隔30s轮询一次接口 
            this.getOnlineUser()       
         }, 30000)     
         this.myChart = echarts.init(document.getElementById(‘myChart‘))   
      }

THE END.
时间: 2024-08-14 02:31:24

vue中使用 echarts3.0 或 echarts2.0 (模拟迁徙图,折线图)的相关文章

在vue中继续使用layer.js来做弹出层---切图网

layer.js是一个方便的弹出层插件,切图网专注于PSD2HTML等前端切图多年,后转向Vue开发.在vue开发过程中引入layer.js的时候遇到了麻烦.原因是layer.js不支持import导入,这时就需要修改一下它的源码.在看过它的源码后,发现需要修改的地方只有两处, 源码中已经暴露了一个全局变量layer,故只需在脚本末尾处添加 export default layer; 这表示将这个全局变量导出. 然后在文件中找到下面的代码注释掉,这段代码是为layer添加样式的,但使用的路径不对

VUE中使用Echarts绘制柱状图

在main.js中引入echarts import echarts from 'echarts' Vue.prototype.$echarts = echarts 在相应的vue中导入echarts import echarts from 'echarts'; 实现柱状图显示 <div style="width: 100%;height: 50%;border:1px solid rgb(180,180,180);top: 0px" id="echartss"

Vue.js高仿饿了么外卖App 前端框架Vue.js 1.0升级2.0

课程目录:第1章 课程简介介绍课程的学习目标和学习内容.第2章 Vuejs介绍从前端开发趋势分析开始,引入 MVVM 开发框架和 Vue.js,接着对比流行框架Angular 和 React,最后详细介绍 Vue.js 的核心思想-数据驱动和组件化.第3章 Vue-cli 开启 Vuejs 项目介绍 Vue 项目的脚手架,如何安装,对脚手架生成的目录文件做介绍,介绍 Vue 组件的编写方法,最后运行 demo 项目并介绍 webpack 构建脚本来说明 demo 的运行原理.第4章 项目实战-准

java中Integer i1= 0; Integer i2= 0; 为什么可以用 == 符号呢

java中Integer i1= 0; Integer i2= 0;  有i1 == i2,且有i1 = 1;那么i2为什么不会变成1呢? 我这个时候的想法是:这是因为java中整型常量是基于int的,而java中有自动包装机制,也就是说看起来i1,i2是Integer类型,但是其底层还是基于int类型的(不能理解的话在java中还有一个地方那就是Arrays.asList(T...args) 他返回一个基于数组的List,如果在List中改变其大小,那么将会引发异常[UnsupportedOp

丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0

丙申年把真假美猴王囚禁在容器中跑 ASP.NET Core 1.0? 警告 您当前查看的页面是未经授权的转载! 如果当前版本排版错误,请前往查看最新版本:http://www.cnblogs.com/qin-nz/p/aspnetcore-run-on-mono-in-year-of-monkey.html 提示 更新时间:2016年02月07日. 各位程序媛/程序猿们,猴年快乐. 相信不少媛/猿都是被标题吸引来的,那我我先解释下标题. 提示 本文是一篇半科普文,不对技术细节进行深入探究. 标题

10.16输入一个字符串,内有数字和非数字字符,如: a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组num中。例如123放在num[0]中,456放在num[1]中……统计共有多少个整数,并输出这些数。

10.16输入一个字符串,内有数字和非数字字符,如: a123x456 17960? 302tab5876 将其中连续的数字作为一个整数,依次存放到一数组num中.例如123放在num[0]中,456放在num[1]中--统计共有多少个整数,并输出这些数. #include <stdio.h> int main(){ void search(char * parr, int * pnum); char arr[100],* parr; int num[30],* pnum; parr=arr;

C++中减去‘0’的作用( -&#39;0&#39; )

我们在日常研(chao)究(xi)大佬们的代码时,可能会遇到减去字符'0'的情况,比如下图,这种语法问题吧说简单它不那么简单,毕竟不好理解:但说难吧也不难,其实就是让代码更简洁更有逼格的途径而已. 说了那么多屁话那么这个减去零到底是干啥的呢? 它的作用就是减去0的ASCII值:48.可以方便的用来转换大小写或者数字和和字符.比如我们可以写这么一个函数: #include <cstdio> #include <iostream> using namespace std; int ch

CentOS-6.4-minimal版中Apache-2.2.29与Tomcat-6.0.41实现负载均衡

/** * CentOS-6.4-minimal版中Apache-2.2.29与Tomcat-6.0.41实现负载均衡 * ---------------------------------------------------------------------------------------------------------------------- * 关于负载均衡(Load Balancer)与集群(Cluster)的区别,以及配置方式的不同,稍后更新 * -------------

while循环操作,输入一个整数放入到变量n中, 如果这个整数大于0,那么计算1+2+3+……+n的结果, 否则输出“输入的数据有错误”。

import java.util.Scanner; /** * @author 蓝色以太 while循环操作,输入一个整数放入到变量n中, 如果这个整数大于0,那么计算1+2+3+--+n的结果, * 否则输出"输入的数据有错误". */ public class While2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("