百分比堆叠面积图

在堆叠面积图的基础之上,将各个面积的因变量的数据使用加和后的总量进行归一化就形成了百分比堆叠面积图。该图并不能反映总量的变化,但是可以清晰的反应每个数值所占百分比随时间或类别变化的趋势线,对于分析自变量是大数据、时变数据、有序数据时各个指标分量占比极为有用。

百分比堆叠面积图

配置属性

图表容器

width

可选, number

功能描述: 设置图表宽度。

默认配置: 400

height

可选, number

功能描述: 设置图表高度。

默认配置: 400

forceFit

可选, boolean

功能描述: 图表是否自适应容器宽高。当 forceFit 设置为 true 时,widthheight 的设置将失效。

默认配置: true

pixelRatio

可选, number

功能描述: 设置图表渲染的像素比

默认配置: 2

renderer

可选, string

功能描述: 设置图表渲染方式为 canvassvg

默认配置: canvas

数据映射

data 📌

必选, array object

功能描述: 设置图表数据源

默认配置: 无

数据源为对象集合,例如:[{ time: '1991',value: 20 }, { time: '1992',value: 20 }]

meta

可选, object

功能描述: 全局化配置图表数据元信息,以字段为单位进行配置。在 meta 上的配置将同时影响所有组件的文本信息。

默认配置: 无

细分配置项名称 类型 功能描述
alias string 字段的别名
formatter function callback 方法,对该字段所有值进行格式化处理
values string[] 枚举该字段下所有值
range number[] 字段的数据映射区间,默认为[0,1]
const data = [
  { country: 'Asia', year: '1750', value: 502,},
  { country: 'Asia', year: '1800', value: 635,},
  { country: 'Europe', year: '1750', value: 163,},
  { country: 'Europe', year: '1800', value: 203,},
];

const areaPlot = new PercentageStackArea(document.getElementById('container'), {
  title: {
    visible: true,
    text: '百分比堆叠面积图',
  },
  data,
  meta: {    year: {      alias:'年份'      range: [0, 1],    },    value: {      alias: '数量',      formatter:(v)=>{return `${v}`}    }  },  xField: 'year',
  yField: 'value',
  stackField: 'country',
});
areaPlot.render();

xField 📌

必选, string

功能描述: 图形在 x 方向(横向延伸)对应的数据字段名,一般对应一个连续字段。

默认配置: 无

yField 📌

必选, string

功能描述: 图形在 y 方向对应的数据字段名,一般对应一个离散字段。

默认配置: 无

stackField 📌

必选, string

功能描述: 面积堆叠的字段名,通过该字段的值,面积图将会被分割为堆积的多个部分,通过颜色进行区分。

默认配置: 无

图形样式

color

可选, string[] | Function

功能描述: 指定图形颜色,即可以指定一系列色值,也可以通过回调函数的方法根据对应数值进行设置。

默认配置:采用 theme 中的色板。

areaStyle ✨

可选, object

功能描述: 设置 area 图形的样式。areaStyle 中的fill会覆盖color的设置。sreaStyle 可以直接指定,也可以通过 callback 的方式,根据数据为每个形状指定单独的样式。

细分配置 类型 功能描述
fill string 填充颜色
stroke string 填充颜色
lineWidth number 线宽
lineDash number 虚线显示
opacity number 透明度
fillOpacity number 填充透明度
strokeOpacity number 描边透明度

smooth ✨

可选, boolean

功能描述: 是否使用曲线形态描绘。

默认配置: false

line ✨

可选, object

功能描述:配置辅助折线,分组及颜色映射方式与面积图形保持一致。

默认配置:

visible: true
size: 2
style:{
    opacity: 1,
    lineJoin: 'round',
    lineCap: 'round',
}
细分配置 类型 功能描述
visible boolean 是否显示
size number 折线的宽度
style object 折线样式
- stroke: string 折线颜色
- lineDash: number[] 虚线显示
- opacity: number 透明度

