logo

G2

  • 文档
  • 图表介绍
  • API
  • 图表示例
  • 主题
  • 周边生态
  • 所有产品antv logo arrow
  • 5.3.3
  • 快速上手
  • 简介
    • 什么是 G2
    • 在前端框架中使用
    • Spec 和 API
  • 核心概念
    • 图表(Chart)
      • G2 图表组成
      • 如何使用图表
    • 标记(Mark)
      • 概览
      • area
      • box
      • boxplot
      • cell
      • chord
      • density
      • gauge
      • heatmap
      • image
      • interval
      • line
      • lineX
      • lineY
      • link
      • liquid
      • sunburst
      • point
      • polygon
      • range
      • rangeX
      • rangeY
      • rect
      • shape
      • text
      • vector
      • wordCloud
    • 视图(View)
    • 数据(Data)
      • 概览
      • custom
      • ema
      • fetch
      • filter
      • fold
      • inline
      • join
      • kde
      • log
      • map
      • pick
      • rename
      • slice
      • sort
      • sortBy
    • 编码(Encode)
    • 比例尺(Scale)
      • 概览
      • band
      • linear
      • log
      • ordinal
      • point
      • quantile
      • quantize
      • sqrt
      • threshold
      • time
      • pow
    • 转换(Transform)
      • 概览
      • bin
      • binX
      • diffY
      • dodgeX
      • flexX
      • group
      • groupColor
      • groupX
      • groupY
      • jitter
      • jitterX
      • jitterY
      • normalizeY
      • pack
      • sample
      • select
      • selectX
      • selectY
      • sortColor
      • sortX
      • sortY
      • stackEnter
      • stackY
      • symmetryY
    • 坐标系(Coordinate)
      • 概览
      • fisheye
      • parallel
      • polar
      • theta
      • transpose
      • radial
      • cartesian3D
      • helix
    • 样式(Style)
    • 动画(Animate)
      • 概览
      • fadeIn
      • fadeOut
      • growInX
      • growInY
      • morphing
      • pathIn
      • scaleInX
      • scaleInY
      • scaleOutX
      • scaleOutY
      • waveIn
      • zoomIn
      • zoomOut
    • 状态(State)
    • 交互(Interaction)
      • 概览
      • brushAxisHighlight
      • brushHighlight
      • brushXHighlight
      • brushYHighlight
      • brushFilter
      • brushXFilter
      • brushYFilter
      • chartIndex
      • elementHighlight
      • elementHighlightByColor
      • elementHighlightByX
      • elementSelect
      • elementSelectByColor
      • elementSelectByX
      • fisheye
      • legendFilter
      • legendHighlight
      • poptip
      • scrollbarFilter
      • sliderFilter
    • 复合(Composition)
      • 概览
      • facetCircle
      • facetRect
      • repeatMatrix
      • spaceFlex
      • spaceLayer
      • timingKeyframe
    • 主题(Theme)
      • 概览
      • academy
      • classic
      • classicDark
    • 事件(Event)
    • 颜色映射(Color)
  • 图表 API
  • 图表组件
    • 标题(Title)
    • 坐标轴(Axis)
    • 图例(Legend)
    • 滚动条(Scrollbar)
    • 缩略轴(Slider)
    • 提示信息(Tooltip)
    • 数据标签(Label)
  • 进阶主题
    • 关系图(Graph)
      • forceGraph
      • pack
      • sankey
      • tree
      • treemap
    • 地图(Geo)
      • geoPath
      • geoView
    • 3D 图表(3D Chart)
      • 绘制 3D 图表
      • point3D
      • line3D
      • interval3D
      • surface3D
    • 插件扩展(Plugin)
      • renderer
      • rough
      • lottie
      • a11y
    • 按需打包
    • 设置纹理
    • 服务端渲染(SSR)
    • Spec 函数表达式支持 (5.3.0 支持)
  • 版本特性
    • 新版本特性
    • v4 升级 v5 指南
  • 常见问题 FAQ

样式(Style)

上一篇
helix
下一篇
概览

