关于微信小程序中如何实现数据可视化-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、在渲染层面,你可以将 legend、label 、调色盘、 series拆开,这样可以方便你更好的管理数据。
3、微信小程序有分包限制,在这里我做的是echarts包的直接下载,可能会占一些体积,你可以在echarts官网上选择在线订制,只下载你需要的图表解来减少包的体积,官网:在线订制
如果你觉得本文章不错,欢迎点赞👍、收藏💖、转发✨哦~
阅读其它:
微信小程序文件预览和下载-文件系统
微信小程序动态生成表单来啦!你再也不需要手写表单了!
微信小程序用户隐私API
微信小程序-支付
微信小程序登录流程与实现
相关文章:
关于微信小程序中如何实现数据可视化-echarts动态渲染
移动端设备中,难免会涉及到数据的可视化展示、数据统计等等,本篇主要讲解原生微信小程序中嵌入echarts并进行动态渲染,实现数据可视化功能。 基础使用 首先在GitHub上下载echarts包 地址:https://github.com/ecomfe/echarts-for…...
在Windows WSL (Linux的Windows子系统)上运行的Ubuntu如何更改主机名
在Windows 安装的Ubuntu,如何修改主机名。有列了两种方法,提供给大家参照。 文章目录 方法一:hostname指令修改方法二:修改配置文件修改hostnanmewsl.conf 文件配置选项推荐阅读 方法一:hostname指令修改 hostname指…...
如何使用内网穿透将Tomcat网页发布到公共互联网上【内网穿透】
文章目录 前言1.本地Tomcat网页搭建1.1 Tomcat安装1.2 配置环境变量1.3 环境配置1.4 Tomcat运行测试1.5 Cpolar安装和注册 2.本地网页发布2.1.Cpolar云端设置2.2 Cpolar本地设置 3.公网访问测试4.结语 前言 Tomcat作为一个轻量级的服务器,不仅名字很有趣࿰…...
网络入门---网络的大致了解
目录标题 网络发展的简单认识协议作用的理解协议的本质什么是协议分层网络通信所面对的问题OSI七层模型TCP/IP模型协议报头的理解局域网通信局域网通信基本原理报头的问题局域网的特点跨网的网络链接如何查看mac地址 网络发展的简单认识 通过之前的学习我们知道计算机是给人提…...
构建沉浸式 AI 文本编辑器:开源 3B 编辑器的设计原则与思路
借助于在 AutoDev 与 IDE 上的 AI 沉浸式体验设计,我们开始构建一个 AI 原生的文本编辑器,以探索沉浸式创作体验。其适用于需求编写、架构文档等等文档场景,以加速软件开发中的多种角色的日常工作。 GitHub:https://github.com/un…...
【从删库到跑路 | MySQL总结篇】表的增删查改(进阶上)
个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、数据…...
[每周一更]-(第74期):Docker-compose 部署Jenkins容器-英文版及错误纠错
1、前文概要 通过物理机部署Jenkins前文已经讲过(地址:[Jenkins] 物理机 安装 Jenkins),也已经公司内部平稳运行若干年,考虑到容器化的使用场景,部分项目都采用容器运行,开始考虑部署容器化的J…...
MySQL日期函数sysdate()与now()的区别,获取当前时间,日期相关函数
select sleep(2) as datetime union all select sysdate() -- sysdate() 返回的时间是当前的系统时间,而 now() 返回的是当前的会话时间。 union all select now() -- 等价于 localtime,localtime(),localtimestamp,localtimestamp(),current_timestamp,curre…...
邦芒解析:面试怎么谈自身优缺点
在面试时,当被问到你的优缺点时,你可以这样回答: 优点: 我的工作能力强,能够高效地完成任务。我对技术有热情,喜欢学习新的技能和知识。我善于沟通,能够与不同背景的人进行有效沟通。我注重细节…...
【libGDX】加载G3DJ模型
1 前言 libGDX 提供了自己的 3D 格式模型文件,称为 G3D,包含 g3dj(Json 格式)和 g3db(Binary 格式)文件,官方介绍见 → importing-blender-models-in-libgdx。 对于 fbx 文件,libGDX…...
0基础学习VR全景平台篇第123篇:VR视频航拍补天 - PR软件教程
上课!全体起立~ 大家好,欢迎观看蛙色官方系列全景摄影课程! 嗨,大家好,今天我们来介绍【航拍VR视频补天】。之前已经教给了大家如何处理航拍图片的补天,肯定有很多小伙伴也在好奇,航拍的VR视频…...
webpack打包三方库直接在html里面使用
场景:我是小程序中使用wxmp-rsa库进行加密,然后在html里面解密 我就想把wxmp-rsa库打包到一个js里面,然后在html里面直接引入使用。 webpack配置 const path require("path"); const MiniCssExtractPlugin require("mini-…...
Redis使用increment方法返回null的原因以及解决方案
public static void main(String[] args) {redisTemplate.setEnableTransactionSupport(true); //开启事务支持redisTemplate.multi(); //标记事务块的开始redisTemplate.opsForValue().set("name","zs");redisTemplate.opsForValue().set("pass&qu…...
springMVC,什么是Spring MVC? Spring MVC的主要组件? springMVC工作原理/流程 MVC框架
文章目录 springMVC什么是Spring MVC?Spring MVC的主要组件?springMVC工作原理/流程MVC框架 今天以这篇文章简单和大家聊聊springMVC相关的内容,和原理,以及框架; springMVC 什么是Spring MVC? Spring MV…...
【论文阅读】TACAN:控制器局域网中通过隐蔽通道的发送器认证
文章目录 摘要一、引言二、相关工作三、系统和对手模型3.1 系统模型对手模型 四、TACAN4.1 TACAN 架构4.2 发送方认证协议4.3 基于IAT的隐蔽通道4.4 基于偏移的隐蔽通道(本节公式格式暂未整理)4.5 基于LSB的隐蔽通道 摘要 如今,汽车系统与现…...
C语言第三十五弹---打印九九乘法表
C语言打印九九乘法表 思路:观察每一行可以看出乘号右边的一行值都是相同的,而乘号左边不断变化,所以使用嵌套循环,控制好 乘号左右值变化的条件即可。 #include <stdio.h>int main() {for (int i 1; i < 9; i){for (in…...
线性代数的艺术
推荐一本日本网友Kenji Hiranabe写的《线性代数的艺术》。这本书是基于MIT大牛Gilbert Strang教授的《每个人的线性代数》制作的。 虽然《线性代数的艺术》这本书仅仅只有12页的内容,就把线性代数的重点全画完了,清晰明了。 《线性代数的艺术》PDF版本&…...
基于注解配置的AOP
注解方式AOP基本使用 Spring的AOP也提供了注解方式配置,使用相应的注解代替之前的xml配置。 xml配置: <aop:config> <!-- 配置切入点 目的是指定哪些方法增强--><aop:pointcut id"myPointCut1" expression"execu…...
【Qt】QStackedWidget、QRadioButton、QPushButton及布局实现程序首页自动展示功能
效果 在程序启动后,有时不会进入到工作页面,会进入到产品展示页面。 动画如下: 首页展示 页面操作 当不点击时,一秒自动刷新一次;当点击时,会自动跳转到对应页面;点击上一页、下一页、及跳转页…...
探索 V8 引擎的内部:深入理解 JavaScript 执行的本质
🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
Mac软件卸载指南,简单易懂!
刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"࿰…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
Spring Security 认证流程——补充
一、认证流程概述 Spring Security 的认证流程基于 过滤器链(Filter Chain),核心组件包括 UsernamePasswordAuthenticationFilter、AuthenticationManager、UserDetailsService 等。整个流程可分为以下步骤: 用户提交登录请求拦…...
SpringAI实战:ChatModel智能对话全解
一、引言:Spring AI 与 Chat Model 的核心价值 🚀 在 Java 生态中集成大模型能力,Spring AI 提供了高效的解决方案 🤖。其中 Chat Model 作为核心交互组件,通过标准化接口简化了与大语言模型(LLM࿰…...