point ✨

可选, object

功能描述: 配置数据点,分组及颜色映射方式与面积图形保持一致。

默认配置:

visible: false,
shape: 'circle',
size: 3,
style: {
    stroke: '#fff',
}
细分配置 类型 功能描述
visible boolean 是否显示
shape string 数据点形状
size number 数据点大小
style object 数据点样式
- fill: string  填充色
- stroke: string  描边颜色
- lineWidth: number 描边粗细
- lineDash: number 虚线描边
- opacity: number 透明度
- fillOpacity: number 填充透明度
- strokeOpacity: number 描边透明度

图表组件

title

可选, optional

DEMOS

功能描述: 配置图表的标题,默认显示在图表左上角。

默认配置:

visible: false,
alignTo: 'left',
text:'',
style:{
    fontSize: 18,
    fill: 'black',
}
细分配置 类型 功能描述
visible boolean 是否显示
alignTo string 位置,支持三种配置:
'left'
style object 样式:
- fontSize: number 文字大小
- fill: string 文字颜色
- stroke: string  描边颜色
- lineWidth: number 描边粗细
- lineDash: number 虚线描边
- opacity: number 透明度
- fillOpacity: number 填充透明度
- strokeOpacity: number 描边透明度

description

可选, optional

DEMOS

功能描述: 配置图表的描述,默认显示在图表左上角,标题下方。

默认配置:

visible: false,
alignTo: 'left',
text:'',
style:{
    fontSize: 12,
    fill: 'grey',
}
细分配置 类型 功能描述
visible boolean 是否显示
alignTo string 位置,支持三种配置:
'left'
style object 样式:
- fontSize: number 文字大小
- fill: string 文字颜色
- stroke: string  描边颜色
- lineWidth: number 描边粗细
- lineDash: number 虚线描边
- opacity: number 透明度
- fillOpacity: number 填充透明度
- strokeOpacity: number 描边透明度

xAxis

可选, object

功能描述: x 方向上的坐标轴,用于展示 xField 对应的映射信息

DEMOS

默认配置:

visible: true,
grid: {
    visible: false,
},
line: {
    visible: true
},
tickLine: {
     visible: false,
},
label: {
    visible: true,
    autoRotate: true,
    autoHide: true
},
title: {
    visible: true,
    offset: 12,
},
细分配置 类型 功能描述
visible boolean 是否可见
type string 坐标轴类型
- 'time':时间轴,
- 'linear': 连续轴
tickCount number 坐标轴刻度数量
tickInterval number 坐标轴刻度间隔
line object 坐标轴轴线
- visible: boolean 是否可见
- style:object 轴线样式
grid object 网格线
- visible: boolean 是否可见
- line:object 网格线样式
label object 坐标轴标签
- visible: boolean 是否可见
- formatter: function  坐标轴标签格式化
- suffix: string 后缀
- precision:number  标签精度,如配置为 2,则格式化为 2 位小数
- mask: string 为日期文本添加格式化遮罩,当坐标轴 type 为 time 时生效
- offsetX: number 位置在 x 方向上的偏移量
- offsetY:number 位置在 y 方向上的偏移量
- style:object 样
-autoHide: boolean 是否自动隐藏
-autoRotate: boolean 是否自动旋转
tickLine object 坐标轴刻度
- visible:boolean 是否可见
- style: object 样式
title object 坐标轴标题
- visible: boolean 是否可见
- text: string 标题文字
- offset: number 位置偏移量
- style:object 样式

yAxis

可选, object

DEMOS

功能描述: y 方向上的坐标轴,用于展示 yField 对应的映射信息

默认配置:

