Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何在小程序中绘制图表?

如何在小程序中绘制图表?

作者头像
知晓君
发布于 2018-06-28 09:59:58
发布于 2018-06-28 09:59:58
1.5K0
举报
文章被收录于专栏:知晓程序知晓程序

文 | musiq1989

由于微信小程序本身框架的限制,很难集成目前已有的图表工具,显示图表目前有两种方案:

  1. 服务器端渲染图表,输出图片,微信小程序中直接显示渲染好的图片;
  2. 利用微信小程序 API 中提供的 canvas 组件支持,自行绘制图表。

前一种方案已经有非常多类似服务可选,比如 Highcharts 提供了服务端渲染的能力。但这种方式需要后台有一套渲染服务,并且有一定的网络开销。

那么,如何利用 canvas 组件,在小程序中绘制图表呢?下面,我们就来看尝试一下。

API

首先,我们在模板文件中使用 <canvas></canvas> 声明一个 canvas 组件,再使用 wx.createContext() 获取绘图上下文 context。

接下来,我们调用 wx.drawCanvas() 进行绘制:

开始图表的绘制

绘制折线图

需要注意的是,moveTo() 方法不会记录到路径中。

我们来看看效果图:

好像没有想象中难,看上去效果还不错。

绘制每个数据点的标识图案

效果图:

为了避免之前绘制的折线路径影响到标识图案的路径,这一部分包裹在了 beginPath()closePath() 之间。

绘制横坐标

我们规定的参数格式是这样的:

我们根据参数中的 categories 来绘制横坐标。先稍微整理下思路:

  1. 根据 categories 数均分画布宽度;
  2. 计算出横坐标中每个分类的起始点;
  3. 绘制文案(这儿会多一些代码,后面会具体提到)。

效果图:

效果不错,除了文字没有居中.......

查阅微信小程序官方提供的文档,小程序并没有提供 HTML 5 canvas 中的 mesureText(获取文案宽度)的方法。

下面是我们自己简单的实现,并不是绝对精确,但误差基本可以忽略。

这里分别处理了字母、数字、点(.)、横线(-)以及汉字这几个常用字符。

上面的代码稍微修改下:

大功告成!

如何在折线上绘制出每个数据点的数值文案呢?大家可以自己动手,尝试一下。

原文地址: https://segmentfault.com/a/1190000007649376

项目地址: https://github.com/xiaolin3303/wx-charts