Resources

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

社区

体验科技专栏
seeconfSEE Conf-蚂蚁体验科技大会

帮助

GitHub
StackOverflow

more products更多产品

Ant DesignAnt Design-企业级 UI 设计语言
yuque语雀-知识创作与分享工具
EggEgg-企业级 Node 开发框架
kitchenKitchen-Sketch 工具集
GalaceanGalacean-互动图形解决方案
xtech蚂蚁体验科技
© Copyright 2025 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

G2 中样式(Style) 主要用来控制标记和视图的视觉样式。

配置方式

标记可以设置自己的样式,也可以设置视图的样式:

({
type: 'interval',
style: {
// 自己的样式
stroke: 'black',
strokeWidth: 2,
},
viewStyle: {
// 视图的样式
viewFill: 'red',
contentFill: 'yellow',
},
});
// API
// 第一种方式
chart
.interval()
.style('stroke', 'black')
.style('strokeWidth', 2)
.viewStyle('viewFill', 'red')
.viewStyle('contentFill', 'yellow');
// 第二种方式
chart
.interval()
.style({
stroke: 'black',
strokeWidth: 2,
})
.viewStyle({
viewFill: 'red',
contentFill: 'yellow',
});

视图可以设置自己的样式:

({
type: 'view',
style: {
viewFill: 'red',
contentFill: 'yellow',
},
});
// API
// 第一种方式
chart.style('viewFill', 'red').style('contentFill', 'yellow');
// 第二种方式
chart.style({
viewFill: 'red',
contentFill: 'yellow',
});

标记样式

标记的视觉属性除了可以通过 mark.encode 去设置之外,还可以通过 mark.style 去设置。两者的区别主要有两点:

  • mark.encode 设置的通道会特殊一点,要么是该标记独有的,比如 image 的 src 通道;要么就是有一些特殊逻辑,比如 x 通道会影响 x 方向坐标轴的生成。
  • mark.encode 更倾向于去设置和数据有关的通道,但是 mark.style 更倾向于去设置和数据无关的通道。虽然 mark.style 也同样支持回调去设置数据驱动的通道。

import { Chart } from '@antv/g2';
const chart = new Chart({
container: 'container',
});
chart
.interval()
.data({
type: 'fetch',
value:
'https://gw.alipayobjects.com/os/bmw-prod/fb9db6b7-23a5-4c23-bbef-c54a55fee580.csv',
})
.encode('x', 'letter')
.encode('y', 'frequency')
.style('fill', 'steelblue') // 设置和数据无关的通道
.style('strokeWidth', (d) => (d.frequency > 0.1 ? 2 : 1)) // 设置和数据有关的通道
.style('stroke', (d) => (d.frequency > 0.1 ? 'red' : 'black'))
.axis('y', { labelFormatter: '.0%' });
chart.render();

视图样式

而各个区域的样式可以通过 ${name}${Style} 的形式去设置,其中 Style 是 G 的矩形支持的所有样式,比如 fill,stroke 等,注意首字母要大写,变成驼峰形式。

  • view${Style} - 设置视图区域的样式
  • plot${Style} - 设置绘制区域的样式
  • main${Style} - 设置主区域的样式
  • content${Style} - 设置内容区域的样式

比如下图中给各个区域染色:

import { Chart } from '@antv/g2';
const chart = new Chart({
container: 'container',
});
chart.options({
type: 'view',
height: 280,
inset: 10,
marginTop: 30,
marginLeft: 40,
marginBottom: 10,
marginRight: 20,
style: {
// 设置视图样式
viewFill: '#4e79a7',
plotFill: '#f28e2c',
mainFill: '#e15759',
contentFill: '#76b7b2',
},
children: [
{
type: 'point',
data: {
type: 'fetch',
value: 'https://assets.antv.antgroup.com/g2/commits.json',
},
encode: {
x: (d) => new Date(d.time).getUTCHours(),
y: (d) => new Date(d.time).getUTCDay(),
size: 'count',
shape: 'point',
},
transform: [{ type: 'group', size: 'sum' }, { type: 'sortY' }],
scale: { y: { type: 'point' } },
style: { shape: 'point', fill: '#59a14f' },
axis: {
x: { title: 'time (hours)', tickCount: 24 },
y: { title: 'time (day)', grid: true },
},
legend: false,
},
],
});
chart.render();

