关于微信小程序中如何实现数据可视化-echarts动态渲染

这篇具有很好参考价值的文章主要介绍了关于微信小程序中如何实现数据可视化-echarts动态渲染。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

移动端设备中,难免会涉及到数据的可视化展示、数据统计等等,本篇主要讲解原生微信小程序中嵌入echarts并进行动态渲染,实现数据可视化功能。

基础使用

首先在GitHub上下载echarts
地址:https://github.com/ecomfe/echarts-for-weixin/tree/master
下载项目
微信小程序 可视化,原生微信小程序,微信小程序,javascript,vue.js,react.js,前端,html5,css3
解压压缩包,将ec-canvas文件夹放到我们的项目中
微信小程序 可视化,原生微信小程序,微信小程序,javascript,vue.js,react.js,前端,html5,css3
微信小程序 可视化,原生微信小程序,微信小程序,javascript,vue.js,react.js,前端,html5,css3
在需要使用的页面引入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) {
  },
})

微信小程序 可视化,原生微信小程序,微信小程序,javascript,vue.js,react.js,前端,html5,css3
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)
    }

解决真机文字阴影

微信小程序 可视化,原生微信小程序,微信小程序,javascript,vue.js,react.js,前端,html5,css3
options配置中添加

   tooltip: {
     textStyle: {
       textShadowBlur: 10, // 去掉文字阴影
       textShadowColor: 'transparent', // 去掉文字阴影
     },
   },

解决图标模糊问题

在真机中echarts可能会出现分辨率低,图形模糊的情况,此时我们需要获取设备像素比给echarts做初始化设置。
微信小程序获取设备信息:wx.getSystemInfo

function initChart(canvas) {
  // 获取设备像素比
  const getPixelRatio = () => {
    let pixelRatio = 0
    wx.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;
}

此时图表的像素就会按照设配像素比进行渲染
微信小程序 可视化,原生微信小程序,微信小程序,javascript,vue.js,react.js,前端,html5,css3


在线定制-减少echarts体积

上面直接引入echarts的方式是对echarts的完全引入,体积会比较大,接近1000kb左右,微信小程序是由分包限制的,所以我们可以根据项目需求来按需引入图标,减少echarts体积。
官网在线订制入口:在线订制
假如你的项目中只需要一个折线图,那么这里只勾线折线图
微信小程序 可视化,原生微信小程序,微信小程序,javascript,vue.js,react.js,前端,html5,css3
选择你折线图应用的坐标系
微信小程序 可视化,原生微信小程序,微信小程序,javascript,vue.js,react.js,前端,html5,css3
选择echarts可使用的组件,这个组件就是echarts上的一些可配置项,如下图:
微信小程序 可视化,原生微信小程序,微信小程序,javascript,vue.js,react.js,前端,html5,css3
点击下载,系统会生成并压缩echarts文件
微信小程序 可视化,原生微信小程序,微信小程序,javascript,vue.js,react.js,前端,html5,css3
下载完成后,我们会获得一个echarts.min.js文件,还记得我们之前完全引入echarts的步骤吗,我们将echarts的完整包都引入了项目中,也就是这张图
微信小程序 可视化,原生微信小程序,微信小程序,javascript,vue.js,react.js,前端,html5,css3
这里的echarts文件大小接近1000kb,我们要做的就是替换这个文件
微信小程序 可视化,原生微信小程序,微信小程序,javascript,vue.js,react.js,前端,html5,css3
把压缩好的echarts.min.js文件复制到该文件夹中,删除echarts.js文件,并将echarts.min.js文件名字改为echarts.js即可。

另外
1、你可以将echarts封装成组件,通过observers监听数据的变化来实现echarts的动态渲染。
2、在渲染层面,你可以将 legendlabel 调色盘series拆开,这样可以方便你更好的管理数据。
3、微信小程序有分包限制,在这里我做的是echarts包的直接下载,可能会占一些体积,你可以在echarts官网上选择在线订制,只下载你需要的图表解来减少包的体积,官网:在线订制


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

到了这里,关于关于微信小程序中如何实现数据可视化-echarts动态渲染的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包