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 相关文章推荐
jquery仿搜索自动联想功能代码
May 23 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
Dec 18 Javascript
javascript转换日期字符串为Date日期对象的方法
Feb 13 Javascript
把Node.js程序加入服务实现随机启动
Jun 25 Javascript
推荐10 个很棒的 jQuery 特效代码
Oct 04 Javascript
深入理解angularjs过滤器
May 25 Javascript
JSON 必知必会 观后记
Oct 27 Javascript
js获取地址栏参数的两种方法
Jun 27 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
Aug 18 Javascript
vue使用vue-i18n实现国际化的实现代码
Apr 08 Javascript
vue实现鼠标经过动画
Oct 16 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
Jan 26 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
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
php Smarty模板生成html文档的方法
2010/04/12 PHP
解析PHP的session过期设置
2013/06/29 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
js和jquery对dom节点的操作(创建/追加)
2013/04/21 Javascript
jQuery操作input值的各种方法总结
2013/11/21 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
PageSwitch插件实现100种不同图片切换效果
2015/07/28 Javascript
Javascript的表单验证-揭开正则表达式的面纱
2016/03/18 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
Vue列表页渲染优化详解
2017/07/24 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
2018/09/19 Javascript
jquery 回调操作实例分析【回调成功与回调失败的情况】
2019/09/27 jQuery
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
python批量替换多文件字符串问题详解
2018/04/22 Python
python使用requests模块实现爬取电影天堂最新电影信息
2019/04/03 Python
python GUI库图形界面开发之PyQt5 MDI(多文档窗口)QMidArea详细使用方法与实例
2020/03/05 Python
Python中bisect的用法及示例详解
2020/07/20 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
使用CSS3制作饼状旋转载入效果的实例
2015/06/23 HTML / CSS
Woolworth官网:澳洲第一大超市
2017/06/25 全球购物
单位人事专员介绍信
2014/01/11 职场文书
干部考核评语
2014/04/29 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
信息管理与信息系统专业求职信
2014/06/21 职场文书
八一建军节演讲稿
2014/09/10 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android