F2
G2
G6
F2
L7
墨者学院
关于 F2
图表示例
API 文档
使用教程
English
Gallery
半圆进度条
预测线
健康步数
Stats Card
Analytics Chart
Dashboard
金字塔形柱状图
Chart Transition
Apple Watch 健身记录
心率
图表交互
饼图选中交互
柱状图选中
折线图平移
柱状图平移
散点图平移缩放
曲线图的横向平移缩放
时间类型的平移缩放
平移快扫
折线图
基础折线图
基础折线图(带点)
曲线折线图(带点)
商品价格 7 年走势对比
某国女性结婚年龄走势
特性案例:实虚混合线图
实际收益和预期收益对比
某基金近一个月业绩走势
某黄金实时金价走势图
时序折线图过渡动画
Florida 近 10 年失业率
实时折线
层叠点线图
存在空值
连接空值数据
面积图
基础面积图
带负值面积图
区域图(存在空值)
带负值面积图(x 基线不为 0)
层叠面积图
百分比层叠面积图
美国、苏联核储备对比
渐变填充面积图
柱状图
基础柱状图
分组柱状图
层叠柱状图
百分比层叠柱状图
基础条形图
分组条形图
层叠条形图
区间柱状图
各专业毕业生收入范围
某基金近 4 季度资产变动
带负值的分组柱状图
2018年德国人口金字塔
中国五大高峰
带文本的层叠柱状图
新增用户来源
各品牌销售量对比
巧克力喜爱程度调查
全负值柱状图
带文本的分组柱状图
x 轴两边不留边距
渐变色柱状图
纹理柱状图
饼图
饼图
资产配置(环图)
玫瑰图
嵌套环图
环形进度条
我的月账单
带文本的饼图
带图例、文本的饼图
可点击的文本
带 iconfont 的饼图
带 iconfont、文本的饼图
手势操作下的饼图旋转
Election Donut
雷达图
雷达图
雷达面积图
投资能力评估
基金评估
点图
散点图
气泡图
支付平台使用量比对
股票图
蜡烛图
分时
日 K
功能组件
坐标轴-文本换行
坐标轴-文本旋转
坐标轴-label 回调
坐标轴-grid 样式
坐标轴-grid 回调
坐标轴-弧形网格线
坐标轴-iconfont
图例-水平居中布局
图例-自定义文本样式
图例-自定义带交互的图例
图例-marker 定制
图例-单选模式
图例-右上角图例
tooltip-自定义 HTML
tooltip-初始化显示 tooltip
tooltip-自定义样式
tooltip-带标题的 tooltip
tooltip-内容项垂直布局
tooltip-x 轴提示信息
guide-Arc
guide-Html
guide-Line
guide-Rect
guide-RegionFilter
guide-Tag
guide-Text
guide-带 iconfont 的辅助文本
guide-Point
其他图表
词云
矩形树图
仪表盘
双 y 轴
色块图
极坐标下的色块图
圆内占比
双 Y 轴分组柱状图
每日打卡记录
带动画的柱状图
双 Y 轴分组柱状图
源码
复制成功
复制失败
全屏
复制
运行
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> <meta name="chart-name" content="双 Y 轴分组柱状图"> <title>F2 图表组件库 - AntV</title> <link rel="stylesheet" href="https://gw.alipayobjects.com/os/rmsportal/YmDAMEQVbLJpVbKiRQVX.css" /> </head> <body> <script>/*Fixing iframe window.innerHeight 0 issue in Safari*/document.body.clientHeight;</script> <script src="https://gw.alipayobjects.com/os/antv/assets/f2/3.4.2/f2.min.js"></script> <script src="https://gw.alipayobjects.com/os/antv/assets/lib/jquery-3.2.1.min.js"></script> <!-- 在 PC 上模拟 touch 事件 --> <script src="https://gw.alipayobjects.com/os/rmsportal/NjNldKHIVQRozfbAOJUW.js"></script> <div class="chart-wrapper"> <canvas id="mountNode"></canvas> </div> <script> // ----- 自定义 shape ------ var Shape = F2.Shape; var Util = F2.Util; var Global = F2.Global; function getRectRange(points, step) { var xValues = []; var yValues = []; for (var i = 0, len = points.length; i < len; i++) { var point = points[i]; xValues.push(point.x - step); yValues.push(point.y); } var xMin = Math.min.apply(null, xValues); var yMin = Math.min.apply(null, yValues); var xMax = Math.max.apply(null, xValues); var yMax = Math.max.apply(null, yValues); return { x: xMin, y: yMin, width: xMax - xMin, height: yMax - yMin }; } // 左侧柱子 Shape.registerShape('interval', 'left', { draw: function draw(cfg, container) { var points = this.parsePoints(cfg.points); var style = Util.mix({ fill: cfg.color }, Global.shape.interval, cfg.style); var rectCfg = getRectRange(points, cfg.size); // cfg.size 对应 .size(25) return container.addShape('rect', { className: 'interval', attrs: Util.mix(rectCfg, style) }); } }); // 右侧柱子 Shape.registerShape('interval', 'right', { draw: function draw(cfg, container) { var points = this.parsePoints(cfg.points); var style = Util.mix({ fill: cfg.color }, Global.shape.interval, cfg.style); var rectCfg = getRectRange(points, -cfg.size / 2); // cfg.size 对应 .size(25 return container.addShape('rect', { className: 'interval', attrs: Util.mix(rectCfg, style) }); } }); // ------ 开始绘制 chart ------ var data = [{ genre: 'ant 牌黄油', domestic: 460000, international: 25000 }, { genre: 'ant 牌芝士', domestic: 425000, international: 30000 }, { genre: 'ant 牌牛奶', domestic: 310000, international: 15000 }, { genre: 'ant 牌奶昔', domestic: 270000, international: 40000 }]; var chart = new F2.Chart({ id: 'mountNode', pixelRatio: window.devicePixelRatio }); chart.source(data, { genre: { alias: '商品名称' // 列定义,定义该属性显示的别名 }, domestic: { alias: '内销额' }, international: { alias: '出口额' } }); chart.axis('international', { grid: null }); chart.interval().position('genre*domestic').shape('left').size(15); chart.interval().position('genre*international').color('#36B3C3').shape('right').size(15); chart.render(); </script> </body> </html>