小程序使用echarts

**小程序使用echarts**

最近接到一个小程序项目,里面有图表之类的功能,自然而然的就想到了echarts。

为了兼容小程序 Canvas,官方提供了一个小程序的组件,用这种方式可以方便地使用 ECharts。

首先,下载 GitHub 上的 ecomfe/echarts-for-weixin 项目。

其中,ec-canvas 是我们提供的组件,其他文件是如何使用该组件的示例。

ec-canvas 目录下有一个 echarts.js,默认我们会在每次 echarts-for-weixin 项目发版的时候替换成最新版的 ECharts。如有必要,可以自行从 ECharts 项目中下载最新发布版,或者从官网自定义构建以减小文件大小。

下面是引用后的项目结构

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200507111326488.png)

我要在pages/index/index中使用,那么就先在index.js中引用,import * as echarts from '../../ec-canvas/echarts';(这是我项目的引用路径,根据自己项目做修改)

下面方法写在Page外,这样更新数据才能及时响应,数据暂时是假数据,请求接口数据直接在方法内请求即可(下面方法一个为折线图,一个为饼图),在小程序中使用与在web中使用没有太大区别

```javascript

var xData = ["1:00", "2:00", "3:00", "4:00", "5:00", "6:00", "7:00", "8:00", "9:00", "10:00", "11:00", "12:00", "13:00", "14:00", "15:00"],

yData = [100,250,360,585,458,985,652,154,265],

chart,

charts,

pc=180,

mobile=132;

function initChart(canvas, width, height) {

  for(var i=0;i<15;i++){

    yData[i]=Math.ceil(Math.random()*1000);

  }

  chart = echarts.init(canvas, null, {

    width: width,

    height: height

  });

  canvas.setChart(chart);

  var option = {

    color: ["#37A2DA"],

    xAxis: {

      type: 'category',

      boundaryGap: false,

      data: xData,

    },

    yAxis: {

      x: 'center',

      type: 'value'

    },

    series: [{

      type: 'line',

      smooth: true,

      data: yData

    }]

  };

  chart.setOption(option);

  return chart;

}

function initCharts(canvas, width, height) {

  charts = echarts.init(canvas, null, {

    width: width,

    height: height

  });

  canvas.setChart(charts);

  var options = {

    color: ["#3498DB", "#E062AE"],

    tooltip: {

      trigger: 'item',

      formatter: "{a} {b}: {c} ({d}%)"

    },

    grid: {

      left: 20,

      right: 20,

      bottom: 15,

      top: 40,

      containLabel: true

    },

    color: ['#ff7f50','#87cefa','#da70d6','#32cd32','#6495ed',

        '#ff69b4','#ba55d3','#cd5c5c','#ffa500','#40e0d0',

        '#1e90ff','#ff6347','#7b68ee','#00fa9a','#ffd700',

        '#6699FF','#ff6666','#3cb371','#b8860b','#30e0e0'],

  //  visualMap: {

  //    show: false,

  //    min: 80,

  //    max: 600,

  //    color: ["#3498DB", "#E062AE","#333","#658","#999","#000","#345689","#125686","#145689","#157856","#854655","#456895","#658"],

  //    inRange: {

  //        colorLightness: [0, 1]

  //    }

  // },

    series: [

      {

        type: 'pie',

        radius: '65%',

        center: ['50%', '50%'],

        label: {

          normal: {

            show: true,

            position: 'outside',

            formatter: '{b}:{c}'

          },

          emphasis: {

            show: true,

            textStyle: {

              fontSize: '14',

              fontWeight: 'bold'

            }

          }

        },

        data: [

          { value: 120, name: "移动端" },

          { value: 154, name:"PC端"},

          { value: 55, name: "移动端1" },

          { value: 78, name:"PC端1"},

          { value: 63, name: "移动端2" },

          { value: 48, name:"PC端2"},

          { value: 96, name: "移动端3" },

          { value: 14, name:"PC端3"}

        ].sort(function (a, b) { return a.value - b.value; }),

        roseType: 'radius',

            label: {

              color: 'rgba(0, 0, 0, 1)'

            },

            labelLine: {

                lineStyle: {

                    color: 'rgba(0, 0, 0, 1)'

                },

                smooth: 0.2,

                length: 5,

                length2: 20

            },

            itemStyle: {

                shadowBlur: 200,

                shadowColor: 'rgba(0, 0, 0, 0.5)'

            },

            animationType: 'scale',

            animationEasing: 'elasticOut',

            animationDelay: function (idx) {

                return Math.random() * 200;

            }

      }

    ]

  };

  charts.setOption(options);

  return charts;

}

```

方法完成后需要声明在Page/data中

```javascript

data: {

    // motto: 'Hello World',

    // userInfo: {},

    // hasUserInfo: false,

    // canIUse: wx.canIUse('button.open-type.getUserInfo'),

    ec: {

      onInit: initChart

    },

    ecs: {

      onInit: initCharts

    }

  },

```

之后在index.wxml中挂载即可

```javascript

<view class="pi">

<ec-canvas id="mychart-dom-line" canvas-id="mychart-bar" ec="{{ ec }}" ></ec-canvas>

<ec-canvas id="mychart-dom-line" canvas-id="mychart-bar" ec="{{ ecs }}" ></ec-canvas>

</view>

```

ECharts的方法在小程序中使用与外部使用没有明显差别,希望能够帮到大家,有什么不对的欢迎讨论!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343