logo

F2

  • 教程
  • 组件API
  • 图表示例
  • 所有产品antv logo arrow
  • 5.10.0
  • 顶层 API - F2
  • 组件 - Component
  • 画布 - Canvas
  • 时间轴 - Timeline
  • 图表 - Chart
    • 图表 - Chart
    • 几何标记 - Geometry
    • 线 - Line
    • 区间 - Interval
    • 点 - Point
    • 面积 - Area
    • K 线图 - Candlestick
    • 坐标轴 - Axis
    • 图例 - Legend
    • 提示 - tooltip
    • 饼图标签 - PieLabel
    • 标注 - Guide
      • 标签标注 - TagGuide
      • 点标注 - PointGuide
      • 辅助线标注 - LineGuide
      • 矩形标注 - RectGuide
      • 图片标注 - ImageGuide
      • 文本标注 - TextGuide
      • 标注 - Guide
    • 滚动条 - ScrollBar
    • 放大镜 - Magnifier
  • 仪表盘 - Gauge
  • 旭日图 - Sunburst
  • 矩形树图 - Treemap

仪表盘 - Gauge

上一篇
放大镜 - Magnifier
下一篇
旭日图 - Sunburst

资源

Ant Design
Galacea Effects
Umi-React 应用开发框架
Dumi-组件/文档研发工具
ahooks-React Hooks 库
WeaveFox-前端智能研发

社区

体验科技专栏
seeconfSEE Conf-蚂蚁体验科技大会
weavefoxWeaveFox-智能研发技术社区

帮助

GitHub
StackOverflow

more products更多产品

Ant DesignAnt Design-企业级 UI 设计语言
yuque语雀-知识创作与分享工具
EggEgg-企业级 Node 开发框架
kitchenKitchen-Sketch 工具集
GalaceanGalacean-互动图形解决方案
weavefoxWeaveFox-前端智能研发
© Copyright 2026 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

Gauge 组件用于显示进度或完成度的可视化组件,常用于展示关键绩效指标(KPI)。

何时使用

  • 需要显示单个指标的完成进度
  • 展示目标值与实际值的对比
  • 显示百分比或比例数据
  • 需要仪表盘样式的数据展示

TypeScript 类型定义

interface Point {
x: number;
y: number;
}
interface Tick {
/** 刻度值(弧度) */
tickValue: number;
/** 刻度起点坐标 */
start: Point;
/** 刻度终点坐标 */
end: Point;
}
interface GaugeProps {
/** 起始角度(弧度),默认 Math.PI */
startAngle?: number;
/** 结束角度(弧度),默认 Math.PI * 2 */
endAngle?: number;
/** 刻度数量,默认 5 */
tickCount?: number;
/** 刻度偏移量,相对于圆心,支持 px 单位 */
tickOffset?: number | string;
/** 刻度长度,支持 px 单位 */
tickLength?: number | string;
/** 仪表盘半径,支持像素值(如 '100px')或数字 */
r?: number | string;
/** 内圆半径,默认 0 */
r0?: number | string;
/** 仪表盘中心点坐标 */
center?: Point;
/** 刻度数组(自动生成,也可手动传入) */
ticks?: Tick[];
/** 进度值(0-1),必填 */
percent: number;
}

Usage

import { Canvas, Gauge } from '@antv/f2';
const data = { percent: 0.75 };
<Canvas context={context} pixelRatio={window.devicePixelRatio}>
<Gauge
center={{ x: 150, y: 150 }}
startAngle={Math.PI}
endAngle={Math.PI * 2}
percent={0.75}
r="100px"
/>
</Canvas>

Props

基础配置

属性类型默认值说明
percentnumber-进度值,范围 0-1,必填
startAnglenumberMath.PI起始角度(弧度)
endAnglenumberMath.PI * 2结束角度(弧度)
center{ x: number, y: number }{ x: 150, y: 150 }仪表盘中心点坐标

尺寸配置