绘图属性

G2 使用 G 作为绘图引擎,一些图形的样式配置,如折线图的line.style,柱状图的interval.style等,还有部分组件的样式配置,如label.style, axis.line${style}等,都是直接透传 G 的绘图属性。

为了方便用户使用,在这里对 G2 常用的绘图属性进行简单的介绍:

配置图形样式

属性描述类型默认值必选
fill图形的填充色string
fillOpacity图形的填充透明度number
stroke图形的描边string
strokeOpacity描边透明度number
lineWidth图形描边的宽度number
lineDash描边的虚线配置,第一个值为虚线每个分段的长度,第二个值为分段间隔的距离。lineDash 设为[0,0]的效果为没有描边。[number,number]
opacity图形的整体透明度number
shadowColor图形阴影颜色string
shadowBlur图形阴影的高斯模糊系数number
shadowOffsetX设置阴影距图形的水平距离number
shadowOffsetY设置阴影距图形的垂直距离number
cursor鼠标样式。同 css 的鼠标样式stringdefault

接下来,试试使用全量图形样式配置基础柱状图的 interval 的图形样式,在下面的代码编辑器里修改属性试试效果:

配置线的样式

属性名介绍类型默认值必选
stroke线的颜色string
strokeOpacity线的透明度number
lineWidth线宽number
lineDash虚线配置,第一个值为虚线每个分段的长度,第二个值为分段间隔的距离。lineDash 设为[0,0]的效果为没有描边。[number,number]
opacity整体透明度number
shadowColor阴影颜色string
shadowBlur高斯模糊系数number
shadowOffsetX设置阴影距图形的水平距离number
shadowOffsetY设置阴影距图形的垂直距离number
cursor鼠标样式。同 css 的鼠标样式stringdefault

接下来,试试使用全量线的样式配置基础折线图的 line 的样式,在下面的代码编辑器里修改属性试试效果:

类似的,我们也可以以相同的方式来配置坐标轴的网格线。

import { Chart } from '@antv/g2';
const chart = new Chart({
container: 'container',
});
chart.options({
type: 'line',
data: [
{ year: '1991', value: 3 },
{ year: '1992', value: 4 },
{ year: '1993', value: 3.5 },
{ year: '1994', value: 5 },
{ year: '1995', value: 4.9 },
{ year: '1996', value: 6 },
{ year: '1997', value: 7 },
{ year: '1998', value: 9 },
{ year: '1999', value: 13 },
],
encode: { x: 'year', y: 'value' },
scale: { x: { range: [0, 1] }, y: { domainMin: 0, nice: true } },
axis: {
y: {
grid: true,
gridStroke: 'red',
gridStrokeOpacity: 0.5,
gridLineWidth: 2,
gridLineDash: [2, 4],
},
},
});
chart.render();

配置文字样式

属性名介绍类型默认值必选
fontSize文字大小number
fontFamily文字字体string
fontWeight字体粗细number
lineHeight文字的行高number
textAlign设置文本内容的当前对齐方式center | end | left | right | startstart
textBaseline设置在绘制文本时使用的当前文本基线top | middle | bottom | alphabetic | hangingbottom
fill文字的填充色string
fillOpacity文字的填充透明度number
stroke文字的描边string
lineWidth文字描边的宽度number
lineDash描边的虚线配置,第一个值为虚线每个分段的长度,第二个值为分段间隔的距离。lineDash 设为[0,0]的效果为没有描边。[number,number]
strokeOpacity描边透明度number
opacity文字的整体透明度number
shadowColor文字阴影颜色string
shadowBlur文字阴影的高斯模糊系数number
shadowOffsetX设置阴影距文字的水平距离number
shadowOffsetY设置阴影距文字的垂直距离number
cursor鼠标样式。同 css 的鼠标样式stringdefault