visible: true,
autoHideLabel: false,
autoRotateLabel: false,
autoRotateTitle: true,
grid: {
    visible: true,
},
line: {
    visible: false,
},
tickLine: {
    visible: false,
},
label: {
    visible: true,
},
title: {
    visible: false,
    offset: 12,
},
细分配置 类型 功能描述
visible boolean 是否可见
tickCount number 坐标轴刻度数量
tickInterval number 坐标轴刻度间隔
min number 设置坐标轴最小值
max number 设置坐标轴最大值
line object 坐标轴轴线
- visible: boolean 是否可见
- style:object 轴线样式
grid object 网格线
- visible: boolean 是否可见
- line:object 网格线样式
label object 坐标轴标签
- visible: boolean 是否可见
- formatter: function 坐标轴标签格式化 DEMO
- suffix: string 后缀
- precision:number  标签精度,如配置为 2,则格式化为 2 位小数
- offsetX: number 位置在 x 方向上的偏移量
- offsetY:number 位置在 y 方向上的偏移量
- style:object 样
tickLine object 坐标轴刻度
- visible:boolean 是否可见
- style: object 样式
title object 坐标轴标题
- visible: boolean 是否可见
- text: string 标题文字
- offset: number 位置偏移量
- style:object 样式

legend

可选, object

DEMOS

功能描述:图例,配置了 seriesField 时显示,用于展示颜色分类信息

默认配置:

visible: true,
position: 'bottom',
flipPage: true
细分配置 类型 功能描述
visible boolean 是否可见
position string 位置,支持 12 方位布局
top-left, top-center,top-right
bottom-left,bottom-center,bottom-right
left-top,left-center,left-bottom
right-top,right-center,right-bottom
formatter function 对图例显示信息进行格式化
offsetX number 图例在 position 的基础上再往 x 方向偏移量,单位 px
offsetY number 图例在 position 的基础上再往 y 方向偏移量,单位 px
title object 图例标题
- visible: boolean 是否显示
- text: string 图例文本,如不配置则自动取对应字段名
- style: object 标题样式
marker object 图例 marker
- symbol: string marker 符号,默认为 'circle'。可选类型:circle,square,diamond,triangle,triangleDown,hexagon,bowtie,cross,tick,plus,hyphen,line,hollowCircle,hollowSquare,hollowDiamond
- style: object marker 样式,其中  r  配置 marker 的大小,其余样式参数参考绘图属性文档。
text object 图例文本
- style: object 配置图例文本样式
- formatter:(text,cfg)=>string 格式化图例文本

tooltip

可选, object

功能描述:信息提示框

默认配置:

visible: true,
shared: true,
showCrosshairs: true,
crosshairs: {
  type: 'y'
},
offset: 20,
细分属性 类型 功能描述
visible boolean 是否显示
offset number 距离鼠标位置偏移值
shared boolean 是否同时显示多条数据
showCrosshairs boolean 是否 tooltip 辅助线
crosshairs object 配置 tooltip 辅助线。
-type: string crosshairs 类型,可选项: x
domStyles object 配置 tooltip 样式
- g2-tooltip: object 设置 tooltip 容器的 CSS 样式
- g2-tooltip-title: object 设置 tooltip 标题的 CSS 样式
- g2-tooltip-list: object 设置 tooltip 列表容器的 CSS 样式
- g2-tooltip-marker: object 设置 tooltip 列表容器中每一项 marker 的 CSS 样式
- g2-tooltip-value: object  设置 tooltip 列表容器中每一项 value 的 CSS 样式
fields string 设置 tooltip 内容字段,默认为[ xField, yField, stackField]
formatter object 对 tooltip items 进行格式化,入参为 tooltip fields 对应数值,出参为格式为{name:'a',value:1}

label

可选, object

DEMO1 DEMO2

功能描述: 标签文本

默认配置:

visible: false;
type: 'area';
细分配置 类型 功能描述
visible boolean 是否显示
type string 文本标签类型
- point: 显示在对应数据点上
- area: 显示在面积区域内部
- line: 显示在辅助折线尾部
formatter function 对文本标签内容进行格式化
offsetX number 在 label 位置的基础上再往 x 方向的偏移量
offsetY number 在 label 位置的基础上再往 y 方向的偏移量
autoScale boolean label 是否随 area 面积放缩。label type 为 area 时生效,默认为 true
style object 配置文本标签样式。

