小程序中使用echarts

原文链接:https://www.jianshu.com/p/a2ab21bc7e9e

平时经常在web系统中使用折线图、柱状图、仪表盘等等等图表展示数据,在浏览器页面中我们为了方便经常使用echarts,官网教程也写的很清楚。

但是在微信小程序中我们同样有这种需求,那么如果直接用canvas,那么久太麻烦了,说不定一个折线图画一上午!,所有瞬间就会想到echarts等框架,但是echarts官网没有小程序版,不过!!!已经有人在github发布echarts的小程序版本了。。感谢大神分享。

首先,下载echarts微信版 地址:https://github.com/ecomfe/echarts-for-weixin

下载后打开,如图所示:

 

将下载好的文件中 ec-canvas目录 放在小程序项目目录中即可。如下图所示:

 

然后在需要的地方引入即可,下面就做一个折线图吧。

1.在页面开启使用echarts

如:在 page目录的ceshi页面中使用echarts的话,需要在ceshi.json中添加以下配置。

 

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

2.引入

在 ceshi.js 中引入echarts.js

 

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

3.wxml元素

在ceshi.wxml中建立一个元素,外层用view包一下是方便设置echarts元素的宽高。

 

  <view class="echart_panel">
    <ec-canvas></ec-canvas>
  </view>

4.开始编写图表 折线图

我是在ceshi.js中直接写了一个函数,传一些参数,返回一个option,至于echarts的option写法,可以参考echats官网api文档。

 

function getOption(xData, data_cur, data_his) {
  var option = {
    backgroundColor: "#f5f4f3",
    color: ["#37A2DA", "#f2960d", "#67E0E3", "#9FE6B8"],
    title: {
      text: '实时运行速度',
      textStyle: {
        fontWeight: '500',
        fontSize: 15,
        color: '#000'
      },
      x:'center',
      y:'0'
    },
    legend: {
      data: ['今日', '昨日'],
      right: 10
    },
    grid: {
      top: '15%',
      left: '1%',
      right: '3%',
      bottom: '60rpx',
      containLabel: true
    },
    tooltip: {
      show: true,
      trigger: 'axis'
    },
    xAxis: {
      type: 'category',
      boundaryGap: false,
      data: xData||[],
      axisLabel: {
        interval: 11,
        formatter: function (value, index) {
          return value.substring(0, 2) * 1;
        },
        textStyle: {
          fontsize: '10px'
        }
      }
    },
    yAxis: {
      x: 'center',
      name: 'km/h',
      type: 'value',
      min: 0,
      max: 120
    },
    series: [{
      name: '今日',
      zIndex:2,
      type: 'line',
      smooth: true,
      symbolSize: 0,
      data: data_cur||[]
    },{
        name: '昨日',
        zIndex: 1,
        type: 'line',
        smooth: true,
        symbolSize: 0,
        data: data_his||[]
    }]
  };
  return option;
}

然后就可以在 页面page中的data中配置初始化,如何初始化?

首先 建立一个全局变量(注意,放在page外面,要全局变量,不然你在页面加载之后,在动态修改图表数据的话,没法修改,这样方便点),

然后在data中初始化echats对象 ecLine,名字随便起,按照官方写法即可,onInit函数中参数有三个,canvas, width, height,这些都不需要管,直接初始化echats元素。复制粘贴即可。

 

let chartLine;
Page({
    data: {
        ecLine: {
            onInit: function (canvas, width, height){
                //初始化echarts元素,绑定到全局变量,方便更改数据
                chartLine = echarts.init(canvas, null, {
                    width: width,
                    height: height
                });
                canvas.setChart(chartLine);

                //可以先不setOption,等数据加载好后赋值,
                //不过那样没setOption前,echats元素是一片空白,体验不好,所有我先set。
                var xData = [1,2,3,4,5......];  // x轴数据 自己写
                var option = getOption(xData);
                chartLine.setOption(option);
            }
        }
    }
})

然后将建立的echats对象绑定到echarts元素中,如下:

 

<view class="echart_panel">
    <ec-canvas ec="{{ ecLine }}"></ec-canvas>
  </view>

 

然后就可以在数据加载后,给图表赋值option了,或者是重新setOption的数据。

 

