參考:
http://echarts.baidu.com/option.html#tooltip.formatter
http://www.ithao123.cn/content-3751220.html
(本文數(shù)據(jù)純屬虛構(gòu))
1、期望效果
以柱狀圖為例,在鼠標(biāo)滑過每個(gè)數(shù)據(jù)標(biāo)簽時(shí),為了更友好地顯示數(shù)據(jù)內(nèi)容荒适,需要對(duì)顯示的數(shù)據(jù)內(nèi)容作格式化處理舌菜,添加自定義內(nèi)容。
如下圖,鼠標(biāo)滑過每個(gè)數(shù)據(jù)項(xiàng)時(shí)荷憋,
第1張是默認(rèn)提示框勒庄;
第2張是處理成百分比數(shù)據(jù)后,顯示當(dāng)前單個(gè)數(shù)據(jù)項(xiàng)的提示框局装;
第3張是處理成百分比數(shù)據(jù)后铐尚,顯示當(dāng)前橫坐標(biāo)下多個(gè)數(shù)據(jù)項(xiàng)的提示框。
2烹吵、實(shí)現(xiàn)
(本文代碼只涉及配置項(xiàng)的部分代碼)
上述圖片的效果可用echarts的tooltip組件中的一個(gè)formatter方法實(shí)現(xiàn)肋拔,formatter支持字符串和回調(diào)函數(shù)兩種配置方式(本文只描述回調(diào)函數(shù)的實(shí)現(xiàn)方式)凉蜂。
(具體參考:http://echarts.baidu.com/option.html#tooltip.formatter)窿吩。
2.1 顯示單項(xiàng)數(shù)據(jù)內(nèi)容
(處理上圖2提示框的效果)
/**
* tooltip配置項(xiàng)示例
*/
//用formatter回調(diào)函數(shù)顯示單項(xiàng)數(shù)據(jù)內(nèi)容
tooltip: {
trigger: 'item',
formatter: function(data)
{
return data.name + '<br/>' +data.seriesName + ':'+(data.value * 100)+'%'; //將小數(shù)轉(zhuǎn)化為百分?jǐn)?shù)顯示
}
}
2.2 顯示多項(xiàng)數(shù)據(jù)內(nèi)容
(處理上圖3提示框的效果)
/**
* tooltip配置項(xiàng)示例
*/
//用formatter回調(diào)函數(shù)顯示多項(xiàng)數(shù)據(jù)內(nèi)容
tooltip: {
trigger: 'axis',
formatter: function(datas)
{
var res = datas[0].name + '<br/>', val;
for(var i = 0, length = datas.length; i < length; i++) {
val = (datas[i].value*100) + '%';
res += datas[i].seriesName + ':' + val + '<br/>';
}
return res;
}
}
2.3 formatter回調(diào)函數(shù)的傳參
formatter回調(diào)函數(shù)的傳參格式為:
(params: Object|Array, ticket: string, callback: (ticket: string, html: string)) => string
描述:
1、params:
(1)當(dāng)tooltip的trigger為‘item’時(shí)刽脖,顯示單項(xiàng)數(shù)據(jù)內(nèi)容。formatter回調(diào)函數(shù)的第一個(gè)參數(shù)傳入一個(gè)數(shù)據(jù)項(xiàng)對(duì)象;
(2)當(dāng)tooltip的trigger為‘a(chǎn)xis’時(shí)檬某,顯示多項(xiàng)數(shù)據(jù)內(nèi)容數(shù)組橙喘。formatter回調(diào)函數(shù)的第一個(gè)參數(shù)傳入當(dāng)前類目下的數(shù)據(jù)項(xiàng)對(duì)象數(shù)組。
2初坠、ticket:異步回調(diào)標(biāo)識(shí)碟刺,無需關(guān)心半沽,用作callback的傳參。
3做葵、callback:異步回調(diào)函數(shù)占哟,傳遞ticket與填充內(nèi)容的html兩個(gè)參數(shù)。
當(dāng)tooltip的trigger為‘item’時(shí)榨乎,在控制臺(tái)中輸出的單項(xiàng)數(shù)據(jù)示例對(duì)象為:
{
$vars: ["seriesName", "name", "value"],
color: "#c23531",
componentSubType: "bar",
componentType: "series",
data: 0.6,
dataIndex: 2,
dataType: undefine,
dname: "1月3日",
seriesIndex: 0,
seriesName: "iphone6",
seriesType: "bar",
value: 0.6
}
其中怎燥,幾個(gè)重要的data對(duì)象屬性如下:
seriesName:系列名稱
value:當(dāng)前數(shù)據(jù)值
name:數(shù)據(jù)名,類目名(上述柱狀圖中表示當(dāng)前橫坐標(biāo)數(shù)據(jù)名)
模擬異步返回提示框內(nèi)容如下:
//用formatter回調(diào)函數(shù)模擬異步返回提示框內(nèi)容
tooltip: {
trigger: 'item',
formatter: function(param, ticket, callback)
{
//用定時(shí)器模擬異步事件
setTimeout(function() {
var res = param.name + '<br/>' +param.seriesName + ':'+(param.value * 100)+'%';
callback(ticket, res);
}, 1000);
return '';//內(nèi)容還沒返回時(shí)顯示的內(nèi)容
}
}
3蜜暑、擴(kuò)展-其他配置項(xiàng)的formatter
3.1 直角坐標(biāo)軸(xAxis/yAxis)中axisLabel的formatter
顯示效果為上圖2-單項(xiàng)提示框的y軸刻度數(shù)據(jù)铐姚。
//yAxis/xAxis配置項(xiàng)示例——用axisLabel 的formatter回調(diào)函數(shù)處理數(shù)據(jù)格式
yAxis: {
name: '銷量占比',
axisLabel : {
formatter: function(value) {
if(value == 0) {
return value;
}else {
return value*100+'%';
}
}
}
}