vue基于v-charts封装双向条形图的实现代码


Posted in Javascript onDecember 09, 2019

我们先来看实现效果

vue基于v-charts封装双向条形图的实现代码

以这张图来举例

通过重新封装可以实现双向条形图的显示

既可以横向比较同一天的收入支出情况

也可以竖向比较不同日期的收入/支出情况

我们先来准备数据源:

{
   columns: ["日期", "收入", "支出"],
   rows: [
    {
     日期: "8/7",
     收入: -233,
     支出: 120
    },
    {
     日期: "8/5",
     收入: -322,
     支出:450
    },
    {
     日期: "7/4",
     收入: -432,
     支出: 430
    },
    {
     日期: "10/4",
     收入: -233,
     支出: 210
    }
   ]
  };

注意这里一定要把其中一项的值设置为负数,否则无法显示到左边一栏

设置完数据我们可以先看一眼效果:

vue基于v-charts封装双向条形图的实现代码

初步实现条形图一左一右的效果

那如何实现同一维度的两个指标在同一行显示?

我们在配置属性中加上这么一个属性
"stack"

this.chartSettings = {
   stack: {
    xxx: [`收入`, `支出`]
   }
  };

查看官方文档,我们来理解一下这个属性

series[i]-bar.stack string
数据堆叠,同个类目轴上系列配置相同的stack值可以堆叠放置。

也就是说,设置了这个属性,我们可以让两个条形图合并为一个

如果不考虑正负问题,堆叠即可实现下面这个效果

vue基于v-charts封装双向条形图的实现代码

感兴趣的可以去官方看一下在线运行的演示效果
https://www.echartsjs.com/examples/zh/editor.html?c=bar-negative

设置完这个属性我们来看一下效果

vue基于v-charts封装双向条形图的实现代码

可以看到同一日期的收入支出情况已经在一行显示了

最后我们来解决坐标轴及图形标签值显示为负数的问题

我们可以在 chartsetting 属性中修改 label 的 formatter 属性

自定义标签的文字
根据我们的需求,通过 Math.abs()的方法,以绝对值的形式显示

this.chartSettings = {
   label: {
    normal: {
     show: true,
     formatter: params => {
      return `${params.seriesName}:${Math.abs(params.value)}`;
     }
    }
   }
  };

坐标轴数值修改也是一个道理

afterConfig(options) {
   options.xAxis[0].axisLabel = {
    formatter: function(value) {
     return Math.abs(value);
    } //显示的数值都取绝对值
   };
   return options;
  },

这样就可以实现我们的最终效果了

vue基于v-charts封装双向条形图的实现代码

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

Javascript 相关文章推荐
IE浏览器中图片onload事件无效的解决方法
Apr 29 Javascript
js方法数据验证的简单实例
Sep 17 Javascript
ReactNative踩坑之配置调试端口的解决方法
Jul 28 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
Aug 14 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
Aug 30 Javascript
Node之简单的前后端交互(实例讲解)
Nov 14 Javascript
laydate日历控件使用方法详解
Nov 20 Javascript
JS实现对json对象排序并删除id相同项功能示例
Apr 18 Javascript
jQuery滑动效果实现方法分析
Sep 05 jQuery
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
Mar 17 Javascript
使用Vue实现一个树组件的示例
Nov 06 Javascript
微信小程序图片加载失败时替换为默认图片的方法
Dec 09 #Javascript
vue如何使用async、await实现同步请求
Dec 09 #Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
Dec 09 #Javascript
vue新建项目并配置标准路由过程解析
Dec 09 #Javascript
使用vuex较为优雅的实现一个购物车功能的示例代码
Dec 09 #Javascript
简述Vue中容易被忽视的知识点
Dec 09 #Javascript
vue路由传参三种基本方式详解
Dec 09 #Javascript
You might like
phpmyadmin操作流程
2006/10/09 PHP
深入了解php4(2)--重访过去
2006/10/09 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
浅析JavaScript中的类型和对象
2013/11/29 Javascript
javascript自定义的addClass()方法
2014/05/28 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
javascript cookie基础应用之记录用户名的方法
2016/09/20 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
利用Jquery实现几款漂亮实用的时间轴(附示例代码)
2017/02/15 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
Vue2.0父子组件传递函数的教程详解
2017/10/16 Javascript
理解 JavaScript EventEmitter
2018/03/29 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
Python生成pdf文件的方法
2014/08/04 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
如何基于Python实现自动扫雷
2020/01/06 Python
django filter过滤器实现显示某个类型指定字段不同值方式
2020/07/16 Python
在网上学习全世界最好的课程:Coursera
2017/11/07 全球购物
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
羽毛球比赛策划方案
2014/06/13 职场文书
2014年打非治违工作总结
2014/11/13 职场文书
实习科室评语
2015/01/04 职场文书
故意杀人罪辩护词
2015/05/21 职场文书
法定代表人免职证明
2015/06/24 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
SQL之各种join小结详细讲解
2021/08/04 MySQL
《最终幻想14》6.01版本4月5日推出 追加新任务新道具
2022/04/03 其他游戏