gauge
上一篇
density
下一篇
heatmap
Loading...
gauge 用于创建仪表盘,它是一种常见的可视化图表,用于展示数据的进度、比例或比较情况。
典型应用场景:
import { Chart } from '@antv/g2';const chart = new Chart({container: 'container',});chart.options({type: 'gauge', // 设置图表的类型为仪表盘data: {value: {target: 120, // 仪表盘的目标值total: 400, // 仪表盘的总值name: 'score', // 仪表盘数据的名称},},});chart.render();
data定义仪表盘的数值、目标值及分类信息,通过数据绑定驱动表盘指针位置、颜色映射及多仪表分面展示。
| 属性 | 描述 | 类型 | 默认值 | 必选 | 
|---|---|---|---|---|
| target | 设置仪表盘指针的目标值 | number | - | |
| total | 设置仪表盘刻度的最大范围值 | number | - | |
| percent | 设置仪表盘指针指向的百分比(配置 percent时,target、total值会失效,thresholds请设置在合理区间,否则会造成渲染错误 ) | number | - | |
| thresholds | 设置仪表盘刻度阈值区间 | number[] | - | 
更多的data配置,可以查查看 data 介绍页面。
配置 gauge 标记的视觉通道,定义数据字段与视觉属性之间映射关系的重要配置,它决定了数据如何转化为视觉表现。
更多的encode配置,可以查查看 encode 介绍页面。
scale用于定义数据如何映射到视觉属性(如颜色、大小、形状等)。
颜色的分布与 data 中的数据相关。这里的颜色可以设置为渐变色,用于配置渐变色的仪表盘。
target或者percent,color参数range可以由两个颜色参数组成,在仪表盘刻度会由这两个颜色将会将仪表盘刻度分成两段import { Chart } from '@antv/g2';const chart = new Chart({container: 'container',});chart.options({type: 'gauge',data: {value: {target: 120,total: 400,name: 'score',},},scale: {color: { range: ['#FAAD14', 'green'] },},});chart.render();
thresholds,color参数range的颜色与thresholds的长度一致,仪表盘刻度会被thresholds中的值分段,并填充scale参数color对应位置的色彩import { Chart } from '@antv/g2';const chart = new Chart({container: 'container',});chart.options({type: 'gauge',data: {value: {target: 120,total: 400,name: 'score',thresholds: [100, 200, 400],},},scale: {color: { range: ['#F4664A', '#FAAD14', 'green'] },},});chart.render();
更多的scale配置,可以查查看 scale 介绍页面。
style 用于设置图表元素的外观样式,包括填充颜色、边框样式、阴影效果等。
复合图形标记需要通过不同的前缀来区分图形的配置。
通过 arc 前缀配置仪表盘圆弧的样式。
| 属性 | 描述 | 类型 | 默认值 | 必选 | 
|---|---|---|---|---|
| arcShape | 仪表盘圆弧形状 | 'rect'|'hollow'|'round' | 'rect' | |
| arcFill | 仪表盘圆弧填充颜色 | string | (datum, index, data) => string | - | |
| arcFillOpacity | 仪表盘圆弧填充透明度 | number | (datum, index, data) => number | - | |
| arcStroke | 仪表盘圆弧描边颜色 | string | (datum, index, data) => string | - | |
| arcStrokeOpacity | 仪表盘圆弧描边透明度 | number | (datum, index, data) => number | - | |
| arcLineHeight | 仪表盘圆弧行高 | number | (datum, index, data) => number | - | |
| arcLineWidth | 仪表盘圆弧描边宽度 | number | (datum, index, data) => number | - | |
| arcLineDash | 仪表盘圆弧虚线配置 | [number,number] | (datum, index, data) => [number , number] | - | |
| arcOpacity | 仪表盘圆弧整体透明度 | number | (datum, index, data) => number | - | |
| arcShadowColor | 仪表盘圆弧阴影颜色 | string | (datum, index, data) => string | - | |
| arcShadowBlur | 仪表盘圆弧阴影模糊系数 | number | (datum, index, data) => number | - | |
| arcShadowOffsetX | 仪表盘圆弧阴影水平偏移 | number | (datum, index, data) => number | - | |
| arcShadowOffsetY | 仪表盘圆弧阴影垂直偏移 | number | (datum, index, data) => number | - | |
| arcCursor | 仪表盘圆弧鼠标样式 | string | (datum, index, data) => string | default | 
通过 pin 前缀配置仪表盘指针轴心的样式。
| 属性 | 描述 | 类型 | 默认值 | 必选 | 
|---|---|---|---|---|
| pinR | 仪表盘指针轴心半径大小 | number | (datum, index, data) => number | 10 | |
| pinFill | 仪表盘指针轴心填充颜色 | string | (datum, index, data) => string | '#fff' | |
| pinFillOpacity | 仪表盘指针轴心填充透明度 | number | (datum, index, data) => number | - | |
| pinStroke | 仪表盘指针轴心描边颜色 | string | (datum, index, data) => string | - | |
| pinStrokeOpacity | 仪表盘指针轴心描边透明度 | number | (datum, index, data) => number | - | |
| pinLineHeight | 仪表盘指针轴心行高 | number | (datum, index, data) => number | - | |
| pinLineWidth | 仪表盘指针轴心描边宽度 | number | (datum, index, data) => number | - | |
| pinLineDash | 仪表盘指针轴心虚线配置 | [number,number] | (datum, index, data) => [number , number] | - | |
| pinOpacity | 仪表盘指针轴心整体透明度 | number | (datum, index, data) => number | - | |
| pinShadowColor | 仪表盘指针轴心阴影颜色 | string | (datum, index, data) => string | - | |
| pinShadowBlur | 仪表盘指针轴心阴影模糊系数 | number | (datum, index, data) => number | - | |
| pinShadowOffsetX | 仪表盘指针轴心阴影水平偏移 | number | (datum, index, data) => number | - | |
| pinShadowOffsetY | 仪表盘指针轴心阴影垂直偏移 | number | (datum, index, data) => number | - | |
| pinCursor | 仪表盘指针轴心鼠标样式 | string | (datum, index, data) => string | default | 
通过 pointer 前缀配置仪表盘指针的样式。
| 属性 | 描述 | 类型 | 默认值 | 必选 | 
|---|---|---|---|---|
| pointerShape | 仪表盘指针形状 | 'line'|(points, value, coordinate, theme) => DisplayObject | 'line' | |
| pointerStroke | 仪表盘指针描边颜色 | string | (datum, index, data) => string | - | |
| pointerStrokeOpacity | 仪表盘指针描边透明度 | number | (datum, index, data) => number | - | |
| pointerLineWidth | 仪表盘指针线宽 | number | (datum, index, data) => number | - | |
| pointerLineDash | 仪表盘指针虚线配置 | [number,number] | (datum, index, data) => [number , number] | - | |
| pointerOpacity | 仪表盘指针整体透明度 | number | (datum, index, data) => number | - | |
| pointerShadowColor | 仪表盘指针阴影颜色 | string | (datum, index, data) => string | - | |
| pointerShadowBlur | 仪表盘指针阴影模糊系数 | number | (datum, index, data) => number | - | |
| pointerShadowOffsetX | 仪表盘指针阴影水平偏移 | number | (datum, index, data) => number | - | |
| pointerShadowOffsetY | 仪表盘指针阴影垂直偏移 | number | (datum, index, data) => number | - | |
| pointerCursor | 仪表盘指针鼠标样式 | string | (datum, index, data) => string | default | 
通过 text 前缀配置仪表盘指示文本的样式。
| 属性 | 描述 | 类型 | 默认值 | 必选 | 
|---|---|---|---|---|
| textContent | 设置仪表盘中心指示文本内容 | string | - | |
| textX | 仪表盘中心指示文本 x 方向上的偏移量,可以设置为具体数值,也可以设置百分比 | number | string | 50% | |
| textY | 仪表盘中心指示文本 y 方向上的偏移量 ,可以设置为具体数值,也可以设置百分比 | number | string | 60% | |
| textFontSize | 仪表盘指示文本文字大小 | number | (datum, index, data) => number | 20 | |
| textFontFamily | 仪表盘指示文本字体 | string | (datum, index, data) => string | - | |
| textFontWeight | 仪表盘指示文本字重 | number | (datum, index, data) => number | 800 | |
| textTextAlign | 仪表盘指示文本对齐方式 | center|end|left|right|start | center | |
| textTextBaseline | 仪表盘指示文本基线对齐 | top|middle|bottom|alphabetic|hanging | middle | |
| textFill | 仪表盘指示文本颜色 | string | (datum, index, data) => string | #888 | |
| textFillOpacity | 仪表盘指示文本透明度 | number | (datum, index, data) => number | - | |
| textStroke | 仪表盘指示文本描边色 | string | (datum, index, data) => string | - | |
| textStrokeOpacity | 仪表盘指示文本描边透明度 | number | (datum, index, data) => number | - | |
| textLineHeight | 仪表盘指示文本行高 | number | (datum, index, data) => number | - | |
| textLineWidth | 仪表盘指示文本描边宽度 | number | (datum, index, data) => number | - | |
| textLineDash | 仪表盘指示文本虚线配置 | [number,number] | (datum, index, data) => [number , number] | - | |
| textOpacity | 仪表盘指示文本整体透明度 | number | (datum, index, data) => number | - | |
| textShadowColor | 仪表盘指示文本阴影颜色 | string | (datum, index, data) => string | - | |
| textShadowBlur | 仪表盘指示文本阴影模糊 | number | (datum, index, data) => number | - | |
| textShadowOffsetX | 仪表盘指示文本阴影水平偏移 | number | (datum, index, data) => number | - | |
| textShadowOffsetY | 仪表盘指示文本阴影垂直偏移 | number | (datum, index, data) => number | - | |
| textCursor | 仪表盘指示文本鼠标样式 | string | (datum, index, data) => string | default | 
import { Chart } from '@antv/g2';const chart = new Chart({container: 'container',});chart.options({type: 'gauge',data: {value: {target: 159,total: 400,name: 'score',// thresholds: [200, 400],},},scale: {color: {range: ['l(0):0:#62CFF4 1:#2C67F2', 'l(0):0:#2C67F2 1:#00008B'],},y: {range: [1, -0.5],},},style: {// 配置仪表盘指示文本样式textContent: (target, total) => `占比:${(target / total) * 100}%`,textFill: '#000',textFontSize: 24,textfontWeight: 300,textX: '35%',textY: '75%',// 配置仪表盘指针样式pointerStroke: '#c5c5c5',pointershadowColor: '#333333',pointershadowBlur: 10,pointershadowOffsetX: 5,pointershadowOffsetY: 5,// 配置仪表盘指针轴心样式pinStroke: '#d5d5d5',pinFill: '#d5d5d5',pinlinewidth: 6,pinshadowColor: '#333333',pinshadowBlur: 30,pinshadowOffsetX: 5,pinshadowOffsetY: 5,// 配置仪表盘圆弧样式arcLineWidth: 2,arcStroke: '#fff',arcshadowColor: '#333333',arcshadowBlur: 30,arcshadowOffsetX: 5,arcshadowOffsetY: 5,},legend: false,});chart.render();
更多的style配置,可以查看 style 介绍页面。
尝试一下:
import { Chart } from '@antv/g2';const chart = new Chart({container: 'container',height: 350,});chart.options({type: 'gauge',data: {value: { target: 159, total: 400, name: 'score', thresholds: [200, 400] },},scale: {color: { range: ['l(0):0:#37b38e 1:#D9C652', 'l(0):0:#D9C652 1:#f96e3e'] },},style: {textContent: (target, total) => `得分:${target}占比:${(target / total) * 100}%`,},legend: false,});chart.render();
import { Chart } from '@antv/g2';import { Path } from '@antv/g';const chart = new Chart({ container: 'container' });function getOrigin(points) {if (points.length === 1) return points[0];const [[x0, y0, z0 = 0], [x2, y2, z2 = 0]] = points;return [(x0 + x2) / 2, (y0 + y2) / 2, (z0 + z2) / 2];}// 自定义指针形状const customShape = (style) => {return (points, value, coordinate, theme) => {// 获取几何点中心坐标const [x, y] = getOrigin(points);const [cx, cy] = coordinate.getCenter();// 计算指针方向角度const angle = Math.atan2(y - cy, x - cx);const length = 100; // 指针长度const width = 8; // 指针底部宽度// 构造指针三角形路径return new Path({style: {d: [['M', cx + Math.cos(angle) * length, cy + Math.sin(angle) * length], // 顶点['L',cx + Math.cos(angle + Math.PI / 2) * width,cy + Math.sin(angle + Math.PI / 2) * width,], // 底部左点['L',cx + Math.cos(angle - Math.PI / 2) * width,cy + Math.sin(angle - Math.PI / 2) * width,], // 底部右点['Z'], // 闭合路径],fill: '#30BF78', // 填充色},});};};chart.options({type: 'gauge',data: {value: {target: 159,total: 424,name: 'score',},},style: {pointerShape: customShape,pinShape: false,textContent: (target, total) => {return `得分:${target}\n占比:${(target / total) * 100}%`;},},});chart.render();