微信小程序使用echarts获取数据并生成折线图


Posted in Javascript onOctober 16, 2019

微信小程序使用echarts,实现左右双Y轴,动态获取数据,生成折线图

本来使用的是wxcharts,但发现实现不了左右双y轴的效果,就换成echarts

要实现这样的效果,需要以下几步:

(1)去github下载插件,放进自己的项目里

只需要将名称是ec-canvas的文件夹放进自己项目里。

像这样:

微信小程序使用echarts获取数据并生成折线图

(2)分别写小程序的四个文件

echart.json
{
 "usingComponents": {
  "ec-canvas": "../../ec-canvas/ec-canvas"
 }
}

<!--echart.wxml-->
<view class="container">
   <ec-canvas id="myechart" canvas-id="graph" ec="{{ ec }}"></ec-canvas>
</view>

echart.wxss
.container{
 margin: 0;
 padding: 0
}


echart.js

这里分步写:

第一步:导入 echarts 插件

import * as echarts from '../../ec-canvas/echarts';

第二步:写在Page外的方法

function echart(chart, leftData, rightData) {//leftData是坐标系左边y轴,rightData是右边y轴
 var option = {
  //网格
  grid: {
   bottom: 80,
   show: true,
   // containLabel: true
  },
  //图例
  legend: {
   data: [{
     name: 'leftData',
     textStyle: { //设置颜色
      color: '#6076FF',
      fontSize: '14',
     }
    },
    {
     name: 'rightData',
     textStyle: {
      color: '#FFC560',
      fontSize: '14',
     }
    }
   ],
   x: 'left',
   bottom: 15,
   left: 30
  },
  //x轴
  xAxis: {
   type: 'category',
   boundaryGap: false,
   disableGrid: true, //绘制X网格
   data: ['', '', '', '', '', '', '', '', ''],
   splitLine: {
    show: true,
    // 改变轴线颜色
    lineStyle: {
     // 使用深浅的间隔色
     color: ['#DDDDDD']
    }
   },
   //去掉刻度
   axisTick: {
    show: false
   },
   //去掉x轴线
   axisLine: {
    show: false
   },
  },
  //y轴
  yAxis: [{
    name: 'mph',
    type: 'value',
    min: 0,
    // max: 40,
    //y标轴名称的文字样式
    nameTextStyle: {
     color: '#FFC560'
    },
    //网格线
    splitLine: {
     show: true,
     lineStyle: {
      color: ['#DDDDDD']
     }
    },
    //去掉刻度
    axisTick: {
     show: false
    },
    //去掉y轴线
    axisLine: {
     show: false
    },
   },
   {
    name: 'g',
    type: 'value',
    // max: 4,
    min: 0,
    nameTextStyle: {
     color: '#6076FF'
    },
    //去掉刻度
    axisTick: {
     show: false
    },
    //去掉y轴线
    axisLine: {
     show: false
    },

   }
  ],

  series: [{
    name: 'leftData',
    type: 'line',
    animation: true, //动画效果
    symbol: 'none',
    //折线区域
    areaStyle: {
     //渐变颜色
     color: {
      type: 'linear',
      x: 0,
      y: 0,
      x2: 0,
      y2: 1,
      colorStops: [{
       offset: 0,
       color: '#6076FF' // 0% 处的颜色
      }, {
       offset: 1,
       color: 'rgba(96,118,255,0.1)' // 100% 处的颜色
      }],
      global: false, // 缺省为 false
     },
    },
    //折线宽度
    lineStyle: {
     width: 2
    },
    color: '#6076FF',
    data: leftData // 后台传过来的动态数据
    //设置固定的数据
    // data: [
    //  23, 30, 20, 23, 30, 26, 20, 25, 25
    // ] 
   },
   {
    name: 'rightData',
    type: 'line',
    yAxisIndex: 1,
    animation: true,
    symbol: 'none',
    areaStyle: {
     color: {
      type: 'linear',
      x: 0,
      y: 0,
      x2: 0,
      y2: 1,
      colorStops: [{
       offset: 0,
       color: '#FFC560' // 0% 处的颜色
      }, {
       offset: 1,
       color: 'rgba(255, 197, 96,0.3)' // 100% 处的颜色
      }],
      global: false, // 缺省为 false
     },
    },
    lineStyle: {
     width: 2
    },
    color: '#FFC560',
    data: rightData,//后台传过来的动态数据
    //设置固定的数据
    // data: [
    //  2, 1, 0.5, 0.9, 2, 1.0, 0.6, 2, 0.5
    // ]
   }]
 }
}

