tooltip. formatter 🤛
stringFunction
提示框浮層內容格式器,支持字符串模板和回調函數兩種形式。
1, 字符串模板
模板變量有 {a}
, {b}
,{c}
,{d}
,{e}
,分別表示系列名,數據名,數據值等。 在 trigger 爲 'axis'
的時候,會有多個系列的數據,此時可以通過 {a0}
, {a1}
, {a2}
這種後面加索引的方式表示系列的索引。 不同圖表類型下的 {a}
,{b}
,{c}
,{d}
含義不一樣。 其中變量{a}
, {b}
, {c}
, {d}
在不同圖表類型下代表數據含義爲:
-
折線(區域)圖、柱狀(條形)圖、K線圖 :
{a}
(系列名稱),{b}
(類目值),{c}
(數值),{d}
(無) -
散點圖(氣泡)圖 :
{a}
(系列名稱),{b}
(數據名稱),{c}
(數值數組),{d}
(無) -
地圖 :
{a}
(系列名稱),{b}
(區域名稱),{c}
(合併數值),{d}
(無) -
餅圖、儀表盤、漏斗圖:
{a}
(系列名稱),{b}
(數據項名稱),{c}
(數值),{d}
(百分比)
更多其它圖表模板變量的含義可以見相應的圖表的 label.formatter 配置項。
示例:
formatter: '{b0}: {c0}<br />{b1}: {c1}'
2, 回調函數
回調函數格式:
(params: Object|Array, ticket: string, callback: (ticket: string, html: string)) => string
第一個參數 params
是 formatter 需要的數據集。格式如下:
{
componentType: 'series',
// 系列類型
seriesType: string,
// 系列在傳入的 option.series 中的 index
seriesIndex: number,
// 系列名稱
seriesName: string,
// 數據名,類目名
name: string,
// 數據在傳入的 data 數組中的 index
dataIndex: number,
// 傳入的原始數據項
data: Object,
// 傳入的數據值。在多數系列下它和 data 相同。在一些系列下是 data 中的分量(如 map、radar 中)
value: number|Array|Object,
// 座標軸 encode 映射信息,
// key 爲座標軸(如 'x' 'y' 'radius' 'angle' 等)
// value 必然爲數組,不會爲 null/undefied,表示 dimension index 。
// 其內容如:
// {
// x: [2] // dimension index 爲 2 的數據映射到 x 軸
// y: [0] // dimension index 爲 0 的數據映射到 y 軸
// }
encode: Object,
// 維度名列表
dimensionNames: Array<String>,
// 數據的維度 index,如 0 或 1 或 2 ...
// 僅在雷達圖中使用。
dimensionIndex: number,
// 數據圖形的顏色
color: string,
// 餅圖的百分比
percent: number,
}
注:encode 和 dimensionNames 的使用方式,例如:
如果數據爲:
dataset: {
source: [
['Matcha Latte', 43.3, 85.8, 93.7],
['Milk Tea', 83.1, 73.4, 55.1],
['Cheese Cocoa', 86.4, 65.2, 82.5],
['Walnut Brownie', 72.4, 53.9, 39.1]
]
}
則可這樣得到 y 軸對應的 value:
params.value[params.encode.y[0]]
如果數據爲:
dataset: {
dimensions: ['product', '2015', '2016', '2017'],
source: [
{product: 'Matcha Latte', '2015': 43.3, '2016': 85.8, '2017': 93.7},
{product: 'Milk Tea', '2015': 83.1, '2016': 73.4, '2017': 55.1},
{product: 'Cheese Cocoa', '2015': 86.4, '2016': 65.2, '2017': 82.5},
{product: 'Walnut Brownie', '2015': 72.4, '2016': 53.9, '2017': 39.1}
]
}
則可這樣得到 y 軸對應的 value:
params.value[params.dimensionNames[params.encode.y[0]]]
在 trigger 爲 'axis'
的時候,或者 tooltip 被 axisPointer 觸發的時候,params
是多個系列的數據數組。其中每項內容格式同上,並且,
{
componentType: 'series',
// 系列類型
seriesType: string,
// 系列在傳入的 option.series 中的 index
seriesIndex: number,
// 系列名稱
seriesName: string,
// 數據名,類目名
name: string,
// 數據在傳入的 data 數組中的 index
dataIndex: number,
// 傳入的原始數據項
data: Object,
// 傳入的數據值。在多數系列下它和 data 相同。在一些系列下是 data 中的分量(如 map、radar 中)
value: number|Array|Object,
// 座標軸 encode 映射信息,
// key 爲座標軸(如 'x' 'y' 'radius' 'angle' 等)
// value 必然爲數組,不會爲 null/undefied,表示 dimension index 。
// 其內容如:
// {
// x: [2] // dimension index 爲 2 的數據映射到 x 軸
// y: [0] // dimension index 爲 0 的數據映射到 y 軸
// }
encode: Object,
// 維度名列表
dimensionNames: Array<String>,
// 數據的維度 index,如 0 或 1 或 2 ...
// 僅在雷達圖中使用。
dimensionIndex: number,
// 數據圖形的顏色
color: string,
}
注:encode 和 dimensionNames 的使用方式,例如:
如果數據爲:
dataset: {
source: [
['Matcha Latte', 43.3, 85.8, 93.7],
['Milk Tea', 83.1, 73.4, 55.1],
['Cheese Cocoa', 86.4, 65.2, 82.5],
['Walnut Brownie', 72.4, 53.9, 39.1]
]
}
則可這樣得到 y 軸對應的 value:
params.value[params.encode.y[0]]
如果數據爲:
dataset: {
dimensions: ['product', '2015', '2016', '2017'],
source: [
{product: 'Matcha Latte', '2015': 43.3, '2016': 85.8, '2017': 93.7},
{product: 'Milk Tea', '2015': 83.1, '2016': 73.4, '2017': 55.1},
{product: 'Cheese Cocoa', '2015': 86.4, '2016': 65.2, '2017': 82.5},
{product: 'Walnut Brownie', '2015': 72.4, '2016': 53.9, '2017': 39.1}
]
}
則可這樣得到 y 軸對應的 value:
params.value[params.dimensionNames[params.encode.y[0]]]
注: ECharts 2.x 使用數組表示各參數的方式不再支持。
第二個參數 ticket
是異步回調標識,配合第三個參數 callback
使用。 第三個參數 callback
是異步回調,在提示框浮層內容是異步獲取的時候,可以通過 callback 傳入上述的 ticket
和 html
更新提示框浮層內容。
示例:
formatter: function (params, ticket, callback) {
$.get('detail?name=' + params.name, function (content) {
callback(ticket, toHTML(content));
});
return 'Loading';
}