属性类型默认值说明
rnumber | string100仪表盘半径,支持像素值(如 '100px')或数字
r0number | string0内圆半径

刻度配置

属性类型默认值说明
tickCountnumber5刻度数量
tickOffsetnumber | string-20px刻度偏移量,相对于圆心
tickLengthnumber | string10px刻度长度
ticksTick[]-刻度数组(通常自动生成)

用法示例

基础仪表盘

最简单的仪表盘配置:

<Canvas context={context}>
<Gauge percent={0.6} />
</Canvas>

自定义角度范围

设置仪表盘的起始和结束角度:

<Canvas context={context}>
<Gauge
startAngle={Math.PI * 0.8}
endAngle={Math.PI * 2.2}
percent={0.75}
/>
</Canvas>

半圆仪表盘

创建半圆形的仪表盘:

<Canvas context={context}>
<Gauge
center={{ x: 150, y: 200 }}
startAngle={Math.PI}
endAngle={Math.PI * 2}
percent={0.85}
r="120px"
/>
</Canvas>

自定义刻度

调整刻度的数量、位置和长度:

<Canvas context={context}>
<Gauge
percent={0.5}
tickCount={10}
tickOffset="-30px"
tickLength="15px"
r="100px"
/>
</Canvas>

不同尺寸的仪表盘

调整仪表盘的大小和位置:

<Canvas context={context}>
<Gauge
center={{ x: 200, y: 200 }}
percent={0.7}
r="150px"
r0="50px"
/>
</Canvas>

动态更新进度

通过状态更新仪表盘进度:

function GaugeChart() {
const [percent, setPercent] = useState(0.3);
return (
<Canvas context={context}>
<Gauge percent={percent} />
<button onClick={() => setPercent(Math.min(1, percent + 0.1))}>
增加
</button>
</Canvas>
)
}

环形仪表盘

创建带内圆的环形仪表盘:

<Canvas context={context}>
<Gauge
percent={0.65}
r="100px"
r0="80px"
tickCount={8}
/>
</Canvas>

常见问题

仪表盘不显示

确保设置了 percent 属性,这是必填项:

// 错误:缺少 percent
<Gauge startAngle={Math.PI} />
// 正确:包含 percent
<Gauge percent={0.6} startAngle={Math.PI} />

进度值超出范围

percent 的值必须在 0-1 之间,超出范围可能导致显示异常:

// 错误:percent 超出范围
<Gauge percent={1.5} />
// 正确:percent 在 0-1 之间
<Gauge percent={0.85} />

角度计算错误

角度使用弧度制,不是角度制:

// 错误:使用角度制
<Gauge startAngle={180} endAngle={360} />
// 正确:使用弧度制
<Gauge startAngle={Math.PI} endAngle={Math.PI * 2} />
// 常用角度转换
// 180° = Math.PI
// 270° = Math.PI * 1.5
// 360° = Math.PI * 2

刻度位置不合适

通过 tickOffset 和 tickLength 调整刻度位置:

<Gauge
percent={0.7}
tickOffset="-40px" // 刻度距离圆心的偏移
tickLength="20px" // 刻度线长度
/>

仪表盘显示不全

检查 Canvas 容器大小是否足够容纳仪表盘:

<Canvas
context={context}
width={300}
height={300}
pixelRatio={window.devicePixelRatio}
>
<Gauge
center={{ x: 150, y: 150 }}
percent={0.75}
r="100px"
/>
</Canvas>

注意事项

  1. percent 必填:必须指定进度值(0-1 之间),否则仪表盘无法显示
  2. 角度使用弧度制:startAngle 和 endAngle 使用弧度,不是角度
  3. center 需要在 Canvas 范围内:确保中心点坐标在 Canvas 可见区域内
  4. r 和 r0 的关系:r 是外圆半径,r0 是内圆半径(用于创建环形效果)
  5. 刻度自动生成:ticks 数组通常自动生成,无需手动传入