guideLine

可选, object[]

DEMOS

功能描述: 配置图表辅助线,支持同时配置多条。

默认配置: 无

细分配置 类型 功能描述
type string 含有统计意义的辅助线类型,可选类型为 max
start array 指定辅助线起始位置,如不配置type,则该辅助线为自定义辅助线,start是必选项。
支持两种配置形式,两者不能混用:
- 原始数据值,如 ['2010-01-01', 100]
- 绘图区域百分比位置,如 ['50%', '50%']
end array 指定辅助线终止位置,如不配置type,则该辅助线为自定义辅助线,end  是必选项。
支持两种数据形式,两者不能混用:
- 原始数据值,如 ['2010-01-01', 100]
- 绘图区域百分比位置,如 ['50%', '50%']
lineStyle object 配置辅助线样式。
text object 设置辅助线文本。
- position: string 辅助线文本位置,可选项:start、center、end
- content: string 辅助线文本内容
- offsetX: number 位置在 x 方向上的偏移量
- offsetY: number 位置在 y 方向上的偏移量
- style: object 文本样式

配置统计辅助线示例代码:

{
  guideLine: [
    {
      type: 'mean',
      lineStyle: {},
      text: {},
    },
  ],
}

配置自定义辅助线示例代码:

{
  guideLine: [
    {
      start: ['2010-01-01', 100] || ['0%', '50%'],
      end: ['2010-01-10', 50] || ['100%', '80%'],
      lineStyle: {},
      text: {},
    },
  ],
}

事件

面积事件

onAreaClick
面积点击事件
onAreaDblClick
面积双击事件
onAreaDblClick
面积双击事件
onAreaMouseleave
面积鼠标离开事件
onAreaMousemove
面积鼠标移动事件
onAreamousedown
面积鼠标按下事件
onAreaMouseup
面积鼠标松开事件
onAreaMouseenter
面积鼠标进入事件

折线事件

onLineClick
折线点击事件
onLineDblClick
折线双击事件
onLineDblClick
折线双击事件
onLineMouseleave
折线鼠标离开事件
onLineMousemove
折线鼠标移动事件
onLineMousedown
折线鼠标按下事件
onLineMouseup
折线鼠标松开事件
onLineMouseenter
折线鼠标进入事件

数据点事件

onPointClick
数据点点击事件
onPointDblClick
数据点双击事件
onPointDblClick
数据点双击事件
onPointMouseleave
数据点鼠标离开事件
onPointMousemove
数据点鼠标移动事件
onPointMousedown
数据点鼠标按下事件
onPointMouseup
数据点鼠标松开事件
onPointMouseenter
数据点鼠标进入事件

图表区域事件

onPlotClick
图表区域点击事件
onPlotDblClick
图表区域双击事件
onPlotDblClick
图表区域双击事件
onPlotMouseleave
图表区域鼠标离开事件
onPlotMousemove
图表区域鼠标移动事件
onPlotMousedown
图表区域鼠标按下事件
onPlotMouseup
图表区域鼠标松开事件
onPlotMouseenter
图表区域鼠标进入事件

图例事件

onLegendClick
图例点击事件
onLegendDblClick
图例双击事件
onLegendMouseenter
图例鼠标进入事件
onLegendMouseleave
图例鼠标离开事件
onLegendMousemove
图例鼠标移动事件
onLegendMousedown
图例鼠标按下事件
onLegendMouseup
图例鼠标松开事件
onLegendMouseenter
图例鼠标进入事件

坐标轴事件

onAxisClick
坐标轴点击事件
onAxisDblClick
坐标轴双击事件
onAxisDblClick
坐标轴双击事件
onAxisMouseleave
坐标轴鼠标离开事件
onAxisMousemove
坐标轴鼠标移动事件
onAxisMousedown
坐标轴鼠标按下事件
onAxisMouseup
坐标轴鼠标松开事件
onAxiMouseenter
坐标轴鼠标进入事件

