关于微信小程序中如何实现数据可视化-echarts动态渲染
移動端設備中,難免會涉及到數據的可視化展示、數據統計等等,本篇主要講解原生微信小程序中嵌入echarts并進行動態渲染,實現數據可視化功能。
基礎使用
首先在GitHub上下載echarts包
地址:https://github.com/ecomfe/echarts-for-weixin/tree/master
下載項目
解壓壓縮包,將ec-canvas文件夾放到我們的項目中
在需要使用的頁面引入echarts
{
"usingComponents": {
"ec-canvas": "/ec-canvas/ec-canvas"
}
}
在頁面中使用
<view class="line_chart">
<ec-canvas class="chart" id="charts" canvas-id="mychart-line" ec="{{ ec }}"></ec-canvas>
</view>
先給echarts的父級元素設置高度
.line_chart {
width: 100%;
height: 550rpx;
background: #fff;
}
然后就可以使用了
// 引入 echarts 文件,這里路徑一定要正確,就是ec-canvas -> echart.js
import * as echarts from '../../../ec-canvas/echarts';
// 定義 initChart 方法
function initChart(canvas) {
const chart = echarts.init(canvas, null, {
height: 250, // 圖表高
// width: 100 // 圖標寬
});
canvas.setChart(chart);
// 此為配置項。配置圖表展現樣式與數據
var option = {
xAxis: {
type: 'category',
data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
},
yAxis: {
type: 'value'
},
series: [
{
data: [150, 230, 224, 218, 135, 147, 260],
type: 'line'
}
]
};
chart.setOption(option);
return chart;
}
Page({
/**
* 頁面的初始數據
*/
data: {
// 此處的ec名稱與wxml結構中命名保持一致
ec: {
// 使用 onInit 方法定義
onInit: initChart
}
},
/**
* 生命周期函數--監聽頁面加載
*/
onLoad(options) {
},
})
在echarts中,配置項與echarts文檔中的配置項相同,按照官網的配置項進行開發即可。
配置項手冊:https://echarts.apache.org/zh/option.html
動態渲染echarts
我們會根據業務場景,傳入不同的數據進行動態渲染echarts,那么在這里charts實例就必須配置為全局
var chart = null; // 重要-保存chart為全局實例
// initChart必須為全局函數
function initChart(canvas) {
chart = echarts.init(canvas, null, {
height: 250,
});
canvas.setChart(chart);
return chart;
}
當你的數據變化后,重新渲染echarts
data: {
ec: {
onInit: initChart
}
},
getData() {
return { // 你配置的的options數據...... };
},
getCharts() {
setTimeout(() => {
// 由于chart被你定義為全局,所以這里可以直接獲取
// 通過setOption設置options數據,刷新圖標
chart.setOption(this.getData(), true)
}, 1500)
}
解決真機文字陰影
在options配置中添加
tooltip: {
textStyle: {
textShadowBlur: 10, // 去掉文字陰影
textShadowColor: 'transparent', // 去掉文字陰影
},
},
解決圖標模糊問題
在真機中echarts可能會出現分辨率低,圖形模糊的情況,此時我們需要獲取設備像素比給echarts做初始化設置。
微信小程序獲取設備信息:wx.getSystemInfo
function initChart(canvas) {
// 獲取設備像素比
const getPixelRatio = () => {
let pixelRatio = 0
wx.getSystemInfo({
success: function (res) {
pixelRatio = res.pixelRatio
},
fail: function () {
pixelRatio = 0
}
})
return pixelRatio
}
var dpr = getPixelRatio(); // 像素比
chart = echarts.init(canvas, null, {
height: 250,
devicePixelRatio: dpr // 設置初始化像素比
});
canvas.setChart(chart);
return chart;
}
此時圖表的像素就會按照設配像素比進行渲染
另外
1、你可以將echarts封裝成組件,通過observers監聽數據的變化來實現echarts的動態渲染。
2、在渲染層面,你可以將 legend、label 、調色盤、 series拆開,這樣可以方便你更好的管理數據。
3、微信小程序有分包限制,在這里我做的是echarts包的直接下載,可能會占一些體積,你可以在echarts官網上選擇在線訂制,只下載你需要的圖表解來減少包的體積,官網:在線訂制
如果你覺得本文章不錯,歡迎點贊??、收藏??、轉發?哦~
閱讀其它:
微信小程序文件預覽和下載-文件系統
微信小程序動態生成表單來啦!你再也不需要手寫表單了!
微信小程序用戶隱私API
微信小程序-支付
微信小程序登錄流程與實現
總結
以上是生活随笔為你收集整理的关于微信小程序中如何实现数据可视化-echarts动态渲染的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 强化学习(八) - 深度Q学习(Deep
- 下一篇: 我试图通过这篇文章告诉你,什么是神奇的泛