基于mpvue小程序使用echarts画折线图的方法示例


Posted in Javascript onApril 24, 2019

第一次使用mpvue框架来写小程序,项目开发直接搬用mpvue-shop(一个仿网易严选的小程序开发项目),项目结构清楚,实现了大部分功能,对于初次使用mpvue的小伙伴们来说,是一个很好的选择。

关于组件的选择:

1.echarts-for-weixin,官方echarts的小程序版本。使用参考:echarts-for-weixin介绍,如果你是原生开发小程序版本,这个组件非常适合你,开发过程中可使用echarts官方提供的所有配置和Api,但并不适合mpvue项目。

2、wx-charts,一个个人开发的微信小程序图表插件,体积只有30K,可用于mpvue项目和原生小程序项目,支持大部分图表绘制,缺点是可配置化不强,对于UI没有太大要求的可使用此组件,比较适合于个人项目开发。

3、mpvue-echarts与echarts结合。特别适合mpvue项目,mpvue-echarts是一个基于mpvue开发的echarts组件,echarts的加入可完全使用官方所有的图表绘制功能,让echarts在小程序当中得到全部应用。

mpvue-echarts配合echarts的使用

下载相关包

npm install mpvue-echarts --save

echarts的下载可到官网上下载,由于小程序中对文件大小有限制,建议通过勾选所需要的功能按需下载。

vue文件中使用

template:

<mpvue-echarts :echarts="echarts" :onInit="initChart" canvasId="demo-canvas" />

js:

import mpvueEcharts from 'mpvue-echarts';

let echarts = require("../../../static/lib/echarts.min.js"); //按需下载的压缩文件放在项目文件夹中
import charts from './charts'; //本地mixin文件,图表的所有配置

let chart = null;
export default {
 data() {
 return {
  echarts,
 };
 },
 async mounted() {
 let data = await post("/product/marketInfo",{
 });

 this.initCombineLineData(data.trendData);
 chart.setOption(this.trendChart);

 },
 mixins: [charts],
 methods: {
 initChart(canvas, width, height) {
  chart = echarts.init(canvas, null, {
   width: width,
   height: height
  });
  canvas.setChart(chart);
  chart.setOption(this.trendChart);
  return chart;

 }
 },
 components: {
 mpvueEcharts
 }
}

charts.js文件

