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 相关文章推荐
js兼容标准的表格变色效果
Jun 28 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
Mar 04 Javascript
Spring mvc 接收json对象
Dec 10 Javascript
jQuery 操作input中radio的技巧
Jul 18 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
Dec 25 Javascript
微信小程序实现图片上传、删除和预览功能的方法
Dec 18 Javascript
node 使用 async 控制并发的方法
May 07 Javascript
webstrom Debug 调试vue项目的方法步骤
Jul 17 Javascript
Vuejs监听vuex中值的变化的方法示例
Dec 02 Javascript
js中实例与对象的区别讲解
Jan 21 Javascript
Angular短信模板校验代码
Sep 23 Javascript
CocosCreator入门教程之网络通信
Apr 16 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
Zerg建筑一览
2020/03/14 星际争霸
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
在PHP中养成7个面向对象的好习惯
2010/01/28 PHP
用php来改写404错误页让你的页面更友好
2013/01/24 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
PHP获取一段文本显示点阵宽度和高度的方法
2015/03/12 PHP
javascript 面向对象编程基础 多态
2009/08/21 Javascript
用js实现trim()的解决办法
2013/04/16 Javascript
jquery ajax的success回调函数中实现按钮置灰倒计时
2013/11/19 Javascript
Jquery中国地图热点效果-鼠标经过弹出提示层信息的简单实例
2014/02/12 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
js 获取元素在页面上的偏移量的方法汇总
2015/04/13 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
JavaScript生成二维码图片小结
2015/12/27 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
ES6中的数组扩展方法
2016/08/26 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
python版本的仿windows计划任务工具
2018/04/30 Python
Python中常用的内置方法
2019/01/28 Python
keras绘制acc和loss曲线图实例
2020/06/15 Python
浅谈three.js中的needsUpdate的应用
2012/11/12 HTML / CSS
HTML5 canvas基本绘图之填充样式实现
2016/06/27 HTML / CSS
html5启动原生APP总结
2020/07/03 HTML / CSS
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
市场营销专科应届生求职信
2013/11/24 职场文书
个人优缺点自我评价
2014/01/27 职场文书
应届毕业生如何写求职信
2014/02/16 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
小学生期末评语大全
2014/04/21 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
Nginx的rewrite模块详解
2021/03/31 Servers