//ajax请求好数据后,调用获取option函数,传一些数据,
//然后用全局变量echarts元素chartLine 来 setOption即可。
// 三个参数: x轴数据,第一条线数据,第二条数据。 随意,echarts就跟正常用随便写就行
// 随便写几个假数据
var xData=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23];
var data_cur=[55,67,66,78,55,67,66,78,55,67,66,78,55,67,66,78,55,67,66,78,65,66,65,54];
var data_his=[67,66,78,65,66,65,54,67,66,78,65,66,65,54,67,66,78,65,66,65,54,67,66,78];
// 方法一:
var option = getOption(xData, data_cur, data_his);
chartLine.setOption(option);
// 方法二:
//如果上面初始化时候,已经chartLine已经setOption了,
//那么建议不要重新setOption,官方推荐写法,重新赋数据即可。
chartLine.setOption({
    xAxis: {
        data: xData
    }, 
    series: [{
        data: data_cur
    }, {
        data: data_his
    }]
});

效果如下:

 

示例写的折线图,其他类型图表,可以参考echarts官网文档即可。

因为从github下载的echarts.js包含类型比较多,如果上传代码进行发布时,提示echarts文件过大,可以忽略。

或者是自己重新下载echarts定制需要的组件,如我就需要折线图,我就定制带折线图的即可。然后直接替换文件夹中的echarts.js即可。

下载定制echarts官网链接:http://echarts.baidu.com/builder.html

以上,结束。

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要在uni-app微信小程序使用echarts,需要进行以下步骤: 1. 在HBuilderX安装echarts插件,具体操作步骤为:在HBuilderX选择“工具”->“插件安装”,搜索“echarts”,选择“uniECharts”进行安装。 2. 在项目引入echarts组件,具体操作步骤为:在HBuilderX打开项目,选择“pages”目录,进入需要使用echarts的页面,右键点击该页面,选择“新建组件”->“uniECharts”,命名为“echarts”。 3. 在需要使用echarts的页面,引入echarts组件,具体操作步骤为:在需要使用echarts的页面的vue文件,添加以下代码: ```html <template> <view> <echarts :option="option" :canvas-id="'mychart'" :width="width" :height="height"></echarts> </view> </template> <script> import echarts from '@/components/echarts/echarts.vue'; export default { components: { echarts }, data() { return { option: { // echarts配置项 }, width: uni.getSystemInfoSync().windowWidth, height: uni.getSystemInfoSync().windowHeight } } } </script> ``` 4. 在需要使用echarts的页面,编写echarts的配置项,具体操作步骤为:在需要使用echarts的页面的vue文件的data,定义echarts的配置项,例如: ```javascript data() { return { option: { title: { text: '某站点用户访问来源', subtext: '纯属虚构', left: 'center' }, tooltip: { trigger: 'item', formatter: '{a} <br/>{b} : {c} ({d}%)' }, legend: { orient: 'vertical', left: 'left', data: ['直接访问', '邮件营销', '联盟广告', '视频广告', '搜索引擎'] }, series: [ { name: '访问来源', type: 'pie', radius: '55%', center: ['50%', '60%'], data: [ { value: 335, name: '直接访问' }, { value: 310, name: '邮件营销' }, { value: 234, name: '联盟广告' }, { value: 135, name: '视频广告' }, { value: 1548, name: '搜索引擎' } ], itemStyle: { emphasis: { shadowBlur: 10, shadowOffsetX: 0, shadowColor: 'rgba(0, 0, 0, 0.5)' } } } ] }, width: uni.getSystemInfoSync().windowWidth, height: uni.getSystemInfoSync().windowHeight } } ``` 5. 在需要使用echarts的页面,调用echarts组件的方法,具体操作步骤为:在需要使用echarts的页面的vue文件的methods,定义调用echarts组件的方法,例如: ```javascript methods: { initChart() { this.$nextTick(() => { const chart = this.$refs.echarts.init((canvas, width, height) => { // 获取echarts实例 const echartInstance = echarts.init(canvas, null, { width: width, height: height }); // 设置echarts实例的配置项 echartInstance.setOption(this.option); // 将echarts实例返回 return echartInstance; }); }); } } ``` 6. 在需要使用echarts的页面,调用echarts组件的方法,例如: ```javascript onLoad() { this.initChart(); } ``` 通过以上步骤,就可以在uni-app微信小程序使用echarts了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值