本文由知晓程序授权转载,关注微信号 zxcx0101,回复「1228」获得全网第一本《小程序入门指南》电子书。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 知晓程序 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信小程序中图表实现的两种方式
目前常用到的在微信小程序中画柱状图、折线图、饼状图等图表的库主要有以下几种,首选百度echarts小程序版、微信小程序图表插件(wx-charts)
酒馆丁老师
2021/09/14
5.6K0
微信小程序中图表实现的两种方式
【Demo】各类图表Demo源码+相关组件
各类图表功能,小程序自带API并没有提供,所以很多人就用了其他方法来实现,极乐大叔将这些实现方法和教程聚合一下,以便大家能够迅速而方便的使用。 — 相关文章 — 在微信小程序中绘制图表(part
极乐君
2018/02/05
3.8K0
【Demo】各类图表Demo源码+相关组件
微信小程序优秀开发资源汇总
说实话,我最近大概有半年多再也没有敲过 Android 的代码了,所以对于 Android 方面的内容可能分享的比较少了,这半年一直在做微信小程序的开发,对此给大家分享一下,比较好的一些微信小程序的开
非著名程序员
2018/03/26
1.9K0
微信小程序优秀开发资源汇总
微信小程序开发实战(17):用画布画一张笑脸
小程序的画布允许绘制基础的图形,如直线、圆等。画布需要使用<canvas>标签,例如,下面的布局代码使用了<canvas>标签定义了一个300*200的画布。
蒙娜丽宁
2020/08/11
1.2K0
微信小程序开发实战(17):用画布画一张笑脸
小程序优秀开发资源
下面是一些 github 上比较受欢迎的小程序项目,包括开发框架、UI组件等 labrador (开发框架) 特性: 支持加载海量NPM包 支持ES6/7标准代码,使用async/await能够有效避免回调地狱 实现了组件重用和嵌套 强力压缩代码,尽可能减小程序体积 更详细信息可以查看项目主页 https://github.com/maichong/labrador 目前已有 1045 个 star wepy (开发框架) 特性: 类Vue开发风格 支持引入NPM包 支持Promise 小程序细节优化,如请
dys
2018/04/04
1K0
『教程』微信小程序canvas辑合(教程+Demo+跳坑)
社区里有一群canvas爱好者,比jsh5css,安静的小智,jeffer等同学他们在canvas方面都有着自己的学习心得和见解。 但是极乐叔发现在小程序开发学习过程中还是有很多小伙伴折戟在canvas上,为此我们在社区首页教程内专门开了一个canvas学习栏目,但是觉得仍然不够,canvas在全网的知识还是太少,所以今天集中一下全网的资料,方便以后遇到问题的同学,能够从中找到可能的参考。 假如本文中有错误或者需要补充的部分,欢迎给同学提出或补充!你也可以在后台投稿发表自己canvas方面的心得或demo
极乐君
2018/02/06
4.7K2
mpvue-小程序之蹲坑记
mpvue 是兼容微信小程序的生命周期与 vue 的生命周期,vue 实例会接管小程序 Page 实例的生命钩子,因此需要使用到小程序的生命周期钩子时,可将相应的钩子方法定义在 vue 实例中 如定义当前Page的分享标题内容图片:
超然
2018/09/27
2K0
mpvue-小程序之蹲坑记
开发 | 教你刷爆朋友圈:2 招搞定小程序生成分享图片功能
最近频频刷屏的许多 HTML 5 作品,都用到了生成含有用户信息的图片并保存分享的功能。
知晓君
2018/07/27
7470
小程序Canvas实践指南
导语 总结在小程序canvas开发实践中遇到的一些问题和解决方法。 1. 什么是 Canvas? 在 MDN 是这样定义 canvas 的: canvas 是 HTML5 新增的元素,可用于通过使用 JavaScript 中的脚本来绘制图形。例如,它可以用于绘制图形、制作照片、创建动画,甚至可以进行实时视频处理或渲染。 Canvas 是由 HTML 代码配合高度和宽度属性而定义出的可绘制区域。JavaScript 代码可以访问该区域,类似于其他通用的二维 API,通过一套完整的绘图函数来动态生成图形。
腾讯VTeam技术团队
2020/10/14
3.8K0
「强烈建议收藏」小程序canvas绘制带二维码海报全流程(枚举踩坑,详解解决方案)
接下来,我会把纯前端实现生成带二维码的海报全流程给大家讲个明明白白,把我自己遇到的坑,给大家详细分享并讲解,防止大家遇到相似问题,即使遇到问题,也会有一个明确的方向,并且吐血建议大家收藏一波,以备不时之需。(你不能保证以后的需求,没有类似的吧,有的话,记得翻出来看看)
用户6835371
2021/06/01
3.7K0
「强烈建议收藏」小程序canvas绘制带二维码海报全流程(枚举踩坑,详解解决方案)
轻松生成小程序分享海报的神器来了
小程序是一种不用下载就能使用的应用,也是一项门槛非常高的创新,经过将近两年的发展,已经构造了新的小程序开发环境和开发者生态。小程序越来越火爆,基于微信的各类小程序优秀项目真实层出不穷,小程序商城更是成为了企业商家的标配,
用户7690885
2021/04/20
8350
继往开来,图鸟UI又推出一款高颜值、兼容多平台、丰富组件的图表组件模板
大家好,今天分享的主题是图表统计。图表统计是使用图表和图形来可视化和呈现数据的方法。它通过将数据转化为柱状图、折线图、饼图等形式来展示各种统计指标和趋势。
兔云小新LM
2023/09/23
6560
继往开来,图鸟UI又推出一款高颜值、兼容多平台、丰富组件的图表组件模板
继往开来,图鸟UI又推出一款高颜值、兼容多平台、丰富组件的图表组件模板
大家好,今天分享的主题是图表统计。图表统计是使用图表和图形来可视化和呈现数据的方法。它通过将数据转化为柱状图、折线图、饼图等形式来展示各种统计指标和趋势。
兔云小新LM
2023/09/23
4480
继往开来,图鸟UI又推出一款高颜值、兼容多平台、丰富组件的图表组件模板
Canvas系列(6):绘制图片
我们现在已经可以绘制好多东西了,不过在实际开发中,绘制最多的当然是图片了,这章我们就讲讲图片的绘制。
kai666666
2020/10/17
9440
轻松生成小程序分享海报
小程序分享到朋友圈只能使用小程序码海报来实现,生成小程序码的方式有两种,一种是使用后端方式,一种是使用小程序自带的canvas生成;后端的方式开发难度大,由于生成图片耗用内存比较大对服务端也是不小的压力;所以使用小程序的canvas是一个不错的选择,但由于canvas水比较深,坑比较多,还有不同海报需要重现写渲染流程,导致代码冗余难以维护,加上不同设备版本的情况不一样,因此小程序海报生成组件的需求十分迫切。
honey缘木鱼
2018/09/26
2.5K0
轻松生成小程序分享海报
小程序海报,极简的实现方式
需要注意的是,目前的canvas可以简单分为两种。一种是传统网页中的canvas,一种是小程序中的canvas。两者的功能是完全一样的。只是标签的样式,和 api 略有区别而已。目前我们主要讲解小程序中的canvas。
万少
2025/02/11
1340
小程序海报,极简的实现方式
小程序bug
3. wx-canvas线状图中多条线展示时,点击显示tooltip后苹果手机会出现无法滚动的现象。得添加属性值disable-scroll="{{false}}"
EchoROne
2022/08/15
9060
小程序bug
小程序 canvas 生成海报 一次搞掂
需要注意的是,目前的canvas可以简单分为两种。一种是传统网页中的canvas,一种是小程序中的canvas。两者的功能是完全一样的。只是标签的样式,和 api 略有区别而已。目前我们主要讲解小程序中的canvas。
万少
2025/02/11
1390
小程序 canvas 生成海报 一次搞掂
绘制图表(1):初次实现
今天介绍如何用Python创建图表。具体地说,你将创建一个PDF文件,其中包含的图表对从文本文件读取的数据进行了可视化。虽然常规的电子表格软件都提供这样的功能,但Python提供了更强大的功能。当你再次实现这个项目并从网上自动下载数据时,就意识到这一点。
不可言诉的深渊
2019/07/26
2K0
【matplotlib】1-使用函数绘制图表
在一个图形输出窗口中,底层是一个Figure实例,通常称之为画布,包含一些可见和不可见的元素。在画布上的就是图形,图形是一些Axes实例,里面几乎包含了matplotlib的组成元素,例如坐标轴、刻度、标签、线和标记等。
程序员小涛
2022/12/05
1.3K0
【matplotlib】1-使用函数绘制图表
推荐阅读
相关推荐
微信小程序中图表实现的两种方式
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档