export default {
 data() {
 return {
  //trend图
  trendChart: {
  grid: {
   left: 'left',
   top: 50,
   containLabel: true,
   tooltip: {
    triggerOn: 'none',
    showConent: true,
    position: function (pt) {
    return [pt[0], pt[1]-50];
    }
   }
  },
  tooltip: {
   trigger: "none",
   showContent: false,
  },
  textStyle: {
   color: "#999",
   fontSize: 24
  },
  label: {
   fontSize: 22
  },
  xAxis: {
   name: "年份",
   type: "category",
   nameGap:10, //坐标轴名称与轴线之间的距离。
   boundaryGap: true, //坐标轴两边留白策略
   nameTextStyle:{ //坐标轴名称样式
    color:"#999",
    fontSize: 12,
    align: 'left',
    verticalAlign: 'bottom'
   },
   axisLine: { //坐标轴轴线相关设置
   show: true, //是否显示坐标轴轴线。
   symbol: ['none','arrow'], //轴线两边的箭头默认不显示箭头,即 'none'。两端都显示箭头可以设置为 'arrow',只在末端显示箭头可以设置为 ['none', 'arrow']。
   symbolSize: [10,8],//轴线两边的箭头的大小
   symbolOffset: [0,5],//轴线两边的箭头的偏移
   lineStyle: {
    color: "#ece9e2",//线条颜色
   },
   },
   axisTick: { //坐标轴刻度相关设置
   show: false
   },
   axisLabel: { //坐标轴刻度标签的相关设置
   interval: 10000,
   showMinLabel: true,
   showMaxLabel: true,
   fontSize: 12,
   padding: [6, 0, 0, 0]
   },
   axisPointer: { //坐标轴指示器配置项
    value: '',
    snap: true,
    type: 'line', //指示器类型
    show: false, //竖线是否显示,作用于每一个点
    lineStyle: {
     color: '#ece9e2',
     width: 1
    },
    label: { //坐标轴指示器的文本标签
     show: false,
    },
    handle: { //拖拽手柄,适用于触屏的环境
     show: true,
     color: 'none'
    }
   },
   data: []
  },
  yAxis: {
   type: "value",
   name: "价格(元)",
   nameGap: 0,
   nameTextStyle:{
    color:"#999",
    fontSize: 12,
    align: 'right',
    verticalAlign: 'top',
    padding: [0,0,10,60]
   },
   axisLine: {
   show: true,
   length: 100,
   symbol: ['none','arrow'],
   symbolSize: [10,8],
   symbolOffset: [0,5],
   lineStyle: {
    color: "#ece9e2",
   },

   },
   axisLabel: {
   fontSize: 12,
   formatter: value => {
    return value;
   }
   },
   axisTick: {
   show: false
   },
   splitLine:{
    lineStyle: {
     //网络线设置(只作用于非类目铀)
     show: true,
     color: "#ece9e2",
     width: 0.5,
     type: "solid"
    },
   },
   splitNumber: 5,
   min: 0,
   max: 4000,
   interval: 1000
  },
  series: [
   {
   type: "line",
   smooth: false,
   color: "#ca3c2e",
   showSymbol: true,
   lineStyle: {
    width: 1.5,
    color: "#c5936e",
   },
   itemStyle: {
    normal:{
     borderWidth: 0.5,
     label:{
      show: true, //显示值
      borderWidth: 2,
      color: '#c5936e',
      fontSize: 12,
     }
    }
   },
   data: []
   },
  ]
  },
 };
 },
 methods: {
  initCombineLineData(data) {
   this.trendChart.xAxis.axisPointer.value = data[data.length-1].date; //让指示器定位在最后一个折线点上
   for(let i=0;i<=data.length;i++){
    let yData = {
     symbol: 'none' //折线上不显示转折点
    };
    if(i== data.length-1){
     yData.symbol = "emptyCircle", //最后一个显示转折点
     yData.symbolSize = 6
    }
    yData.value = data[i].price;

    this.trendChart.xAxis.data.push(data[i].date);
    this.trendChart.series[0].data.push(yData);

   }
  },
 }
};

最终效果

基于mpvue小程序使用echarts画折线图的方法示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery源码分析之Event事件分析
Jun 07 Javascript
图片无缝滚动代码(向左/向下/向上)
Apr 10 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
Nov 28 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
Jun 20 Javascript
JavaScript实现仿网易通行证表单验证
May 25 Javascript
基于JQuery实现图片上传预览与删除操作
May 24 Javascript
完美实现js选项卡切换效果(一)
Mar 08 Javascript
HTML的select控件美化
Mar 27 Javascript
vue.js编译时给生成的文件增加版本号
Sep 17 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 Javascript
vue实现购物车案例
May 30 Javascript
微信小程序实现转盘抽奖
Sep 21 Javascript
详解微信小程序开发用户授权登陆
Apr 24 #Javascript
微信小程序实现的一键拨号功能示例
Apr 24 #Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
Apr 24 #Javascript
微信小程序实现的图片保存功能示例
Apr 24 #Javascript
vue中的inject学习教程
Apr 24 #Javascript
浅谈Webpack多页应用HMR卡住问题
Apr 24 #Javascript
微信小程序实现跳转的几种方式总结(推荐)
Apr 24 #Javascript
You might like
自己动手做一个SQL解释器
2006/10/09 PHP
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
PHP里8个鲜为人知的安全函数分析
2014/12/09 PHP
php表单提交实例讲解
2015/11/12 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
关于Javascript 的 prototype问题。
2007/01/03 Javascript
jQuery 使用手册(四)
2009/09/23 Javascript
js 实现菜单上下显示附效果图
2013/11/21 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
2014/07/08 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
常用jQuery选择器汇总
2017/02/02 Javascript
基于JQuery的购物车添加删除以及结算功能示例
2017/03/08 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
详解express使用vue-router的history踩坑
2019/06/05 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
python爬虫基本知识
2018/03/05 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
2018/06/04 Python
python PrettyTable模块的安装与简单应用
2019/01/11 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
大学生四年生活自我鉴定
2013/11/21 职场文书
小班下学期评语
2014/05/04 职场文书
最常使用的求职信
2014/05/25 职场文书
公务员检讨书
2014/11/01 职场文书
证劵公司反洗钱宣传活动总结
2015/05/08 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书