dataFormatter$
API
dataFormatter$是全部 Plugin 共用的圖表參數設定,在每一個資料類別的圖表物件上有各自參數格式,主要用來設定資料映射及篩選的規則。所有的參數皆為可選的,如無使用此 API 則所有參數設定皆為預設值。
語法
設定參數的語法是 chart.dataFormatter$.next(DataFormatter)
範例:
chart.dataFormatter$.next([
// Params
])
Series
型別:
DataFormatterSeriesPartial欄位:
名稱 說明 型別 visibleFilter 資料篩選函式 (datum: ComputedDatumSeries, context: DataFormatterContext<'series'>) => boolean | nullsort 排序函式 ((a: ComputedDatumSeries, b: ComputedDatumSeries) => number) | nullseriesLabels Series 標籤 string[]sumSeries 以 Series 分類合併資料 booleancontainer 多圖表容器布局 DataFormatterContainerseparateSeries 以 Series 分類分開顯示(以 container欄位設定的布局擺放)booleanseparateLabel 以 Label 分類分開顯示(以 container欄位設定的布局擺放)boolean
詳細型別
interface ComputedDatumSeries {
id: string
index: number
label: string
visible: boolean
data: any
value: number | null
color: string
seriesIndex: number
seriesLabel: string
seq: number
}
interface DataFormatterContext<T extends ChartType> {
data: DataTypeMap<T>
dataFormatter: DataFormatterTypeMap<T>
chartParams: ChartParams
}
dataFormatter.container名稱 說明 型別 columnAmount 「欄」的數量 numberrowAmount 「列」的數量 numbercolumnGap 欄的間距 number | 'auto'rowGap 列的間距 number | 'auto'預設值:
const DEFAULT_DATA_FORMATTER_SERIES: DataFormatterSeries = {
type: 'series',
visibleFilter: (datum, context) => true,
sort: null,
seriesLabels: [],
container: {
columnAmount: 1,
rowAmount: 1,
columnGap: 'auto',
rowGap: 'auto'
},
separateSeries: false,
separateLabel: false,
sumSeries: false
}
Grid
型別:
DataFormatterGridPartial欄位:
名稱 說明 型別 visibleFilter 資料篩選函式 (datum: ComputedDatumGrid, context: DataFormatterContext<'grid'>) => boolean | nullseriesDirection 定義 data$資料的「列」或「欄」為 SeriesbooleanrowLabels data$資料「列」的標籤booleancolumnLabels data$資料「欄」的標籤booleanvalueAxis 資料圖軸(預設為 Y 軸)設定 DataFormatterValueAxisgroupAxis 群組圖軸(預設為 X 軸)設定 DataFormatterGroupAxiscontainer 多圖表容器布局 DataFormatterContainerseparateSeries 以 Series 分類分開顯示(以 container欄位設定的布局擺放)boolean
詳細型別
interface ComputedDatumGrid {
id: string
index: number
label: string
visible: boolean
data: any
value: number | null
color: string
gridIndex: number
seriesIndex: number
seriesLabel: string
groupIndex: number
groupLabel: string
}
interface DataFormatterContext<T extends ChartType> {
data: DataTypeMap<T>
dataFormatter: DataFormatterTypeMap<T>
chartParams: ChartParams
}
dataFormatter.valueAxis名稱 說明 型別 position 圖軸擺放位置,須注意該欄位設定必須和 groupAxis所設定的position是垂直的(比如groupAxis為bottom時valueAxis就必須為left或right'top' | 'bottom' | 'left' | 'right'scaleDomain 資料的最小值及最大值的範圍設定:
[0] =>'min': 最小值,'auto': 取最小值,但若大於0則保持為0
[1] =>'max': 最大值,'auto': 取最大值,但若小於0則保持為0[number | 'min' | 'auto', number | 'max' | 'auto']scaleRange 映射到圖軸的範圍設定(0 ~ 1) [number, number]label 圖軸標籤 string
TIP
圖軸的參數設定是比較複雜的概念,scaleDomain 和 scaleRange 這兩個欄位要互相搭配,也就是「資料」=>「圖軸」映射的設定。
- 一般情況(預設值) - 資料範圍由 0 ~ 最大值(自動判斷資料的正負值)
{
scaleDomain: ['auto', 'auto'],
scaleRange: [0, 0.9]
}
- 顯示最小到最大值的區域,當只想顯示特定資料範圍的圖表時可以這樣設定
{
scaleDomain: ['min', 'max'],
scaleRange: [0.1, 0.9]
}
- 指定範圍
{
scaleDomain: [100, 300],
scaleRange: [0.1, 0.9]
}
dataFormatter.groupAxis名稱 說明 型別 position 圖軸擺放位置,須注意該欄位設定必須和 valueAxis所設定的position是垂直的(比如groupAxis為bottom時valueAxis就必須為left或right'top' | 'bottom' | 'left' | 'right'scaleDomain 資料的最小值及最大值的範圍設定,以 data$資料中的 Group 資料(預設是「欄」為方向)索引為單位[number, number | 'max']scalePadding 圖軸左右兩側的間距,以圖軸刻度為單位 numberlabel 圖軸標籤 stringdataFormatter.container名稱 說明 型別 columnAmount 「欄」的數量 numberrowAmount 「列」的數量 numbercolumnGap 欄的間距 number | 'auto'rowGap 列的間距 number | 'auto'預設值:
const DEFAULT_DATA_FORMATTER_GRID: DataFormatterGrid = {
type: 'grid',
visibleFilter: (datum, context) => true,
seriesDirection: 'row',
rowLabels: [],
columnLabels: [],
valueAxis: {
position: 'left',
scaleDomain: ['auto', 'auto'],
scaleRange: [0, 0.9],
label: '',
},
groupAxis: {
position: 'bottom',
scaleDomain: [0, 'max'],
scalePadding: 0.5,
label: ''
},
separateSeries: false,
container: {
columnAmount: 1,
rowAmount: 1,
columnGap: 'auto',
rowGap: 'auto'
}
}
MultiGrid
型別:
DataFormatterMultiGridPartial欄位:
名稱 說明 型別 visibleFilter 資料篩選函式 (datum: ComputedDatumGrid, context: DataFormatterContext<'grid'>) => boolean | nullgridList 各別 Grid 映射資料的設定,其設定格式和 Grid資料類別的 DataFormatter相同Array<DataFormatterGridGrid>container 多圖表容器布局 DataFormatterContainerseparateGrid 以 Grid 分類分開顯示(以 container欄位設定的布局擺放)booleandataFormatter.gridList[]名稱 說明 型別 seriesDirection 定義 data$資料的「列」或「欄」為 SeriesbooleanrowLabels data$資料「列」的標籤booleancolumnLabels data$資料「欄」的標籤booleanvalueAxis 資料圖軸(預設為 Y 軸)設定 DataFormatterValueAxisgroupAxis 群組圖軸(預設為 X 軸)設定 DataFormatterGroupAxiscontainer 多圖表容器布局 DataFormatterContainerseparateSeries 以 Series 分類分開顯示(以 container欄位設定的布局擺放)boolean
TIP
gridList[]中的欄位格式和Grid資料類別的 DataFormatter 完全相同,所以細部的欄位說明就不再重覆。當
gridList[]陣列數量和data$內 Grid 資料(陣列)數量不一致的時候,會以gridList[0](如無設定就是以預設值)為主。
dataFormatter.container名稱 說明 型別 columnAmount 「欄」的數量 numberrowAmount 「列」的數量 numbercolumnGap 欄的間距 number | 'auto'rowGap 列的間距 number | 'auto'預設值:
const DEFAULT_DATA_FORMATTER_MULTI_GRID: DataFormatterMultiGrid = {
type: 'multiGrid',
visibleFilter: (datum, context) => true,
gridList: [
{
seriesDirection: 'row',
rowLabels: [],
columnLabels: [],
valueAxis: {
position: 'left',
scaleDomain: ['auto', 'auto'],
scaleRange: [0, 0.9],
label: '',
},
groupAxis: {
position: 'bottom',
scaleDomain: [0, 'max'],
scalePadding: 0.5,
label: ''
},
separateSeries: false,
},
],
separateGrid: false,
container: {
columnAmount: 1,
rowAmount: 1,
columnGap: 'auto',
rowGap: 'auto'
}
}
MultiValue
型別:
DataFormatterMultiValuePartial欄位:
名稱 說明 型別 visibleFilter 資料篩選函式 (datum: ComputedDatumMultiValue, context: DataFormatterContext<'multiValue'>) => boolean | nullcategoryLabels Category 標籤 string[]xAxis X 圖軸設定 DataFormatterAxisyAxis Y 圖軸設定 DataFormatterAxiscontainer 多圖表容器布局 DataFormatterContainerseparateCategory 以 Category 分類分開顯示(以 container欄位設定的布局擺放)boolean
詳細型別
interface ComputedDatumMultiValue {
id: string
index: number
label: string
visible: boolean
data: any
datumIndex: number
value: number[]
color: string
categoryIndex: number
categoryLabel: string
}
interface DataFormatterContext<T extends ChartType> {
data: DataTypeMap<T>
dataFormatter: DataFormatterTypeMap<T>
chartParams: ChartParams
}
dataFormatter.xAxis及dataFormatter.yAxis名稱 說明 型別 scaleDomain 資料的最小值及最大值的範圍設定:
[0] =>'min': 最小值,'auto': 取最小值,但若大於0則保持為0
[1] =>'max': 最大值,'auto': 取最大值,但若小於0則保持為0[number | 'min' | 'auto', number | 'max' | 'auto']scaleRange 映射到圖軸的範圍設定(0 ~ 1) [number, number]label 圖軸標籤 string
TIP
圖軸的參數設定是比較複雜的概念,scaleDomain 和 scaleRange 這兩個欄位要互相搭配,也就是「資料」=>「圖軸」映射的設定。
- 一般情況(預設值) - 資料範圍由 0 ~ 最大值(自動判斷資料的正負值)
{
scaleDomain: ['auto', 'auto'],
scaleRange: [0, 0.9]
}
- 顯示最小到最大值的區域,當只想顯示特定資料範圍的圖表時可以這樣設定
{
scaleDomain: ['min', 'max'],
scaleRange: [0.1, 0.9]
}
- 指定範圍
{
scaleDomain: [100, 300],
scaleRange: [0.1, 0.9]
}
dataFormatter.container名稱 說明 型別 columnAmount 「欄」的數量 numberrowAmount 「列」的數量 numbercolumnGap 欄的間距 number | 'auto'rowGap 列的間距 number | 'auto'預設值:
const DEFAULT_DATA_FORMATTER_MULTI_VALUE: DataFormatterMultiValue = {
type: 'multiValue',
visibleFilter: (datum, context) => true,
categoryLabels: [],
xAxis: {
scaleDomain: ['auto', 'auto'],
scaleRange: [0, 0.9],
label: '',
},
yAxis: {
scaleDomain: ['auto', 'auto'],
scaleRange: [0, 0.9],
label: '',
},
container: {
columnAmount: 1,
rowAmount: 1,
columnGap: 'auto',
rowGap: 'auto'
},
separateCategory: false
}
Relationship
型別:
DataFormatterRelationshipPartial欄位:
名稱 說明 型別 visibleFilter 資料篩選函式 (datum: ComputedNode, context: DataFormatterContext<'relationship'>) => boolean | nullcategoryLabels Category 標籤 string[]
詳細型別
interface ComputedNode {
id: string
index: number
label: string
visible: boolean
data: any
value: number | null
color: string
categoryIndex: number
categoryLabel: string
}
interface DataFormatterContext<T extends ChartType> {
data: DataTypeMap<T>
dataFormatter: DataFormatterTypeMap<T>
chartParams: ChartParams
}
- 預設值:
const DEFAULT_DATA_FORMATTER_RELATIONSHIP: DataFormatterRelationship = {
type: 'relationship',
visibleFilter: (datum, context) => true,
categoryLabels: []
}
Tree
型別:
DataFormatterTreePartial欄位:
名稱 說明 型別 visibleFilter 資料篩選函式 (datum: ComputedDataTree, context: DataFormatterContext<'tree'>) => boolean | nullcategoryLabels Category 標籤 string[]
詳細型別
interface ComputedDataTree {
level: number
seq: number
children?: ComputedDataTree[]
}
interface DataFormatterContext<T extends ChartType> {
data: DataTypeMap<T>
dataFormatter: DataFormatterTypeMap<T>
chartParams: ChartParams
}
- 預設值:
const DEFAULT_DATA_FORMATTER_TREE: DataFormatterTree = {
type: 'tree',
visibleFilter: (datum, context) => true,
categoryLabels: []
}