接下来,试试使用全量文字的样式配置水波图的中心文字的样式,在下面的代码编辑器里修改属性试试效果:

类似的,我们也可以以相同的方式来配置标题的文字样式。

import { Chart } from '@antv/g2';
const chart = new Chart({
container: 'container',
});
chart.options({
type: 'line',
data: [
{ year: '1991', value: 3 },
{ year: '1992', value: 4 },
{ year: '1993', value: 3.5 },
{ year: '1994', value: 5 },
{ year: '1995', value: 4.9 },
{ year: '1996', value: 6 },
{ year: '1997', value: 7 },
{ year: '1998', value: 9 },
{ year: '1999', value: 13 },
],
encode: { x: 'year', y: 'value' },
scale: { x: { range: [0, 1] }, y: { domainMin: 0, nice: true } },
title: {
size: 30,
title: "我是一个标题 I'am a title",
align: 'center',
spacing: 4,
// 绘图属性
titleFontSize: 30,
titleFontFamily: 'sans-serif',
titleFontWeight: 500,
titleLineHeight: 30,
titleTextAlign: 'center',
titleTextBaseline: 'middle',
titleFill: '#fff',
titleFillOpacity: 0.9,
titleStroke: 'yellow',
titleStrokeOpacity: 0.9,
titleLineWidth: 1,
titleLineDash: [1, 2],
titleOpacity: 1,
titleShadowColor: '#d3d3d3',
titleShadowBlur: 10,
titleShadowOffsetX: 10,
titleShadowOffsetY: 10,
titleCursor: 'pointer',
},
});
chart.render();

配置线性渐变

加载失败

说明:l  表示使用线性渐变,绿色的字体为可变量,由用户自己填写。

// 使用渐变色描边,渐变角度为 0,渐变的起始点颜色 #ffffff,中点的渐变色为 #7ec2f3,结束的渐变色为 #1890ff
stroke: 'l(0) 0:#ffffff 0.5:#7ec2f3 1:#1890ff';
// 当然,下面这种写法也是可以的
stroke: 'linear-gradient(270deg, #ffffff 0%, #7ec2f3 50%, #1890ff 100%)';

接下来,试试配置面积图的填充颜色为线性渐变色,在下面的代码编辑器里修改属性试试效果:

也可以通过配置 color 通道的比例尺来实现一个渐变色仪表盘,在下面的代码编辑器里修改属性试试效果:

配置环形渐变

加载失败

说明:r  表示使用放射状渐变,绿色的字体为可变量,由用户自己填写,开始圆的 x y r 值均为相对值,0 至 1 范围。

// 使用渐变色填充,渐变起始圆的圆心坐标为被填充物体的包围盒中心点,半径为(包围盒对角线长度 / 2) 的 0.1 倍,渐变的起始点颜色 #ffffff,中点的渐变色为 #7ec2f3,结束的渐变色为 #1890ff
fill: 'r(0.5, 0.5, 0.1) 0:#ffffff 1:#1890ff';

接下来,试试配置条形图的填充颜色为环形渐变色,在下面的代码编辑器里修改属性试试效果:

配置纹理

用特定的纹理填充图形。纹理内容可以直接是图片或者  Data URLs。

加载失败

说明:p  表示使用纹理,绿色的字体为可变量,由用户自己填写。

  • a: 该模式在水平和垂直方向重复;
  • x: 该模式只在水平方向重复;
  • y: 该模式只在垂直方向重复;
  • n: 该模式只显示一次(不重复)。
style: {
fill: 'p(a)https://gw.alipayobjects.com/mdn/rms_d314dd/afts/img/A*58XjQY1tO7gAAAAAAAAAAABkARQnAQ',
}

接下来,试试配置条形图的填充颜色为纹理,在下面的代码编辑器里修改属性试试效果:

除此之外,G2 提供了 内置纹理、 G API 自定义纹理 等多种方式来设置纹理,详情见 设置纹理。