echarts 餅圖 label 的 formatter函數裏 {a} {b} {c} {d}分別代表什麼

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';
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章