微信小程序使用echarts獲取數(shù)據(jù)并生成折線圖
微信小程序使用echarts,實(shí)現(xiàn)左右雙Y軸,動(dòng)態(tài)獲取數(shù)據(jù),生成折線圖
本來(lái)使用的是wxcharts,但發(fā)現(xiàn)實(shí)現(xiàn)不了左右雙y軸的效果,就換成echarts
要實(shí)現(xiàn)這樣的效果,需要以下幾步:
(1)去github下載插件,放進(jìn)自己的項(xiàng)目里
只需要將名稱是ec-canvas的文件夾放進(jìn)自己項(xiàng)目里。
像這樣:
(2)分別寫小程序的四個(gè)文件
①
echart.json { "usingComponents": { "ec-canvas": "../../ec-canvas/ec-canvas" } }
②
<!--echart.wxml--> <view class="container"> <ec-canvas id="myechart" canvas-id="graph" ec="{{ ec }}"></ec-canvas> </view>
③
echart.wxss .container{ margin: 0; padding: 0 }
④
echart.js
這里分步寫:
第一步:導(dǎo)入 echarts 插件
import * as echarts from '../../ec-canvas/echarts';
第二步:寫在Page外的方法
function echart(chart, leftData, rightData) {//leftData是坐標(biāo)系左邊y軸,rightData是右邊y軸 var option = { //網(wǎng)格 grid: { bottom: 80, show: true, // containLabel: true }, //圖例 legend: { data: [{ name: 'leftData', textStyle: { //設(shè)置顏色 color: '#6076FF', fontSize: '14', } }, { name: 'rightData', textStyle: { color: '#FFC560', fontSize: '14', } } ], x: 'left', bottom: 15, left: 30 }, //x軸 xAxis: { type: 'category', boundaryGap: false, disableGrid: true, //繪制X網(wǎng)格 data: ['', '', '', '', '', '', '', '', ''], splitLine: { show: true, // 改變軸線顏色 lineStyle: { // 使用深淺的間隔色 color: ['#DDDDDD'] } }, //去掉刻度 axisTick: { show: false }, //去掉x軸線 axisLine: { show: false }, }, //y軸 yAxis: [{ name: 'mph', type: 'value', min: 0, // max: 40, //y標(biāo)軸名稱的文字樣式 nameTextStyle: { color: '#FFC560' }, //網(wǎng)格線 splitLine: { show: true, lineStyle: { color: ['#DDDDDD'] } }, //去掉刻度 axisTick: { show: false }, //去掉y軸線 axisLine: { show: false }, }, { name: 'g', type: 'value', // max: 4, min: 0, nameTextStyle: { color: '#6076FF' }, //去掉刻度 axisTick: { show: false }, //去掉y軸線 axisLine: { show: false }, } ], series: [{ name: 'leftData', type: 'line', animation: true, //動(dòng)畫效果 symbol: 'none', //折線區(qū)域 areaStyle: { //漸變顏色 color: { type: 'linear', x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: '#6076FF' // 0% 處的顏色 }, { offset: 1, color: 'rgba(96,118,255,0.1)' // 100% 處的顏色 }], global: false, // 缺省為 false }, }, //折線寬度 lineStyle: { width: 2 }, color: '#6076FF', data: leftData // 后臺(tái)傳過(guò)來(lái)的動(dòng)態(tài)數(shù)據(jù) //設(shè)置固定的數(shù)據(jù) // data: [ // 23, 30, 20, 23, 30, 26, 20, 25, 25 // ] }, { name: 'rightData', type: 'line', yAxisIndex: 1, animation: true, symbol: 'none', areaStyle: { color: { type: 'linear', x: 0, y: 0, x2: 0, y2: 1, colorStops: [{ offset: 0, color: '#FFC560' // 0% 處的顏色 }, { offset: 1, color: 'rgba(255, 197, 96,0.3)' // 100% 處的顏色 }], global: false, // 缺省為 false }, }, lineStyle: { width: 2 }, color: '#FFC560', data: rightData,//后臺(tái)傳過(guò)來(lái)的動(dòng)態(tài)數(shù)據(jù) //設(shè)置固定的數(shù)據(jù) // data: [ // 2, 1, 0.5, 0.9, 2, 1.0, 0.6, 2, 0.5 // ] }] } }
第三步:寫在Page里的方法,(包括onLoad(),初始化)
/** * 頁(yè)面的初始數(shù)據(jù) */ data: { ec: { lazyLoad: true //初始化加載 } }, onLoad: function (options) { let that = this; this.oneComponent = this.selectComponent('#mychart'); let url = "xxxxx"; let params = { "openId": options.id, }; wx.request({ url: "xxxx", method: 'POST' data: params, header: header, success: (res) => { that.setData({ leftData: xxx,//從后臺(tái)獲取的數(shù)據(jù) rightData: xxxx //從后臺(tái)獲取的數(shù)據(jù) }); }, //給圖表加上數(shù)據(jù) that.initGraph(that.data.leftData, that.data.rightData) }) }
初始化圖表
initGraph: function (leftData, rightData) { this.oneComponent.init((canvas, width, height) => { const chart = echarts.init(canvas, null, { width: width, height: height }); initChart(chart, leftData, rightData); this.chart = chart; return chart; }); }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
js獲取當(dāng)前年月日詳細(xì)教程(看這一篇就夠了)
這篇文章主要給大家介紹了關(guān)于js獲取當(dāng)前年月日的相關(guān)資料,JavaScript內(nèi)置的Date對(duì)象是獲取當(dāng)前日期最常用的工具之一,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12JavaScript 中判斷變量是否為數(shù)字的示例代碼
這篇文章主要介紹了JavaScript 中判斷變量是否為數(shù)字的示例代碼,代碼簡(jiǎn)單易懂對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10JS實(shí)現(xiàn)重新加載當(dāng)前頁(yè)面或者父頁(yè)面的幾種方法
本文介紹了JS實(shí)現(xiàn)重新加載當(dāng)前頁(yè)面或者父頁(yè)面的幾種方法.需要的朋友可以參考下2016-11-11JS是否可以跨文件同時(shí)控制多個(gè)iframe頁(yè)面的應(yīng)用技巧
這篇文章給大家詳細(xì)介紹了JS是否可以跨文件同時(shí)控制多個(gè)iframe頁(yè)面的應(yīng)用技巧,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2007-12-12uniapp使用第三方UI庫(kù)uview-plus的方法
uview-plus是uni-app全面兼容nvue的uni-app生態(tài)框架,全面的組件和便捷的工具會(huì)讓您信手拈來(lái),下面這篇文章主要給大家介紹了關(guān)于uniapp使用第三方UI庫(kù)uview-plus的方法,需要的朋友可以參考下2023-04-04input框中自動(dòng)展示當(dāng)前日期yyyy/mm/dd的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇input框中自動(dòng)展示當(dāng)前日期yyyy/mm/dd的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07javascript實(shí)現(xiàn)的淘寶旅行通用日歷組件用法實(shí)例
這篇文章主要介紹了javascript實(shí)現(xiàn)的淘寶旅行通用日歷組件,以實(shí)例形式分析了該日歷組件的相關(guān)設(shè)置及使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08