还有就是可以使用一些小程序的插件,比如wx-charts.

先来看一下网上对这个插件的评价:

目前在github上有1804颗星,使用的比较广泛。

github地址:https://github.com/xiaolin3303/wx-charts.git;

支持图标类型

  • 饼图 pie
  • 圆环图 ring
  • 线图 line
  • 柱状图 column
  • 区域图 area
  • 雷达图 radar

使用方法

直接引入编译好的dist里面的js文件(二选一)

然后在需要使用的页面的js当中使用require引入即可:

  1. let Charts = require('./../../utils/wxcharts.js');

  .wxml中定义

<canvas canvas-id="canvas1"></canvas>
<canvas canvas-id="canvas2"></canvas>
<canvas canvas-id="canvas3"></canvas>
<canvas canvas-id="canvas4"></canvas>
<canvas canvas-id="canvas5"></canvas>
<canvas canvas-id="canvas6"></canvas>

  canvas-id与js当中的new Charts选项当中的canvasId必须要一致才行;

参数说明:

  1. opts Object
  2. opts.canvasId String required 微信小程序canvas-id
  3. opts.width Number required canvas宽度,单位为px
  4. opts.height Number required canvas高度,单位为px
  5. opts.title Object (only for ring chart)
  6. opts.title.name String 标题内容
  7. opts.title.fontSize Number 标题字体大小(可选,单位为px
  8. opts.title.color String 标题颜色(可选)
  9. opts.subtitle Object (only for ring chart)
  10. opts.subtitle.name String 副标题内容
  11. opts.subtitle.fontSize Number 副标题字体大小(可选,单位为px
  12. opts.subtitle.color String 副标题颜色(可选)
  13. opts.animation Boolean default true 是否动画展示
  14. opts.legend Boolen default true 是否显示图表下方各类别的标识
  15. opts.type String required 图表类型,可选值为pie, line, column, arearadarring
  16. opts.categories Array required (饼图、圆环图不需要) 数据类别分类
  17. opts.dataLabel Boolean default true 是否在图表中显示数据内容值
  18. opts.dataPointShape Boolean default true 是否在图表中显示数据点图形标识
  19. opts.xAxis Object X轴配置
  20. opts.xAxis.disableGrid Boolean default false 不绘制X轴网格(适用于折线图,柱形图,区域图)
  21. opts.yAxis Object Y轴配置
  22. opts.yAxis.format Function 自定义Y轴文案显示
  23. opts.yAxis.min Number Y轴起始值
  24. opts.yAxis.max Number Y轴终止值
  25. opts.yAxis.title String Ytitle
  1. opts.yAxis.titleFontColor String Ytitle的文字的颜色
  1. opts.yAxis.fontColor String Y轴文字的颜色
  1. opts.yAxis.gridColor String Y轴格子的颜色
  1. opts.yAxis.disabled Boolean default false 不绘制Y
  2. opts.series Array required 数据列表

  数据列表series的参数

  1. dataItem Object
  2. dataItem.data Array required (饼图、圆环图为Number) 数据
  3. dataItem.color String 例如#7cb5ec 不传入则使用系统默认配色方案
  4. dataItem.name String 数据名称
  5. dateItem.format Function 自定义显示数据内容

  高清显示

设置canvas的尺寸为2倍大小,然后缩小到50%,建议都进行这样的设置,图表本身绘制时是按照高清显示配置的,不然整体效果会偏大(一般以iPhone6为标准进行设计)

  1. /* 例如设计图尺寸为320 x 300 */
  2. .canvas {
  3. width: 640px;
  4. height: 600px;
  5. transform: scale(0.5)
  6. }

  例子:

  pie(饼图)

  1. new Charts({
  2. canvasId: 'canvas1',
  3. type: 'pie',
  4. series: [{ name: '一班', data: 50 }, { name: '二班', data: 30 }, { name: '三班', data: 20 }, { name: '四班', data: 18 }, { name: '五班', data: 8 }],
  5. width: 640,
  6. height: 400,
  7. dataLabel: true,
  8. });

  

 线图(circle)

  1. new Charts({
  2. canvasId: 'canvas2',
  3. dataPointShape: "circle",
  4. type: 'line',
  5. extra: {
  6. lineStyle: 'curve' //线条的形状(弧形)
  7. },
  8. categories: ['2012', '2013', '2014', '2015', '2016', '2017'],
  9. series: [{
  10. name: '成交量1',
  11. data: [0.15, null, 0.45, 0.37, 0.4, 0.8],//设置某一个值为null会出现断层
  12. format: function (val) {
  13. return val.toFixed(2) + '万';
  14. }
  15. }, {
  16. name: '成交量2',
  17. data: [0.30, 0.37, 0.65, 0.78, 0.69, 0.94],
  18. format: function (val) {
  19. return val.toFixed(2) + '万';
  20. }
  21. }],
  22. yAxis: {
  23. title: '成交金额 (万元)',
  24. format: function (val) {
  25. return val.toFixed(2);
  26. },
  27. fontColor: "red",
  28. titleFontColor: "red",
  29. min: 0,
    gridColor:"red"
  1. },
  2. width: 840,
  3. height: 600,
  4. dataLabel: true
  5. });

  

  

柱状图(column)

  1. new Charts({
  2. canvasId: 'canvas3',
  3. dataPointShape: false,
  4. type: 'column',
  5. categories: ['2016-08', '2016-09', '2016-10', '2016-11', '2016-12', '2017'],
  6. series: [{
  7. name: '成交量1',
  8. data: [15, 20, 45, 37, 4, 80],
         color:"rgba(0,0,0,0.3)"//支持rgba,但不支持渐变色
  1. }, {
  2. name: '成交量2',
  3. data: [70, 40, 65, 100, 34, 18]
  4. }, {
  5. name: '成交量3',
  6. data: [100, 50, 75, 200, 15, 13]
  7. }],
  8. yAxis: {
  9. format: function (val) {
  10. return val + '万';
  11. }
  12. },
  13. xAxis: {
  14. disableGrid: true,
  15. },
  16. width: 640,
  17. height: 400,
  18. dataLabel: true,
  19. extra: {
  20. column: {
  21. width: 40 //柱的宽度
  22. }
  23. }
  24. });

  

区域图(area)

  1. new Charts({
  2. canvasId: 'canvas4',
  3. type: 'area',
  4. categories: ['2016-08', '2016-09', '2016-10', '2016-11', '2016-12', '2017'],
  5. series: [{
  6. name: '成交量1',
  7. data: [70, 40, 65, 100, 34, 18],
  8. format: function (val) {
  9. return val.toFixed(2) + '万';
  10. }
  11. }, {
  12. name: '成交量2',
  13. data: [15, 20, 45, 37, 4, 80],
  14. format: function (val) {
  15. return val.toFixed(2) + '万';
  16. }
  17. }],
  18. yAxis: {
  19. format: function (val) {
  20. return val + '万';
  21. }
  22. },
  23. width: 640,
  24. height: 400
  25. });

  

环形图(ring)

  1. new Charts({
  2. animation: true,
  3. canvasId: 'canvas5',
  4. type: 'ring',
  5. extra: {
  6. ringWidth: 10,//圆环的宽度
  7. pie: {
  8. offsetAngle: -45//圆环的角度
  9. }
  10. },
  11. title: {
  12. name: '70%',
  13. color: '#7cb5ec',
  14. fontSize: 25
  15. },
  16. subtitle: {
  17. name: '收益率',
  18. color: '#666666',
  19. fontSize: 15
  20. },
  21. series: [{
  22. name: '成交量1',
  23. data: 15,
  24. stroke: false
  25. }, {
  26. name: '成交量2',
  27. data: 35,
  28. stroke: false
  29. }, {
  30. name: '成交量3',
  31. data: 78,
  32. stroke: false
  33. }, {
  34. name: '成交量4',
  35. data: 63,
  36. stroke: false
  37. }],
  38. disablePieStroke: true,
  39. width: 640,
  40. height: 200,
  41. dataLabel: true,
  42. legend: false,
  43. padding: 0
  44. });

  

雷达图(radar)

  1. new Charts({
  2. animation: true,
  3. canvasId: 'canvas6',
  4. type: 'radar',
  5. categories: ['1', '2', '3', '4', '5', '6'],
  6. series: [{
  7. name: '成交量1',
  8. data: [90, 110, 125, 95, 87, 122]
  9. }, {
  10. name: '成交量2',
  11. data: [190, 210, 105, 35, 27, 102]
  12. }],
  13. width: 640,
  14. height: 200,
  15. extra: {
  16. radar: {
  17. max: 200//雷达数值的最大值
  18. }
  19. }
  20. });

  

但是,每一个插件都不是完美的,wx-charts虽然易上手的很容易的绘制图形,但是无法满足一些复杂的情况,比如highcharts里面的一些散点图啊之类的,x轴无法法定义title,无法实现背景色的改变和手指上移数据的展示,也无法实现多个图形进行结合,如折线图和柱形图进行同时的展示,只适合一些简单的数据和单一图像的展示。

微信小程序的wx-charts插件的更多相关文章

  1. 今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2

    今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2 查官方文档 解决方法 在 PowerShell中运行以下内容, 然后重启服务器 # Enab ...

  2. 微信小程序遍历wx:for,wx:for-item,wx:key

    微信小程序中wx:for遍历默认元素为item,但是如果我们设计多层遍历的时候我们就需要自定义item的字段名以及key的键名 wx:for="{{item.goodsList}}" ...

  3. 微信小程序——表单验证插件WxValidate的二次封装(终极版)

    微信小程序表单验证前面的两篇文章做的效果总感觉都有点不太友好,第一篇里的效果是将错误信息通过对话框形式弹出来,这种形式在web形式下早已经淘汰了:第二篇是一次性全部显示所有的错误,然后3秒后自动消失, ...

  4. 微信小程序——表单验证插件WxValidate的二次封装(二)

    在上一篇博客<微信小程序——仿jqueryValidate表单验证插件WxValidate的二次封装>中,我将WxValidate做了再次封装,简化了初始规则数据的构造,但是当有错误时页面 ...

  5. 微信小程序开发——使用第三方插件生成二维码

    需求场景: 小程序中指定页面需要根据列表数据生成多张二维码. 实现方案: 鉴于需要生成多张二维码,可以将生成二维码的功能封装到组件中,直接在页面列表循环中调用就好了.也可以给组件添加slot,在页面调 ...

  6. 微信 小程序 drawImage wx.canvasToTempFilePath wx.saveFile 获取设备宽高 尺寸问题

    以下问题测试环境为微信开发者0.10.102800,手机端iphone6,如有不对敬谢指出. 根据我的测试,context.drawImage,在开发者工具中并不能画出来,只有预览到手机中显示. wx ...

  7. 【微信小程序】wx.openLocation调取失败

    在调取地图的时候发现,wx.openLocation的方法在模拟器和安卓手机上都可以用,在苹果手机上报错. 报错为调取失败:fail invoke too frequently             ...

  8. 【微信小程序】 wx:if 与 hidden(隐藏元素)区别

    wx:if 与 hidden 都可以控制微信小程序中元素的显示与否. 区别: wx:if 是遇 true 显示,hidden 是遇 false 显示. wx:if 在隐藏的时候不渲染,而 hidden ...

  9. 微信小程序之wx.request:fail错误,真机预览请求无效问题解决,安卓,ios网络预览异常

    新版开发者工具增加了https检查功能:可使用此功能直接检查排查ssl协议版本问题: 可能原因:0:后台域名没有配置0.1:域名不支持https1:没有重启工具:2:域名没有备案,或是备案后不足24小 ...

  10. 微信小程序(wx:for)遍历对象

    最近在折腾微信小程序,遇到这么一个情况:后端返回一个key-value的对象数据,需要遍历对象的key-value,然后渲染到视图中.就像下面这样: { '2018-1-9':{ address: ' ...

随机推荐

  1. Selenium常用操作汇总二——如何把一个元素拖放到另一个元素里面(转)

    Q群里有时候会有人问,selenium  webdriver怎么实现把一个元素拖放到另一个元素里面.这一节总一下元素的拖放. 下面这个页面是一个演示拖放元素的页面,你可以把左右页面中的条目拖放到右边的 ...

  2. myeclipse重新添加spring支持

    需求:添加一次可能失败,需要再添加,但是一般点击右键add spring capabilities 不存在了 解决办法: 打开工程找到.project 注释掉spring支持 重新项目右键加入支持即可 ...

  3. (笔记)CANOpen移植(CanFestival移植)

    在网上下载CanFestival源码最新版本CanFestival-3-884a60cbb83e建立以下文件夹:inc文件夹:放LM3S8962硬件相关以及驱动部分的头文件,adc.h.hw_adc. ...

  4. 3ds Max 中的导航控件SteeringWheels入门介绍

    介绍 软件环境:3d Max2015 SteeringWheels 3D导航控件也可以说是“追踪菜单”,通过它们可以使用户从单一的工具访问不同的2D和3D导航工具.SteeringWheels可分成多 ...

  5. e776. 设置JList组件项的提示语

    // Create a list, overriding the getToolTipText() method String[] items = {"A", "B&qu ...

  6. unity3d-----Collider 组件参考

    Collider 组件参考 点击 属性检查器 下面的 添加组件 按钮,然后从 添加碰撞组件 中选择需要的 Collider 组件,即可添加 Collider组件到节点上. Collider 组件属性 ...

  7. 高性能分布式哈希表FastDHT

    高性能分布式哈希表FastDHT介绍及安装配置 FastDHT-高效分布式Hash系统 FastDHT(分布式hash系统)安装和与FastDFS整合实现自定义文件ID Centos6.3 停安装 F ...

  8. 在js中 把 json对象转化为String对象的方法

    方法1: 使用js的扩展方法 ** * json对象转字符串形式 */ function json2str(o) { var arr = []; var fmt = function(s) { if ...

  9. DNS Bind服务配置解析

    DNS域名解析服务(Domain Name System)是用于解析域名与IP地址对应关系的服务,功能上可以实现正向解析与反向解析: 一.DNS服务器工作模式分类: 1.主服务器:在特定区域内具有唯一 ...

  10. 正则split

    string content = "第1行导入失败,失败原因为: <加班原因>字段必填"; string[] resultString = Regex.Split(co ...