当前位置: 首页 > news >正文

关于微信小程序中如何实现数据可视化-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 = 0wx.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、在渲染层面,你可以将 legendlabel 调色盘series拆开,这样可以方便你更好的管理数据。
3、微信小程序有分包限制,在这里我做的是echarts包的直接下载,可能会占一些体积,你可以在echarts官网上选择在线订制,只下载你需要的图表解来减少包的体积,官网:在线订制


如果你觉得本文章不错,欢迎点赞👍、收藏💖、转发✨哦~
阅读其它:
微信小程序文件预览和下载-文件系统
微信小程序动态生成表单来啦!你再也不需要手写表单了!
微信小程序用户隐私API
微信小程序-支付
微信小程序登录流程与实现

http://www.lryc.cn/news/246063.html

相关文章:

  • 在Windows WSL (Linux的Windows子系统)上运行的Ubuntu如何更改主机名
  • 如何使用内网穿透将Tomcat网页发布到公共互联网上【内网穿透】
  • 网络入门---网络的大致了解
  • 构建沉浸式 AI 文本编辑器:开源 3B 编辑器的设计原则与思路
  • 【从删库到跑路 | MySQL总结篇】表的增删查改(进阶上)
  • [每周一更]-(第74期):Docker-compose 部署Jenkins容器-英文版及错误纠错
  • MySQL日期函数sysdate()与now()的区别,获取当前时间,日期相关函数
  • 邦芒解析:面试怎么谈自身优缺点
  • 【libGDX】加载G3DJ模型
  • 0基础学习VR全景平台篇第123篇:VR视频航拍补天 - PR软件教程
  • webpack打包三方库直接在html里面使用
  • Redis使用increment方法返回null的原因以及解决方案
  • springMVC,什么是Spring MVC? Spring MVC的主要组件? springMVC工作原理/流程 MVC框架
  • 【论文阅读】TACAN:控制器局域网中通过隐蔽通道的发送器认证
  • C语言第三十五弹---打印九九乘法表
  • 线性代数的艺术
  • 基于注解配置的AOP
  • 【Qt】QStackedWidget、QRadioButton、QPushButton及布局实现程序首页自动展示功能
  • 探索 V8 引擎的内部:深入理解 JavaScript 执行的本质
  • 单片机学习11——矩阵键盘
  • Java游戏 王者荣耀
  • 接口测试场景:怎么实现登录之后,需要进行昵称修改?
  • 石油化工专业MR仿真情景教学演练
  • Docker配置Halo搭建个人博客-快速入门
  • 禁止编辑的PPT幻灯片,如何有效保护文件安全?
  • 优化前端性能
  • 1.1 C语言之入门:使用Visual Studio Community 2022运行hello world
  • Android NDK开发中常用的gradle配置
  • 【AUTOSAR-DoIP】通过 DoIP 进行符合 Autosar 的车辆诊断
  • GPIO的使用--操作PE02 PE03 PE04实现开关控制灯泡亮灭