ECharts在小程序中的基本应用

2018-07-05  本文已影响175人  HotCatLx

1. 前言

2. 参考

  1. 在微信小程序中使用 ECharts
  2. repo:echarts-for-weixin
  1. ECharts配置项

3.效果图

earningsDay.png earningsWeek.png

4.导入js库到项目中

5.具体使用

5.1 json文件
{
    "navigationBarTitleText": "我的收益",
    "enablePullDownRefresh": false,
    "usingComponents": {
      "ec-canvas": "../../../ec-canvas/ec-canvas"
    }
}
路径一定要对.png
5.2 wxml文件
  <view class="ecContainer" style="background-image:url('https://items-1255492638.cos.ap-guangzhou.myqcloud.com/805faf3070e04cb6992cf7f3fda23c4a.png'); background-size:cover">
    <ec-canvas id="mychart-dom-line" canvas-id="mychart-bar" ec="{{ec}}"></ec-canvas>
  </view>

5. 3 wxss文件
.ecContainer{
display: flex;
flex-direction: column;
box-sizing: border-box;
background-color: "#F8FAFC";
height: 310px;
width:100%;
margin: 0 auto;
}

ec-canvas {
width: 100%;
height: 310px;
background-color: "#F8FAFC"
}

5. 4 js文件
import *as echarts from "../../../ec-canvas/echarts" //echarts的js库的路径
var network = require("../../../utils/network.js")  //处理网络请求
var api = require("../../../utils/api.js")  //负责API的js
//存放初始数据,因为初始化方法不能给page中data赋值,所以设置了个全局的数组存放数据
var dayArry = [0, 0, 0, 0, 0,0,0];
var chart;


function initChart(canvas, width, height) {

  chart = echarts.init(canvas, null, {
    width: width,
    height: height
  });

  canvas.setChart(chart);

//请求相关数据
  network.requestLoading(api.totalEarnings, "", "GET", '', function (res) {
    dayArry =  res.data.info.dayData
    var option = {

      // 为图表设置标题,项目中不需要,隐藏
      // title: {
      //   text: 'ECharts Demo'
      // },

      // 一般是在柱图和饼图中使用,
      // legend: {
      //     data: ['收益']
      // },

      // 小程序的tooltip并没有显示功能,只有一点缩放动画
      tooltip: {
        show: true,
        trigger: 'axis', //折线图trigger需要设置为axis
      },

     // x轴相关设置
        xAxis: {
        splitLine: { show: false },//去除网格线
        splitArea: { show: false },//保留网格区域
        data: xAxis,
        show: true,  //隐藏x轴,
        axisLine:{
          show:true,//是否显示轴线
          lineStyle:{
            color:"#777777",
            width:0 //x州的宽度
          }
        },
        axisTick:{
          show:false, //x轴的轴线是否显示
        }
      },

     // y轴相关设置
      yAxis: {
        splitLine: { show: false },//去除网格线
        type: 'value', 
        splitArea: { show: false },//保留网格区域
        show: false//隐藏y轴
      },

      series: [
        {
          name: '收益',
          type: 'line',   //设置为折线图,也可以设置bar pie 等等类型
          smooth: true, //设置为smooth line 
          data: dayArry, //数据源

          symbol: 'circle',     //设定为实心点
          symbolSize: 10,   //设定实心点的大小

          //折线拐点标志的样式
          itemStyle: {
            normal: {
              color: "#FF1F62",
              borderColor: "#F8FAFC",
              borderWidth: 3,
              shadowColor: "#FCDEE8",
              shadowOffsetY: 1
            }
          },

          //折线相关属性设置
          lineStyle: {
            color: '#FF1F62',
            width: 4
          },

          //设置数据点上方的提示label
          label: {
            show: true,
            position: 'top',
            distance: 10,

          //label  - formatter
            formatter: function (params) {
              let data = params.value
              let dataStr = "收益" + data + "元"
              return dataStr
            },
            backgroundColor: '#FFFFFF',
            textStyle: {
              color: '#FF1F62',
              fontSize: '11'
            },
            shadowOffsetY: 2,
            shadowColor: "#F8ECF3",
            borderColor: "#F8ECF3",
            borderWidth: 1,
          }

        },
      ]
    };

  //相关设置set方法调用
    chart.setOption(option);
  }, function () {
  })



  chart.on('click', (params) => {

  });

  return chart;
}
  /**
   * 切换日期方法
   */
  clickData: function (e) {
    this.setData({
      selectedTitle: e.currentTarget.id 
    });

    //更新echart数据
   // chart为我设置的全局属性,方便拿到这个chart


   //可以打印下option,可以看到很多属性可以设置
    var option = chart.getOption();

    if (e.currentTarget.id == 1) {
      //因为是折线图,所以   option.series[0].data 数据源只有一个

      option.series[0].data = this.data.weekData
    } else if (e.currentTarget.id == 2) {
      option.series[0].data = this.data.monthData
    } else if (e.currentTarget.id == 3) {
      option.series[0].data = this.data.yearData
    } else if (e.currentTarget.id == 0) {
      option.series[0].data = this.data.dayData
    }

    //chart更新option设置,即可实现更新数据源,也可以做很多操作,切换颜色等等

    chart.setOption(option);    
  },

6.END

上一篇 下一篇

猜你喜欢

热点阅读