微信小程序使用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 相关文章推荐
飞鱼(shqlsl) javascript作品集
Dec 16 Javascript
单独使用CKFinder选择图片的方法
Aug 21 Javascript
javascript笔记 String类replace函数的一些事
Sep 22 Javascript
jquery二级导航内容均分的原理及实现
Aug 13 Javascript
js 弹出框只弹一次(二次修改之后的)
Nov 26 Javascript
js与jQuery 获取父窗、子窗的iframe
Dec 20 Javascript
javascript实现的图片切割多块效果实例
May 07 Javascript
简单实现限制uploadify上传个数
Nov 16 Javascript
浅谈javascript中执行环境(作用域)与作用域链
Dec 08 Javascript
Angular4实现鼠标悬停3d倾斜效果
Oct 25 Javascript
微信小程序如何连接Java后台
Aug 08 Javascript
JS常见错误(Error)及处理方案详解
Jul 02 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
DOTA2 无惧惊涛骇浪 昆卡大型水友攻略
2020/04/20 DOTA
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
jQuery实现自定义下拉列表
2015/01/05 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
JavaScript笛卡尔积超简单实现算法示例
2018/07/30 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
Flexible.js可伸缩布局实现方法详解
2020/11/13 Javascript
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
python通过函数属性实现全局变量的方法
2015/05/16 Python
分享Python文本生成二维码实例
2016/01/06 Python
python中利用await关键字如何等待Future对象完成详解
2017/09/07 Python
Python中enumerate函数代码解析
2017/10/31 Python
使用python编写简单的小程序编译成exe跑在win10上
2018/01/15 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
python实现桌面气泡提示功能
2019/07/29 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
浅谈Python中的字符串
2020/06/10 Python
解决Keras中CNN输入维度报错问题
2020/06/29 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
五一服装活动方案
2014/01/11 职场文书
清洁工岗位职责
2014/01/29 职场文书
活动倡议书范文
2014/05/13 职场文书
教师职位说明书
2014/07/29 职场文书
2014年团委工作总结
2014/11/13 职场文书
道歉的话怎么说
2015/05/12 职场文书
预备党员表决心的话
2015/09/22 职场文书
sass 常用备忘案例详解
2021/09/15 HTML / CSS
JavaScript函数柯里化
2021/11/07 Javascript
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
2022/04/04 Python