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 相关文章推荐
JavaScript DOM 添加事件
Feb 14 Javascript
Dom 结点创建 基础知识
Oct 01 Javascript
node.js中的fs.fstatSync方法使用说明
Dec 15 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
Dec 29 Javascript
浅析JavaScript动画
Jun 10 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
Dec 05 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
Mar 06 Javascript
Puppeteer环境搭建的详细步骤
Sep 21 Javascript
webpack结合express实现自动刷新的方法
May 07 Javascript
在vue中阻止浏览器后退的实例
Nov 06 Javascript
JS Generator 函数的含义与用法实例总结
Apr 08 Javascript
原生JS实现汇率转换功能代码实例
May 13 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 中dirname(_file_)讲解
2007/03/18 PHP
PHP之变量、常量学习笔记
2008/03/27 PHP
PHP 编程的 5个良好习惯
2009/02/20 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2019/03/30 PHP
php自定义排序uasort函数示例【二维数组按指定键值排序】
2019/06/19 PHP
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
Javascript匿名函数的一种应用 代码封装
2010/06/27 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
JavaScript检查弹出窗口是否被阻拦的方法技巧
2015/03/13 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
轻松实现javascript图片轮播特效
2016/01/13 Javascript
XML、HTML、CSS与JS的区别整理
2016/02/18 Javascript
JavaScript模拟鼠标右键菜单效果
2020/12/08 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
Vuex之理解Getters的用法实例
2017/04/19 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
这15个Vue指令,让你的项目开发爽到爆
2019/10/11 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
JavaScript实现好看的跟随彩色气泡效果
2020/02/06 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
Flask框架工厂函数用法实例分析
2019/05/25 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
Django实现任意文件上传(最简单的方法)
2020/06/03 Python
荷兰皇家航空公司中国官网:KLM中国
2017/12/13 全球购物
美国修容界大佬创建的个人美妆品牌:Kevyn Aucoin Beauty
2018/12/12 全球购物
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
警察群众路线整改措施
2014/09/26 职场文书
政府个人对照检查材料思想汇报
2014/10/08 职场文书
股权转让协议范本
2014/12/07 职场文书
盗窃案辩护词
2015/05/21 职场文书