在微信小程序中使用 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM