微信小程序使用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脚本学习 比较实用的基础
Sep 07 Javascript
jQuery删除节点的三个方法即remove()detach()和empty()
Dec 27 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
Apr 02 Javascript
js创建jsonArray传输至后台及后台全面解析
Apr 11 Javascript
基于JavaScript代码实现自动生成表格
Jun 15 Javascript
jQuery拖拽通过八个点改变div大小
Nov 29 Javascript
javascript内存分配原理实例分析
Apr 10 Javascript
JavaScript的setter与getter方法
Nov 29 Javascript
ionic2中使用自动生成器的方法
Mar 04 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
vue基础之data存储数据及v-for循环用法示例
Mar 08 Javascript
JavaScript组合设计模式--改进引入案例分析
May 23 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
基于initPHP的框架介绍
2013/04/18 PHP
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
PHP goto语句简介和使用实例
2014/03/11 PHP
php的SimpleXML方法读写XML接口文件实例解析
2014/06/16 PHP
php生出随机字符串
2017/07/06 PHP
LNMP部署laravel以及xhprof安装使用教程
2017/09/14 PHP
php curl获取到json对象并转成数组array的方法
2018/05/31 PHP
PHP基础之输出缓冲区基本概念、原理分析
2019/06/19 PHP
ThinkPHP 5.1 跨域配置方法
2019/10/11 PHP
网页中实现浏览器的最大,最小化和关闭按钮
2007/03/12 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
Hallo.js基于jQuery UI所见即所得的Web编辑器
2016/01/26 Javascript
JavaScript手机振动API
2016/06/11 Javascript
全面解析标签页的切换方式
2016/08/21 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
简单了解vue.js数组的常用操作
2019/06/17 Javascript
layui监听工具栏的实例(操作列表按钮)
2019/09/10 Javascript
从表单校验看JavaScript策略模式的使用详解
2020/10/17 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
Python的另外几种语言实现
2015/01/29 Python
python实现向ppt文件里插入新幻灯片页面的方法
2015/04/28 Python
Python中的with语句与上下文管理器学习总结
2016/06/28 Python
python实现Windows电脑定时关机
2018/06/20 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
企业项目策划书
2014/01/11 职场文书
小学生暑假感言
2014/02/06 职场文书
致800米运动员广播稿
2014/02/16 职场文书
大学生优秀班干部事迹材料
2014/05/26 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
离婚协议书范本
2015/01/26 职场文书
二婚主持词
2015/06/30 职场文书