小程序里面如何使用echarts


 

 

https://gitcode.net/mirrors/ecomfe/echarts-for-weixin?utm_source=csdn_github_accelerator (具體官網鏈接)

 

https://echarts.apache.org/zh/builder.html(在線定制鏈接)

 

 

微信小程序使用echarts,實現左右雙Y軸,動態獲取數據,生成折線圖

本來使用的是wxcharts,但發現實現不了左右雙y軸的效果,就換成echarts

要實現這樣的效果,需要以下幾步:

(1)去github下載插件,放進自己的項目里

只需要將名稱是ec-canvas的文件夾放進自己項目里。

像這樣:

 

 (2)分別寫小程序的四個文件

1 echart.json
2 {
3  "usingComponents": {
4   "ec-canvas": "../../ec-canvas/ec-canvas"
5  }
6 }

 

 

1 <!--echart.wxml-->
2 <view class="container">
3    <ec-canvas id="myechart" canvas-id="graph" ec="{{ ec }}"></ec-canvas>
4 </view>

1 echart.wxss
2 .container{
3  margin: 0;
4  padding: 0
5 }

 

 

 

echart.js

這里分步寫:

第一步:導入 echarts 插件

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

第二步:寫在Page外的方法

  1 function echart(chart, leftData, rightData) {//leftData是坐標系左邊y軸,rightData是右邊y軸
  2  var option = {
  3   //網格
  4   grid: {
  5    bottom: 80,
  6    show: true,
  7    // containLabel: true
  8   },
  9   //圖例
 10   legend: {
 11    data: [{
 12      name: 'leftData',
 13      textStyle: { //設置顏色
 14       color: '#6076FF',
 15       fontSize: '14',
 16      }
 17     },
 18     {
 19      name: 'rightData',
 20      textStyle: {
 21       color: '#FFC560',
 22       fontSize: '14',
 23      }
 24     }
 25    ],
 26    x: 'left',
 27    bottom: 15,
 28    left: 30
 29   },
 30   //x軸
 31   xAxis: {
 32    type: 'category',
 33    boundaryGap: false,
 34    disableGrid: true, //繪制X網格
 35    data: ['', '', '', '', '', '', '', '', ''],
 36    splitLine: {
 37     show: true,
 38     // 改變軸線顏色
 39     lineStyle: {
 40      // 使用深淺的間隔色
 41      color: ['#DDDDDD']
 42     }
 43    },
 44    //去掉刻度
 45    axisTick: {
 46     show: false
 47    },
 48    //去掉x軸線
 49    axisLine: {
 50     show: false
 51    },
 52   },
 53   //y軸
 54   yAxis: [{
 55     name: 'mph',
 56     type: 'value',
 57     min: 0,
 58     // max: 40,
 59     //y標軸名稱的文字樣式
 60     nameTextStyle: {
 61      color: '#FFC560'
 62     },
 63     //網格線
 64     splitLine: {
 65      show: true,
 66      lineStyle: {
 67       color: ['#DDDDDD']
 68      }
 69     },
 70     //去掉刻度
 71     axisTick: {
 72      show: false
 73     },
 74     //去掉y軸線
 75     axisLine: {
 76      show: false
 77     },
 78    },
 79    {
 80     name: 'g',
 81     type: 'value',
 82     // max: 4,
 83     min: 0,
 84     nameTextStyle: {
 85      color: '#6076FF'
 86     },
 87     //去掉刻度
 88     axisTick: {
 89      show: false
 90     },
 91     //去掉y軸線
 92     axisLine: {
 93      show: false
 94     },
 95 
 96    }
 97   ],
 98 
 99   series: [{
100     name: 'leftData',
101     type: 'line',
102     animation: true, //動畫效果
103     symbol: 'none',
104     //折線區域
105     areaStyle: {
106      //漸變顏色
107      color: {
108       type: 'linear',
109       x: 0,
110       y: 0,
111       x2: 0,
112       y2: 1,
113       colorStops: [{
114        offset: 0,
115        color: '#6076FF' // 0% 處的顏色
116       }, {
117        offset: 1,
118        color: 'rgba(96,118,255,0.1)' // 100% 處的顏色
119       }],
120       global: false, // 缺省為 false
121      },
122     },
123     //折線寬度
124     lineStyle: {
125      width: 2
126     },
127     color: '#6076FF',
128     data: leftData // 后台傳過來的動態數據
129     //設置固定的數據
130     // data: [
131     //  23, 30, 20, 23, 30, 26, 20, 25, 25
132     // ] 
133    },
134    {
135     name: 'rightData',
136     type: 'line',
137     yAxisIndex: 1,
138     animation: true,
139     symbol: 'none',
140     areaStyle: {
141      color: {
142       type: 'linear',
143       x: 0,
144       y: 0,
145       x2: 0,
146       y2: 1,
147       colorStops: [{
148        offset: 0,
149        color: '#FFC560' // 0% 處的顏色
150       }, {
151        offset: 1,
152        color: 'rgba(255, 197, 96,0.3)' // 100% 處的顏色
153       }],
154       global: false, // 缺省為 false
155      },
156     },
157     lineStyle: {
158      width: 2
159     },
160     color: '#FFC560',
161     data: rightData,//后台傳過來的動態數據
162     //設置固定的數據
163     // data: [
164     //  2, 1, 0.5, 0.9, 2, 1.0, 0.6, 2, 0.5
165     // ]
166    }]
167  }
168 }

 

 第三步:寫在Page里的方法,(包括onLoad(),初始化)

 1 /**
 2  * 頁面的初始數據
 3  */
 4 data: {
 5  ec: {
 6   lazyLoad: true //初始化加載
 7  }
 8 },
 9 onLoad: function (options) {
10  let that = this;
11  this.oneComponent = this.selectComponent('#mychart');
12  let url = "xxxxx";
13  let params = {
14   "openId": options.id,
15  };
16 wx.request({
17   url: "xxxx",
18   method: 'POST'
19   data: params,
20   header: header,
21   success: (res) => {
22    that.setData({
23     leftData: xxx,//從后台獲取的數據
24     rightData: xxxx //從后台獲取的數據
25   });
26   },
27  //給圖表加上數據
28  that.initGraph(that.data.leftData, that.data.rightData)
29  })
30 }

 

初始化圖表

 1 initGraph: function (leftData, rightData) {
 2  this.oneComponent.init((canvas, width, height) => {
 3   const chart = echarts.init(canvas, null, {
 4    width: width,
 5    height: height
 6   });
 7   initChart(chart, leftData, rightData);
 8   this.chart = chart;
 9   return chart;
10  });
11 }

 

 發包時記得壓縮,不然會很大,就這一個都這么大

 

  <ec-canvas id="mychart-dom-line" canvas-id="mychart-line" ec="{{ ec }}" force-use-old-canvas="true"></ec-canvas>    添加這個force-use-old-canvas="true",在pc端調試時可以讓圖表隨屏幕滾動。在真機調試時也要加上這個,否則會報錯。在發布上線時把這個去掉,影響滑動圖表失真
 
 
真機運行問題,canvans層級過高,影響彈出框,在彈出框上面了,一種解決方式;https://developers.weixin.qq.com/miniprogram/dev/component/cover-view.html

 

 

 

 

顯然這種方式不太好

 

 https://blog.csdn.net/liya_nan/article/details/82023761

 

小程序手指滑入事件

https://github.com/qbright/wx-touch-event

小程序通過npm安裝插件

https://www.cnblogs.com/rui-yang/p/12374040.html


 

 

 


免責聲明!

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



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