第三步:写在Page里的方法,(包括onLoad(),初始化)

/**
 * 页面的初始数据
 */
data: {
 ec: {
  lazyLoad: true //初始化加载
 }
},
onLoad: function (options) {
 let that = this;
 this.oneComponent = this.selectComponent('#mychart');
 let url = "xxxxx";
 let params = {
  "openId": options.id,
 };
wx.request({
  url: "xxxx",
  method: 'POST'
  data: params,
  header: header,
  success: (res) => {
   that.setData({
    leftData: xxx,//从后台获取的数据
    rightData: xxxx //从后台获取的数据
  });
  },
 //给图表加上数据
 that.initGraph(that.data.leftData, that.data.rightData)
 })
}

初始化图表

initGraph: function (leftData, rightData) {
 this.oneComponent.init((canvas, width, height) => {
  const chart = echarts.init(canvas, null, {
   width: width,
   height: height
  });
  initChart(chart, leftData, rightData);
  this.chart = chart;
  return chart;
 });
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
Mar 01 Javascript
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
Dec 27 Javascript
Javascript获取HTML静态页面参数传递值示例
Aug 18 Javascript
学习JavaScript设计模式(单例模式)
Nov 26 Javascript
基于JavaScript如何实现ajax调用后台定义的方法
Dec 29 Javascript
浅谈jQuery 选择器和dom操作
Jun 07 Javascript
jquery pagination分页插件使用详解(后台struts2)
Jan 22 Javascript
angularjs中ng-bind-html的用法总结
May 23 Javascript
值得收藏的vuejs安装教程
Nov 21 Javascript
vue-router动态设置页面title的实例讲解
Aug 30 Javascript
Node 搭建一个静态资源服务器的实现
May 20 Javascript
12 种使用Vue 的最佳做法
Mar 30 Javascript
JS回调函数深入理解
Oct 16 #Javascript
JS页面获取 session 值,作用域和闭包学习笔记
Oct 16 #Javascript
js实现图片跟随鼠标移动效果
Oct 16 #Javascript
vue实现鼠标经过动画
Oct 16 #Javascript
javascript实现动态时钟的启动和停止
Jul 29 #Javascript
JavaScript Canvas编写炫彩的网页时钟
Oct 16 #Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
Oct 16 #Javascript
You might like
php 函数中使用static的说明
2012/06/01 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
PHP接收json 并将接收数据插入数据库的实现代码
2015/12/01 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
getElementByIdx_x js自定义getElementById函数
2012/01/24 Javascript
jquery easyui滚动条部分设置介绍
2013/09/12 Javascript
使用jQuery重置(reset)表单的方法
2014/05/05 Javascript
jQuery实现鼠标滚轮动态改变样式或效果
2015/01/05 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
jQuery向webApi提交post json数据
2017/01/16 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
2018/01/23 Javascript
p5.js入门教程之平滑过渡(Easing)
2018/03/16 Javascript
vuejs简单验证码功能完整示例
2019/01/08 Javascript
JS FormData对象使用方法实例详解
2020/02/12 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
Python原始字符串(raw strings)用法实例
2014/10/13 Python
TensorFlow 实战之实现卷积神经网络的实例讲解
2018/02/26 Python
python 将日期戳(五位数时间)转换为标准时间
2019/07/11 Python
Python Pandas 如何shuffle(打乱)数据
2019/07/30 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
如何使用Python处理HDF格式数据及可视化问题
2020/06/24 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
Python中的None与 NULL(即空字符)的区别详解
2020/09/24 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
法国足球商店:Footcenter
2019/07/06 全球购物
公司中层干部的自我评价分享
2014/03/01 职场文书
中华魂演讲稿
2014/05/13 职场文书
离职证明标准格式
2014/09/15 职场文书
机械制造专业大学生自我鉴定
2014/09/19 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python