微信小程序使用ECharts的示例詳解
echarts-for-weixin 是 ECharts 官方維護(hù)的一個(gè)開源項(xiàng)目,提供了一個(gè)微信小程序組件(Component),我們可以通過這個(gè)組件在微信小程序中使用 ECharts 繪制圖表。
echarts-for-weixin 自身包含很多使用示例,方便我們參考。
安裝 ECharts 組件
克隆項(xiàng)目:
git clone https://github.com/ecomfe/echarts-for-weixin.git
切換版本:
git checkout v2.0.0
echarts-for-weixin 最新的 Releases 版本為 v2.0.0,內(nèi)部使用的 ECharts 版本為 5.1.1,詳情可以參考 Releases。
項(xiàng)目文件夾 ec-canvas 就是我們需要的 ECharts 組件文件夾,我們只需要把該文件夾整個(gè)復(fù)制/拷貝到我們小程序項(xiàng)目中就可以完成安裝。
ec-canvas 目錄下有一個(gè) echarts.js,默認(rèn)文件大小較大,如果我們需要使用從 官網(wǎng)自定義構(gòu)建 的方式減小文件大小,選擇的 ECharts 版本一定要和 echarts-for-weixin 版本相匹配,如:5.1.1。
使用 ECharts 組件
假設(shè)我們需要繪制圖表的頁面(Page)為 echarts,小程序項(xiàng)目中對應(yīng)以下四個(gè)文件:
- echarts.js
- echarts.wxml
- echarts.wxss
- echarts.json
在文件 echarts.json 中引用聲明組件:
{ "usingComponents": { "ec-canvas": "/activity/components/ec-canvas/ec-canvas" } }
ec-canvas 為 ECharts 組件名稱,/activity/components/ec-canvas/ec-canvas 是小程序項(xiàng)目中 ECharts 組件的安裝目錄。
在文件 echarts.wxml 中使用組件:
<view class="ec-container"> <ec-canvas canvas-id="echart-pie" ec="{{ec}}"></ec-canvas> </view>
canvas-id 是組件ID,必須唯一;ec 是組件對象,內(nèi)部包含組件繪制所需要的數(shù)據(jù)。
ECharts 組件需要一個(gè)組件容器(view),多個(gè)組件可以位于同一個(gè)組件容器中,必須保證組件初始化(onInit)之前,組件容器是有寬度和高度的;否則,可能導(dǎo)致圖表不能正常顯示,只顯示空白。
在文件 echarts.wxss 中聲明布局樣式類:
.ec-container { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100vw; height: 100vh; } ec-canvas { width: 100%; height: 100%; }
.ec-container 為組件容器使用的樣式類,注意組件容器寬高(width)和高度(height)的聲明;ec-canvas 為組件容器使用的樣式類,可以使用寬高(width)和高度(height)設(shè)置圖表寬高,也可以使用絕對定位(absolute/top/bottom/left/right)的方式設(shè)置圖表位置和寬高。
在 echarts.js 中創(chuàng)建和綁定 ECharts 組件對象:
import * as echarts from '../../components/ec-canvas/echarts'
導(dǎo)入 echarts;
function initChart(canvas, width, height, dpr) { const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr }); canvas.setChart(chart); var option = { backgroundColor: "#ffffff", series: [{ label: { normal: { fontSize: 14 } }, type: 'pie', center: ['50%', '50%'], radius: ['20%', '40%'], data: [{ value: 55, name: '北京' }, { value: 20, name: '武漢' }, { value: 10, name: '杭州' }, { value: 20, name: '廣州' }, { value: 38, name: '上海' }] }] }; chart.setOption(option); return chart; }
ECharts 組件初始化 通用 函數(shù),我們只需要修改函數(shù)中的 option 中的內(nèi)容即可。
Page({ data: { ec: { onInit: initChart } } })
ECharts 組件初始化,加載圖表:
圖表延遲加載
如果不想頁面渲染時(shí)就加載圖表,就需要使用延遲加載,俗稱“懶加載”。
<view class="ec-container"> <ec-canvas id="lazy-echart-pie" canvas-id="lazy-canvas-pie" ec="{{lazyEc}}"></ec-canvas> </view>
id 是 ECharts 組件的唯一標(biāo)識,canvas-id 是 ECharts 組件內(nèi)部畫布(Canvas)的唯一標(biāo)識。
Page({ data: { lazyEc: { lazyLoad: true } } })
頁面渲染時(shí),不直接初始化 ECharts 組件對象,且設(shè)置組件啟用懶加載;
this.lazyComponent = this.selectComponent('#lazy-echart-pie')
頁面渲染完成后,使用組件ID獲取組件實(shí)例(lazyComponent),保存至頁面(this)實(shí)例中。
this.lazyComponent.init((canvas, width, height, dpr) => { const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr }); canvas.setChart(chart); this.lazyChart = chart; var option = { ... }; chart.setOption(option); return chart; });
需要加載圖表時(shí),使用組件實(shí)例,手動(dòng) 調(diào)用初始化方法(init),方法內(nèi)容與 initChart 相同。為了方便后續(xù)操作圖表實(shí)例(chart),也可以將它保存至頁面實(shí)例中。
this.lazyChart.dispose();
不需要圖表時(shí),獲取圖表實(shí)例,銷毀圖表。
以上就是微信小程序使用ECharts的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于小程序 ECharts的資料請關(guān)注腳本之家其它相關(guān)文章!
- 微信小程序中使用echarts的實(shí)現(xiàn)方法
- 微信小程序Echarts圖表組件使用方法詳解
- 微信小程序使用echarts獲取數(shù)據(jù)并生成折線圖
- uniapp在微信小程序中使用ECharts的方法
- 微信小程序中使用ECharts 異步加載數(shù)據(jù)的方法
- 微信小程序Echarts覆蓋正常組件問題解決
- uni-app微信小程序使用echarts的詳細(xì)圖文教程
- 微信小程序在ios下Echarts圖表不能滑動(dòng)的問題解決
- 微信小程序遍歷Echarts圖表實(shí)現(xiàn)多個(gè)餅圖
- 微信小程序中使用echarts方法(全網(wǎng)最詳細(xì)教程!)
相關(guān)文章
用于CSS代碼壓縮與格式化的javascript函數(shù)代碼
呵呵,發(fā)現(xiàn)只要幾行JS代碼就可實(shí)現(xiàn)css的壓縮與格式化,非常不錯(cuò)。2009-12-12JavaScript開發(fā)人員的10個(gè)關(guān)鍵習(xí)慣小結(jié)
還在一味沒有目的的編寫JavaScript代碼嗎?那么你就OUT了!讓我們一起來看看小編為大家搜羅的JavaScript開發(fā)人員應(yīng)該具備的十大關(guān)鍵習(xí)慣吧2014-12-12原生javascript自定義input[type=radio]效果示例
這篇文章主要介紹了原生javascript自定義input[type=radio]效果,結(jié)合實(shí)例形式分析了javascript模擬form表單中radio效果的相關(guān)操作技巧,需要的朋友可以參考下2019-08-08解決canvas畫布使用fillRect()時(shí)高度出現(xiàn)雙倍效果的問題
下面小編就為大家?guī)硪黄鉀Qcanvas畫布使用fillRect()時(shí)高度出現(xiàn)雙倍效果的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08JS實(shí)現(xiàn)不用中間變量temp 實(shí)現(xiàn)兩個(gè)變量值得交換方法
這篇文章主要介紹了在JS中 實(shí)現(xiàn)不用中間變量temp 實(shí)現(xiàn)兩個(gè)變量值得交換 ,需要的朋友可以參考下2018-02-02微信小程序scroll-view組件實(shí)現(xiàn)滾動(dòng)動(dòng)畫
這篇文章主要為大家詳細(xì)介紹了微信小程序scroll-view組件實(shí)現(xiàn)滾動(dòng)動(dòng)畫,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01