微信小程序使用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 相关文章推荐
JavaScript的eval JSON object问题
Nov 15 Javascript
jquery中的$(document).ready()与window.onload的区别
Nov 18 Javascript
JavaScript Event事件学习第一章 Event介绍
Feb 07 Javascript
Ajax 数据请求的简单分析
Apr 05 Javascript
jQuery$命名冲突怎么办如何解决
Jan 16 Javascript
JavaScript作用域链示例分享
May 27 Javascript
ExpressJS入门实例
Jan 14 Javascript
基于bootstrap风格的弹框插件
Dec 28 Javascript
详解JavaScript对象的深浅复制
Mar 30 Javascript
JavaScript中变量提升机制示例详解
Dec 27 Javascript
vue组件传值的实现方式小结【三种方式】
Feb 05 Javascript
vue选项卡切换的实现案例
Apr 11 Vue.js
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新手上路(十三)
2006/10/09 PHP
main.php
2006/12/09 PHP
php在线代理转向代码
2012/05/05 PHP
解析PHP中VC6 X86和VC9 X86的区别及 Non Thread Safe的意思
2013/06/28 PHP
php实现的网络相册图片防盗链完美破解方法
2015/07/01 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
PHP使用微信开发模式实现搜索已发送图文及匹配关键字回复的方法
2017/09/13 PHP
PHP 8新特性简介
2020/08/18 PHP
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
jQuery图片预加载 等比缩放实现代码
2011/10/04 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
详解Vue.js入门环境搭建
2017/03/17 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
Three.js基础学习之场景对象
2017/09/27 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
详解Node 定时器
2018/02/26 Javascript
JS/jQuery实现简单的开关灯效果【案例】
2019/02/19 jQuery
详解vue中axios的使用与封装
2019/03/20 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
layui table动态表头 改变表格头部 重新加载表格的方法
2019/09/21 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
javascript实现京东登录显示隐藏密码
2020/08/02 Javascript
Python3搜索及替换文件中文本的方法
2015/05/22 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
浅谈python函数之作用域(python3.5)
2017/10/27 Python
python机器学习之神经网络(一)
2017/12/20 Python
tornado 多进程模式解析
2018/01/15 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
matplotlib更改窗口图标的方法示例
2021/02/03 Python
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
实习生求职自荐信
2014/02/07 职场文书
安全责任协议书
2014/04/21 职场文书
2015年校本培训工作总结
2015/07/24 职场文书