logo

Ant Design Charts

  • 教程
  • 选项
  • 图表示例
  • 所有产品antv logo arrow
  • 2.0.0
  • 📈 图表分类
  • 统计图表
    • 图表组成
    • 图表组件 - Component
      • 标题(Title)
      • 坐标轴(Axis)
      • 图例(Legend)
      • 滚动条(Scrollbar)
      • 缩略轴(Slider)
      • 提示信息(Tooltip)
      • 数据标签(Label)
    • 核心概念 - Core
      • 视图(View)
      • 数据(Data)
        • 概览
        • custom
        • ema
        • fetch
        • filter
        • fold
        • inline
        • join
        • kde
        • log
        • map
        • pick
        • rename
        • slice
        • sort
        • sortBy
      • 比例尺(Scale)
        • 概览
        • band
        • linear
        • log
        • ordinal
        • point
        • pow
        • quantile
        • quantize
        • sqrt
        • threshold
        • time
      • 转换(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
        • radial
        • theta
        • transpose
        • cartesian3D
      • 样式(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)
    • 专有配置 - Specal Plot
      • Area 面积图
      • Bar 条形图
      • CirclePacking 捆绑图
      • DualAxes 双轴图
      • Gauge 仪表盘
      • Line 折线图
      • Rose 玫瑰图
      • Sankey 桑基图
      • Scatter 散点图
      • Sunburst 旭日图
      • Treemap 矩阵树图
      • Venn 韦恩图
      • WordCloud 词云图
      • Column 柱状图
      • Pie 饼图
      • BidirectionalBar 对称条形图
      • Box 箱线图
      • Bullet 子弹图
      • Funnel 漏斗图
      • Heatmap 热力图
      • Histogram 直方图
      • Liquid 水波图
      • Radar 雷达图
      • Stock 股票图
      • Tiny 迷你图
      • Violin 小提琴图
      • Waterfall 瀑布图
      • RadialBar 玉珏图
  • 关系图组件
    • 总览
    • MindMap 思维导图
    • Fishbone 鱼骨图
    • IndentedTree 缩进树图
    • Dendrogram 生态树图
    • OrganizationChart 组织结构图
    • FlowGraph 流程图
    • FlowDirectionGraph 流向图
    • NetworkGraph 网络图
    • FAQ

图表组成

上一篇
📈 图表分类
下一篇
标题(Title)

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...

为了更好地使用 Ant Design Charts 进行数据可视化,我们需要了解 Ant Design Charts 图表的组成以及相关概念。

图表组件

下面是一个基本的 Ant Design Charts 图表,图表由 组件(Component) 和 标记(Mark) 组成。

需要特别注意的是,Ant Design Charts 5.0 中不再需要单独配置标注(Annotation) ,标注也是一种标记,或者说某些标记也也可以用来做标注,比如 Text,Image, Line 等标记。

chart-component

标题 title

用于一句话概要说明图表要展示的数据,图表的标题是比较常用的组件,支持标题和副标题,以及他们的样式和位置设置。

查看 Title 教程获取更多信息。

坐标轴 axis

绘制坐标轴,目前支持直角坐标系坐标轴与极坐标系坐标轴。

每个坐标轴由坐标轴线(line)、刻度(tick)、刻度值(label)、标题(title)以及网格线(grid)组成。

查看 Axis 教程获取更多信息。

图例 legend

绘制图例,Ant Design Charts 提供了两种图例类型:分类图例(Category Legend)和连续图例(Continuous Legend),分别用于展示分类数据和连续数据。

查看 Legend 教程获取更多信息。

滚动条 scrollbar

滚动条(scrollbar)是一个交互组件,当显示区域大小不足以容纳全部信息时,可以将超出部分隐藏,并通过滚动条的垂直或横向滑动来显示出被隐藏部分。

内容是否超出显示区域取决于内容的多少以及显示区域的尺寸,当需要显示的内容在纵向方向上超过显示区域的大小时,应当使用垂直滚动条以控制显示的部分,横向滚动条同理。

查看 Scrollbar 教程获取更多信息。

缩略轴 slider

缩略轴(slider)是一种辅助看数据的组件,它将大量数据浓缩到一个轴上,既可以缩小宏观看数据全貌,又可以放大微观看数据的片段,同时还可以拖拽观察数据在一定区间内的演变。

缩略轴是值域数据的浓缩,它跟位置通道 x, y 对应的比例尺的类型息息相关。一般来说时间类型上使用缩略轴的频率高,连续轴使用缩略轴频次低、分类轴几乎不会使用到缩略轴。

查看 Slider 教程获取更多信息。

提示信息 tooltip

当鼠标悬停在某个点上时,会以提示框的形式显示当前点对应的数据的信息,比如该点的值,数据单位等。数据提示框内提示的信息还可以通过格式化函数动态指定。

查看 Tooltip 教程获取更多信息。

数据标签 label

Ant Design Charts 中数据标签(Label) 是给图表添加标注的手段之一。

查看 Label 教程获取更多信息。

图表布局

使用方式

不管是单视图图表还是多视图图表,布局信息(图表宽高等)都可以在选项顶层进行指定。

const markLevel = {
width: 640,
height: 180,
margin: 10,
};
const viewLevel = {
type: 'view',
width: 640,
height: 180,
margin: 10,
// ...
};
const compositionLevel = {
type: 'spaceFlex',
width: 640,
height: 180,
margin: 10,
};

同时,也可以在初始化 Chart 对象的时候指定:

也可以通过 node.attr 指定:

{
"attr": {
"margin": 20,
"padding": 10
}
}

视图模型

chart-component

在 Ant Design Charts 中,视图模型 用于定义图表视图的划分方式,根据划分生成的不同区域可以绘制不同的内容,并通过相应选项进行配置。可以将视图简单理解为一个独立的图表。Ant Design Charts 的视图模型结构如下:

  • 视图区域(View Area):表示图表的整体视图区域。在设置图表的宽度和高度时,生效的范围即为视图区域的宽度和高度。视图区域与绘制区域之间的部分称为 外边距范围,该区域的大小可通过配置 margin 属性进行调整,通常用于设置固定组件(如坐标轴、图例等)与边界的距离。

  • 绘制区域(Plot Area):表示图表的绘制区域。绘制区域与主区域之间的部分称为 内边距范围,该区域的大小可通过配置 padding 属性进行调整,通常用于绘制图表组件,例如title、legend、axis等。

  • 主区域(Main Area):表示图表内容绘制的主要区域。主区域与内容区域之间的部分称为 呼吸范围,该区域的大小可通过配置 inset 属性进行调整,用于制造组件和标记(图形元素)的间距,从而防止重叠,对于散点图尤其有用。

  • 内容区域(Content Area):表示标记绘制的内容区域。主要用于绘制标记(图形元素)。

其中内容区域的大小由以下的公式得到:

const contentWidth = width - paddingLeft - paddingRight - marginLeft - marginRight - insetLeft - insetRight;
const contentHeight = height - paddingTop - paddingBottom - marginTop - marginBottom - insetTop - insetBottom;

布局算法

Ant Design Charts 在内部自己实现了一套布局算法,负责协调外边距( margin )、内边距( padding )、呼吸范围宽度( inset )等布局参数的计算,确保坐标轴、图例等组件在图表容器中合理布局。

动态计算

也许你曾经有过疑惑,为什么在配置里手动声明 padding 为 0, 图表的 x 轴显示不全了。要回答这个问题,需要深入探究 Ant Design Charts 布局算法里动态计算的部分。

在 Ant Design Charts 的布局算法中,首先会获取所有传入的 padding、margin、inset属性,如果没有设置,padding(包括 paddingTop、paddingLeft 等)会被默认赋值为 auto,margin 会被默认赋值为 16,而 inset 会被默认赋值为 0。接下来将图表组件按照位置进行分组,方便后续布局计算。

以 position = 'top' 为例,如果配置了明确的 paddingTop 时,不会触发动态计算 paddingTop 的逻辑,此时对于未定义 size 的组件,使用内部定义的默认尺寸 defaultSize;对于分组(group)组件,递归执行上述操作,然后取最大的子组件尺寸作为父组件的尺寸;如果组件中包括坐标轴(axis)组件且未显式设置 labelAutoHide,设置 labelAutoHide 为 true,自动隐藏坐标轴标签以避免溢出。

如果没有配置 paddingTop,则会触发动态计算的逻辑,根据组件的实际尺寸累加边距(crossPadding 默认为 12),得出最后的实际paddingTop 大小。

要回答最初的问题:在 Ant Design Charts 中,内边距范围( padding )用于为图表组件预留展示空间。如果手动将 padding 设置为 0 ,会关闭内部的自适应计算逻辑,从而可能导致图表组件显示不完整。因此,当需要个性化配置时,应确保为组件预留足够的空间;否则,建议使用默认的自适应逻辑来避免显示问题。

防挤压机制

Ant Design Charts 内部对于图表显示区域设置了一个兜底机制,当视图中存在标记元素(如line、interval等),触发防挤压机制,来确保图表的主区域(Main Area)最小占比 1/4 。以水平方向为例,假设绘制区域的大小为 plotWidth,如果 plotWidth 减去动态计算后的左内边距 pl0 和 右内边距 pr0 后小于 plotWidth * 1/4 时,会优先保证主区域大小为 plotWidth * 1/4,将内边距等比例缩小,当用户指定 paddingLeft 时会动态计算 paddingRight 的大小,按比例分配剩余空间,尽量避免左右外边距同时设置为固定值,可能会导致自适应算法失效。垂直方向的计算规则同理。

配置项

属性描述类型默认值必选
autoFit开启后图表的宽高和容器保持一致booleanfalse
width设置图表的宽度number640
height设置图表的高度number480
viewStyle设置图表的视图样式viewStyle详见 viewStyle
margin设置外边距四个方向的值,优先级别比分别设置低number16
marginLeft设置左外边距值number16
marginTop设置上外边距值number16
marginRight设置右外边距值number16
marginBottom设置下外边距值number16
padding设置内边距四个方向的值,优先级别比分别设置低numberauto
paddingLeft设置左内边距值numberauto
paddingTop设置上内边距值numberauto
paddingRight设置右内边距值numberauto
paddingBottom设置下内边距值numberauto
inset设置呼吸范围四个方向的值,优先级别比分别设置低number0
insetLeft设置左呼吸范围宽度number0
insetTop设置上呼吸范围宽度number0
insetRight设置右呼吸范围宽度number0
insetBottom设置下呼吸范围宽度number0

autoFit

如果希望图表的宽高和容器保持一致,那么可以将 options.autoFit 设置为 true,其优先级比指定宽高高。

viewStyle

配置图表的视图样式。

属性描述类型默认值必选
view配置视图区域的样式view详见 view
plot配置绘制区域的样式plot详见 plot
main配置主区域的样式main详见 main
content配置内容区域的样式content详见 content
view

配置图表的视图区域的样式。

属性描述类型默认值必选
viewRadius图表的视图区域的四个圆角半径大小number0
viewFill图表的视图区域填充颜色string-
viewFillOpacity图表的视图区域填充透明度number-
viewStroke图表的视图区域描边颜色string-
viewStrokeOpacity图表的视图区域描边透明度number-
viewLineWidth图表的视图区域描边宽度number-
viewLineDash图表的视图区域描边虚线配置[number,number]-
viewOpacity图表的视图区域整体透明度number-
viewShadowColor图表的视图区域阴影颜色string-
viewShadowBlur图表的视图区域阴影模糊系数number-
viewShadowOffsetX图表的视图区域阴影水平偏移number-
viewShadowOffsetY图表的视图区域阴影垂直偏移number-
viewCursor图表的视图区域鼠标样式stringdefault
plot

配置图表的绘制区域的样式。

属性描述类型默认值必选
plotRadius图表的绘制区域的四个圆角半径大小number0
plotFill图表的绘制区域填充颜色string-
plotFillOpacity图表的绘制区域填充透明度number-
plotStroke图表的绘制区域描边颜色string-
plotStrokeOpacity图表的绘制区域描边透明度number-
plotLineWidth图表的绘制区域描边宽度number-
plotLineDash图表的绘制区域描边虚线配置[number,number]-
plotOpacity图表的绘制区域整体透明度number-
plotShadowColor图表的绘制区域阴影颜色string-
plotShadowBlur图表的绘制区域阴影模糊系数number-
plotShadowOffsetX图表的绘制区域阴影水平偏移number-
plotShadowOffsetY图表的绘制区域阴影垂直偏移number-
plotCursor图表的绘制区域鼠标样式stringdefault
main

配置图表的主区域的样式。

属性描述类型默认值必选
mainRadius图表的主区域的四个圆角半径大小number0
mainFill图表的主区域填充颜色string-
mainFillOpacity图表的主区域填充透明度number-
mainStroke图表的主区域描边颜色string-
mainStrokeOpacity图表的主区域描边透明度number-
mainLineWidth图表的主区域描边宽度number-
mainLineDash图表的主区域描边虚线配置[number,number]-
mainOpacity图表的主区域整体透明度number-
mainShadowColor图表的主区域阴影颜色string-
mainShadowBlur图表的主区域阴影模糊系数number-
mainShadowOffsetX图表的主区域阴影水平偏移number-
mainShadowOffsetY图表的主区域阴影垂直偏移number-
mainCursor图表的主区域鼠标样式stringdefault
content

配置图表的内容区域的样式。

属性描述类型默认值必选
contentRadius图表的内容区域的四个圆角半径大小number0
contentFill图表的内容区域填充颜色string-
contentFillOpacity图表的内容区域填充透明度number-
contentStroke图表的内容区域描边颜色string-
contentStrokeOpacity图表的内容区域描边透明度number-
contentLineWidth图表的内容区域描边宽度number-
contentLineDash图表的内容区域描边虚线配置[number,number]-
contentOpacity图表的内容区域整体透明度number-
contentShadowColor图表的内容区域阴影颜色string-
contentShadowBlur图表的内容区域阴影模糊系数number-
contentShadowOffsetX图表的内容区域阴影水平偏移number-
contentShadowOffsetY图表的内容区域阴影垂直偏移number-
contentCursor图表的内容区域鼠标样式stringdefault

在配置视图样式的时候,不是以对象的形式来配置,而是以 view、plot、main、content前缀加属性的方式来配置。

({
viewStyle: {
// 配置图表的视图区域的样式
viewFill: '#DCEEFE',
viewRadius: 50,
// 配置图表的绘制区域的样式
plotFill: '#fff',
plotFillOpacity: 0.45,
plotStroke: 'yellow',
plotLineWidth: 4,
// 配置图表的主区域的样式
mainFill: 'l(270) 0:#ffffff 0.5:#7ec2f3 1:#1890ff',
mainFillOpacity: 0.75,
// 配置图表的内容区域的样式
contentFill: 'l(90) 0:#ffadad 0.5:#ffd6a5 1:#fdffb6',
contentShadowColor: '#5d5d5d',
contentShadowBlur: 40,
contentShadowOffsetX: 5,
contentShadowOffsetY: 5,
},
});