G2
G2
G6
F2
L7
墨者学院
关于 G2
图表示例
API 文档
使用教程
English
折线图
基础折线图
双折线图
多折线图
其他折线图
条形图
分组条形图
堆叠条形图
基础条形图
柱状图
基础柱状图
分组柱状图
堆叠柱状图
直方图
饼图
环图
玫瑰图
基础饼图
嵌套饼图
点图
散点图
面积图
基础面积图
堆叠面积图
区间面积图
箱形图
箱型图
烛形图
烛形图
热力图
热力图
仪表盘
仪表盘
漏斗图
漏斗图
地图
地图
雷达图
雷达图
分面
分面
关系图
关系图
其他图表
其他
迷你图
组件使用
组件
基础柱状图
瀑布图
Waterfall Chart,瀑布图。瀑布图有助于理解依次引入正值或负值的累积效应。瀑布图也被称为飞行砖图或马里奥图,因为看起来像悬挂在空中的砖头。
源码
复制成功
复制失败
全屏
复制
运行
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,height=device-height"> <title>瀑布图</title> <style>::-webkit-scrollbar{display:none;}html,body{overflow:hidden;height:100%;margin:0;}</style> </head> <body> <div id="mountNode"></div> <script>/*Fixing iframe window.innerHeight 0 issue in Safari*/document.body.clientHeight;</script> <script src="https://gw.alipayobjects.com/os/antv/pkg/_antv.g2-3.5.1/dist/g2.min.js"></script> <script src="https://gw.alipayobjects.com/os/antv/pkg/_antv.data-set-0.10.1/dist/data-set.min.js"></script> <script> var _G = G2, Util = _G.Util, Shape = _G.Shape, Global = _G.Global; function getRectPath(points) { var path = []; for (var i = 0; i < points.length; i++) { var point = points[i]; if (point) { var action = i === 0 ? 'M' : 'L'; path.push([action, point.x, point.y]); } } var first = points[0]; path.push(['L', first.x, first.y]); path.push(['z']); return path; } function getFillAttrs(cfg) { var defaultAttrs = Global.shape.interval; var attrs = Util.mix({}, defaultAttrs, cfg.style, { fill: cfg.color, stroke: cfg.color, fillOpacity: cfg.opacity }); return attrs; } Shape.registerShape('interval', 'waterfall', { draw: function draw(cfg, container) { var attrs = getFillAttrs(cfg); var rectPath = getRectPath(cfg.points); rectPath = this.parsePath(rectPath); var interval = container.addShape('path', { attrs: Util.mix(attrs, { path: rectPath }) }); if (cfg.nextPoints) { var linkPath = [['M', cfg.points[2].x, cfg.points[2].y], ['L', cfg.nextPoints[0].x, cfg.nextPoints[0].y]]; if (cfg.nextPoints[0].y === 0) { linkPath[1] = ['L', cfg.nextPoints[1].x, cfg.nextPoints[1].y]; } linkPath = this.parsePath(linkPath); container.addShape('path', { attrs: { path: linkPath, stroke: '#8c8c8c', lineDash: [4, 2] } }); } return interval; } }); var data = [{ type: '日用品', money: 300 }, { type: '伙食费', money: 900 }, { type: '交通费', money: 200 }, { type: '水电费', money: 300 }, { type: '房租', money: 1200 }, { type: '商场消费', money: 1000 }, { type: '应酬交际', money: 2000 }, { type: '总费用', money: 5900 }]; for (var i = 0; i < data.length; i++) { var item = data[i]; if (i > 0 && i < data.length - 1) { if (Util.isArray(data[i - 1].money)) { item.money = [data[i - 1].money[1], item.money + data[i - 1].money[1]]; } else { item.money = [data[i - 1].money, item.money + data[i - 1].money]; } } } var chart = new G2.Chart({ container: 'mountNode', forceFit: true, height: window.innerHeight }); chart.source(data); // 自定义图例 chart.legend({ custom: true, clickable: false, items: [{ value: '各项花销', marker: { symbol: 'square', fill: '#1890FF', radius: 5 } }, { value: '总费用', marker: { symbol: 'square', fill: '#8c8c8c', radius: 5 } }] }); chart.interval().position('type*money').color('type', function(type) { if (type === '总费用') { return '#8c8c8c'; } return '#1890FF'; }).tooltip('type*money', function(type, money) { if (Util.isArray(money)) { return { name: '生活费', value: money[1] - money[0] }; } return { name: '生活费', value: money }; }).shape('waterfall'); chart.render(); </script> </body> </html>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,height=device-height"> <title>瀑布图</title> <style>::-webkit-scrollbar{display:none;}html,body{overflow:hidden;height:100%;margin:0;}</style> </head> <body style="background: #1f1f1f;"> <div id="mountNode"></div> <script>/*Fixing iframe window.innerHeight 0 issue in Safari*/document.body.clientHeight;</script> <script src="https://gw.alipayobjects.com/os/antv/pkg/_antv.g2-3.5.1/dist/g2.min.js"></script> <script src="https://gw.alipayobjects.com/os/antv/pkg/_antv.data-set-0.10.1/dist/data-set.min.js"></script> <script>G2.Global.setTheme('dark');</script> <script> var _G = G2, Util = _G.Util, Shape = _G.Shape, Global = _G.Global; function getRectPath(points) { var path = []; for (var i = 0; i < points.length; i++) { var point = points[i]; if (point) { var action = i === 0 ? 'M' : 'L'; path.push([action, point.x, point.y]); } } var first = points[0]; path.push(['L', first.x, first.y]); path.push(['z']); return path; } function getFillAttrs(cfg) { var defaultAttrs = Global.shape.interval; var attrs = Util.mix({}, defaultAttrs, cfg.style, { fill: cfg.color, stroke: cfg.color, fillOpacity: cfg.opacity }); return attrs; } Shape.registerShape('interval', 'waterfall', { draw: function draw(cfg, container) { var attrs = getFillAttrs(cfg); var rectPath = getRectPath(cfg.points); rectPath = this.parsePath(rectPath); var interval = container.addShape('path', { attrs: Util.mix(attrs, { path: rectPath }) }); if (cfg.nextPoints) { var linkPath = [['M', cfg.points[2].x, cfg.points[2].y], ['L', cfg.nextPoints[0].x, cfg.nextPoints[0].y]]; if (cfg.nextPoints[0].y === 0) { linkPath[1] = ['L', cfg.nextPoints[1].x, cfg.nextPoints[1].y]; } linkPath = this.parsePath(linkPath); container.addShape('path', { attrs: { path: linkPath, stroke: '#8c8c8c', lineDash: [4, 2] } }); } return interval; } }); var data = [{ type: '日用品', money: 300 }, { type: '伙食费', money: 900 }, { type: '交通费', money: 200 }, { type: '水电费', money: 300 }, { type: '房租', money: 1200 }, { type: '商场消费', money: 1000 }, { type: '应酬交际', money: 2000 }, { type: '总费用', money: 5900 }]; for (var i = 0; i < data.length; i++) { var item = data[i]; if (i > 0 && i < data.length - 1) { if (Util.isArray(data[i - 1].money)) { item.money = [data[i - 1].money[1], item.money + data[i - 1].money[1]]; } else { item.money = [data[i - 1].money, item.money + data[i - 1].money]; } } } var chart = new G2.Chart({ container: 'mountNode', forceFit: true, height: window.innerHeight }); chart.source(data); // 自定义图例 chart.legend({ custom: true, clickable: false, items: [{ value: '各项花销', marker: { symbol: 'square', fill: '#1890FF', radius: 5 } }, { value: '总费用', marker: { symbol: 'square', fill: '#8c8c8c', radius: 5 } }] }); chart.interval().position('type*money').color('type', function(type) { if (type === '总费用') { return '#8c8c8c'; } return '#1890FF'; }).tooltip('type*money', function(type, money) { if (Util.isArray(money)) { return { name: '生活费', value: money[1] - money[0] }; } return { name: '生活费', value: money }; }).shape('waterfall'); chart.render(); </script> </body> </html>
图表简介
Waterfall Chart,瀑布图。瀑布图有助于理解依次引入正值或负值的累积效应。瀑布图也被称为飞行砖图或马里奥图,因为看起来像悬挂在空中的砖头。
图表用法
瀑布图通常用于了解初始值如何受到一系列中间正值或负值的影响。
关联图表
条形图
相关链接
BizCharts
Viser