博客
关于我
uniapp使用ucharts实现一个简单的折线图
阅读量:391 次
发布时间:2019-03-05

本文共 2616 字,大约阅读时间需要 8 分钟。

uniapp使用ucharts实现一个简单的折线图

效果图:
在这里插入图片描述
vue代码:

event事件:

import canvasList from './canvasList';export const life = {     onLoad(){       canvasList[this.chartId] = undefined;  },  created(){       this.cWidth = this.methods('rpx2px',this.wh.w)    this.cHeight = this.methods('rpx2px',this.wh.h)    if(this.chartData){         this.methods('makeChart');    }  },}export const event = {     // 点击图表  clickChart(e){       this.methods('touchChart',e)    this.$emit('touch')  }}export const watch = {     chartData:{       handler(){         console.log('chartData发生变化');      if(this.chartData){           this.methods('makeChart');      }    },    deep:true  }}

methods方法:

import uCharts from '../../libs/u-charts/u-charts.js'const systemInfo = uni.getSystemInfoSync();// 全局的图表对象import canvasList from './canvasList';export default class{     rpx2px(rpx) {       return systemInfo.screenWidth / 750 * rpx;  }  // 触发tooltip  touchChart(e) {       canvasList[this.chartId].showToolTip(e, {         format: function (item, category) {           return category + ' ' + item.name + ':' + item.data      }    })  }  // 初始化图表  makeChart(){       console.log(this.chartId + '加载图表')    canvasList[this.chartId] = new uCharts({         $this:this,      canvasId: this.chartId,      type: 'line',      fontSize:11,      // legend:{   show:true},      dataLabel:false,      dataPointShape:true,      background:'#FFFFFF',      pixelRatio:this.pixelRatio,      categories: this.chartData.categories,      series: this.chartData.series,      animation: true,      xAxis: {           disableGrid:true,      },      yAxis: {           gridType:'grid',        gridColor:'#CCCCCC',        // dashLength:8,        splitNumber:5,        min:10,        max:100,        format:(val)=>{   return val.toFixed(0)},      },      legend:{   show:false},      width: this.cWidth,      height: this.cHeight,      extra: {           line:{             type: 'straight'        }      }    })  }}

model数据:

export const props = [  'chartId', // uChart的ID,  'chartData', // 图表数据,自动更新图表  'width',// 图表宽度,rpx,默认656rpx  'height',// 图表高度, rpx,默认434rpx];export const model = {     canvas:'',  pixelRatio: 1,  cWidth: '',  cHeight: '',};export const computed = {     wh() {       const r = {         w: 656,      h: 434,    };    if (this.width) {         r.w = parseInt(this.width);    }    if (this.height) {         r.h = parseInt(this.height);    }    return r;  }};

自行引入uchart的js,还有这个(一个空文件,名叫canvasList.js)

export default {   }

因为这里用了独家的框架,所以根据需要把相应的生命周期函数放到正常的vue项目的位置,把event就写成正常的函数,methods就是i正常的methods里面的方法,model就是data里return的数据

转载地址:http://usgwz.baihongyu.com/

你可能感兴趣的文章
Node-RED中使用JSON数据建立web网站
查看>>
Node-RED中使用json节点解析JSON数据
查看>>
Node-RED中使用node-random节点来实现随机数在折线图中显示
查看>>
Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
查看>>
Node-RED中使用node-red-contrib-image-output节点实现图片预览
查看>>
Node-RED中使用node-red-node-ui-iframe节点实现内嵌iframe访问其他网站的效果
查看>>
Node-RED中使用Notification元件显示警告讯息框(温度过高提示)
查看>>
Node-RED中使用range范围节点实现从一个范围对应至另一个范围
查看>>
Node-RED中实现HTML表单提交和获取提交的内容
查看>>
Node-RED中将CSV数据写入txt文件并从文件中读取解析数据
查看>>
Node-RED中建立TCP服务端和客户端
查看>>
Node-RED中建立Websocket客户端连接
查看>>
Node-RED中建立静态网页和动态网页内容
查看>>
Vue3+Element-ul学生管理系统(第二十二课)
查看>>
Node-RED中根据HTML文件建立Web网站
查看>>
Node-RED中解析高德地图天气api的json数据显示天气仪表盘
查看>>
Node-RED中连接Mysql数据库并实现增删改查的操作
查看>>
Node-RED中通过node-red-ui-webcam节点实现访问摄像头并截取照片预览
查看>>
Node-RED中配置周期性执行、指定时间阶段执行、指定时间执行事件
查看>>
Node-RED安装图形化节点dashboard实现订阅mqtt主题并在仪表盘中显示温度
查看>>