图形标签事件

onLabelClick
图形标签点击事件
onLabelDblClick
图形标签双击事件
onLabelDblClick
图形标签双击事件
onLabelMouseleave
图形标签鼠标离开事件
onLabelMousemove
图形标签鼠标移动事件
onLabelMousedown
图形标签鼠标按下事件
onLabelMouseup
图形标签鼠标松开事件
onLabelMouseenter
图形标签鼠标进入事件

标题事件

onTitleClick
标题点击事件
onTitleDblClick
标题双击事件
onTitleDblClick
标题双击事件
onTitleMouseleave
标题鼠标离开事件
onTitleMousemove
标题鼠标移动事件
onTitleMousedown
标题鼠标按下事件
onTitleMouseup
标题鼠标松开事件
onTitleMouseenter
标题鼠标进入事件

描述事件

onDescriptionClick
标题点击事件
onDescriptionDblClick
标题双击事件
onDescriptionDblClick
标题双击事件
onDescriptionMouseleave
标题鼠标离开事件
onDescriptionMousemove
标题鼠标移动事件
onDescriptionMousedown
标题鼠标按下事件
onDescriptionMouseup
标题鼠标松开事件
onDescriptionMouseenter
标题鼠标进入事件

交互

slider ✨

可选, object

DEMO

功能描述: 缩略轴 (slider) 交互适用于折线数据较多,用户希望关注数据集中某个特殊区间的场景。

细分配置 类型 功能描述
height number slider 高度
start number
滑块初始开始位置,值域为[0,1]
end number 滑块初始结束位置,值域为[0,1]
trendCfg object 配置 slider 内的趋势组件
- smooth: boolean 趋势组件是否平滑
- isArea: boolean 趋势组件是都绘制为面积图,如设置 false 则绘制折线,默认 false
- lineStyle: object 配置折线形态趋势组件的样式
- areaStyle: object 配置面积形态趋势组件的样式
backgroundStyle object 配置背景样式
forgroundStyle object 配置前景样式
handlerStyle object 配置滑块样式
textStyle object 配置跟随滑块的文字样式
minLimit number 允许滑动的最小位置,值域范围为[0,1]
maxLimit number 允许滑动的最大位置,值域范围为[0,1]

scrollBar ✨

可选, object

功能描述: 配置横向滚动条,适用于数据较多的场景。

示例代码:

interactions: [
  {
    type: 'scrollbar',
    },
],

图表方法

render() 📌

必选

渲染图表。

updateConfig()

可选

更新图表配置项。

plot.updateConfig({
  width: 500,
  height: 600,
  legend: {
    visible: false,
  },
});

plot.render();

changeData()

可选

更新图表数据。updateConfig()方法会导致图形区域销毁并重建,如果只进行数据更新,而不涉及其他配置项更新,推荐使用本方法。

plot.changeData(newData);

repaint()

可选

图表画布重绘。

destroy()

可选

销毁图表。

getData()

获取图表数据。

getPlotTheme()

获取图表 theme。

何时使用

面积图可用来展示连续性数据,可很好地表示趋势、累积、减少以及变化。 堆叠面积图更擅于展示部分和整体之间的关系或趋势,而不是传达特定的值。

数据类型

图表类型 面积图
适合的数据 两个连续字段数据
功能 观察数据变化趋势
数据与图形的映射 两个连续字段分别映射到横轴和纵轴
适合的数据条数 大于两条

用法建议

元素

  • X 轴:通常对应连续数据,值为时间,调用连续数据 X 轴。
  • Y 轴:通常对应连续数据,值为数字,调用连续数据 Y 轴。
  • 图例:通常出现在多条折线图中,用来区分不同折线代表的数据含义。
  • 标签:用来解释数据点的值。
  • 辅助元素:用来解释某个特殊的数据点的值,或标记出某个特殊含义的区域。