网站首页 > 开源技术 正文
由于微信小程序本身框架的限制,很难集成目前已有的图表工具,显示图表目前有两种方案:
- 服务器端渲染图表,输出图片,微信小程序中直接显示渲染好的图片;
- 利用微信小程序 API 中提供的 canvas 组件支持,自行绘制图表。
前一种方案已经有非常多类似服务可选,比如 Highcharts 提供了服务端渲染的能力。但这种方式需要后台有一套渲染服务,并且有一定的网络开销。
那么,如何利用 canvas 组件,在小程序中绘制图表呢?下面,我们就来看尝试一下。
API
首先,我们在模板文件中使用 <canvas></canvas> 声明一个 canvas 组件,再使用 wx.createContext() 获取绘图上下文 context。
接下来,我们调用 wx.drawCanvas() 进行绘制:
开始图表的绘制
绘制折线图
需要注意的是,moveTo() 方法不会记录到路径中。
我们来看看效果图:
好像没有想象中难,看上去效果还不错。
绘制每个数据点的标识图案
效果图:
为了避免之前绘制的折线路径影响到标识图案的路径,这一部分包裹在了 beginPath() 和 closePath() 之间。
绘制横坐标
我们规定的参数格式是这样的:
我们根据参数中的 categories 来绘制横坐标。先稍微整理下思路:
- 根据 categories 数均分画布宽度;
- 计算出横坐标中每个分类的起始点;
- 绘制文案(这儿会多一些代码,后面会具体提到)。
效果图:
效果不错,除了文字没有居中.......
查阅微信小程序官方提供的文档,小程序并没有提供 HTML 5 canvas 中的 mesureText(获取文案宽度)的方法。
下面是我们自己简单的实现,并不是绝对精确,但误差基本可以忽略。
这里分别处理了字母、数字、点(.)、横线(-)以及汉字这几个常用字符。
上面的代码稍微修改下:
大功告成!
如何在折线上绘制出每个数据点的数值文案呢?大家可以自己动手,尝试一下。
猜你喜欢
- 2024-11-07 小程序echarts和分包使用(小程序 echarts图表)
- 2024-11-07 英国迎14年来最严重的暴风雪(英国雪灾)
- 2024-11-07 uCharts高性能跨全端图表(第二世界全端云)
- 2024-07-23 微信小程序不支持图表工具,通过实例带你了解两种绘制方案
- 2024-07-23 用Python爬取陈奕迅歌曲10万条评论的新发现
- 2024-07-23 Blind XSS发现指南(blind)
- 2024-07-23 3000字实操干货,教你用BQ+Python做数据可视化
- 2024-07-23 如何使用cert-manager管理网关的证书
- 2024-07-23 vue+element-ui 纯干货 可码 有点乱
- 2024-07-23 Echart可视化学习笔记(echarts可视化模板)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)