在微信小程序中使用 echarts 图片-例 折线图

首先进入echarts官方[https://echarts.apache.org/handbook/zh/get-started/]。这边只需要在小程序中简单应用一下echarts折线图 所以不需要把整体下载下来,这边只需要下载几个简单的东西下来即可!
1. 在小程序中新建一个组件,如下

2. 建好文件之后还不着急写代码,看到我上面的图里面不是还有两个文件文件吗?咱先把资源文件给干下来再说
继续到echarts官网中 往下翻找到 应用篇 看到下面的跨平台方案-微信小程序

这边会告诉你 需要去github上 把对应的组件以及依赖复制过来,包括上面的第一张图里所有的文件 我们直接复制过来,将它覆盖;

然后再界面上引用就好了 等到你把所有代码搞定之后 你可以点击一下上传 好家伙 系统直接提示你

[JS 文件编译错误] 以下文件体积超过 500KB,已跳过压缩以及 ES6 转 ES5 的处理。
componet/LineChart/echarts.js


这个问题好解决 回到echarts官网 咱们针对小程序端定制下载一个echarts.js文件即可


等了几分钟之后呢 你会发现下载下来的文件叫做echarts.min.js,把名字中的min去掉直接改成 然后拖到文件夹中覆盖一下即可;
完成的代码呢 就不放了 大概的操作流程已经再上面了 就不献丑了

实现效果

后面还有几点注意一下
在界面中引用的我补充一下
1.确保你的需要引用的界面json文件里 把你要引入的组件对象定义了一次

2.然后界面上就是一行简单的使用
<ec-canvas id="mychart-dom-line" canvas-id="mychart-line" ec="{{ ec }}" bind:init="echartInit"></ec-canvas>
这里的ec 一定要跟js中的ec对应 不然必报错

3.js文件中呢
浅引用一下组件资源文件
import * as echarts from '../../componet/LineChart/echarts'; -后面引用部分的echarts不能出错
我这里用到的地方呢 是先通过异步请求加载数据(放在onload中),然后在折线图组件初始化时 再把数据添加进去 这边需求问题啦 就不细细讨论了

不过 初始化 总是不能少的

var chart = null;
// echart 图标初始化
function initChart(canvas, width, height, option) {
  chart = echarts.init(canvas, null, {
    width: width,
    height: height
  });
  canvas.setChart(chart);

  var option = option;
  chart.setOption(option);
  return chart;
}

在异步请求数据后 把对应的列表值传入其中,像这样

option中的参数以及其代表的含义 请自行百度,比较重要的是 series xAxis yAxis
作用分别是渲染 折线 | X轴 | Y轴 数据 用用就知道啦

当然这不是一步两步的问题阿 只是中间个别细节是需要注意一下
然后总结一下 在js中的应用流程
首先 在onload中初始化折线图表

然后是initChart() 赋值

这边我是写在了Page的同级的地方

初始化完成之后呢 咱再将异步请求后的数据放进去

主要的东西是再series

😑2022年3月22日-Distance

之前的是模仿官方的用法 我引入后的组件又进行了一定的优化 如下:
1.首先展示一下 优化后的样式:

2.其次 代码流程我借鉴的几个帖子 做了相应修改;但是前面的组件内代码以及引入方式 我没有动

首先是wxml界面
<ec-canvas id="mychart-dom-line" canvas-id="mychart-line" ec="{{ firstChart }}"></ec-canvas>
这里的 ec 注意一定要与js里data里的数据对应

然后是js代码
在page之外 首先初始化定义两个对象

import * as echarts from '../../componet/LineChart/echarts';

const echartList = [];  //折线图对象
var chartData= null;  // 折线图里的数据对象

Page({
  data: {

  firstChart: {
          //  初始化折线图数据
            onInit: function (canvas, width, height) {
              chartData= echarts.init(canvas, null, {
                width: width,
                height: height
              });
              canvas.setChart(chartData);
              return chartData;
            }
         },
  },
      onLoad: function (options) {
            this.getData();
      },
      getData: function () {
          // 在这边加载异步数据 功能业务暂时不贴  返回一个data
          var ydata = data.ydata;  // Y轴 数据
          var xdata = data.xdata;  // X轴 数据
          var option01 = {
                          legend: {
                            data: ['第一列数据名字',....],
                            top: 2,  // 距离顶部距离
                            left: 'center',  // 标注内容位置
                            backgroundColor: '#FAFAFA',
                            z: 100
                          },
                          grid: {
                            containLabel: true
                          },
                          tooltip: {
                            // show: true,
                            trigger: 'axis'  //  点击气泡提示悬浮数据内容
                          },
                          xAxis: {
                            type: 'category',
                            boundaryGap: false,
                            data: xdata
                          },
                          yAxis: {
                            x: 'center',
                            type: 'value',
                            splitLine: {
                              lineStyle: {
                                type: 'dashed'
                              }
                            }
                          },
                          series: [{
                            name: 'cages',
                            type: 'line',
                            smooth: true,
                            data: ydata,
                            label: {  // 每一个点上的数据提示
                              normal: {  
                                show: true,  // 展示
                                position: 'right',  //   文字位置
                                formatter: '{c}U/ml',  // 文字内容
                                textStyle: {  // 文字样式
                                  color: 'blue',
                                  fontSize: '10'
                                }
                              }
                            }
                          },
                           // 同上 在legend中data写了多少条数据 这边就要写多
                          {........},
                          {.......},
          }
          chartData.setOption(option01, true);
      },
})

最后 运行即可
界面样式 就用一个view把canvas包裹起来就好了 ,然后 注意一点 setOption 那里 一定要对应名字!
🙄 2022.03.24

posted @ 2022-03-22 15:21  派大星⊙∫⊙  阅读(1660)  评论(0编辑  收藏  举报