1、期望效果

以柱状图为例,在鼠标滑过每个数据标签时,为了更友好地显示数据内容,需要对显示的数据内容作格式化处理,添加自定义内容。

如下图,鼠标滑过每个数据项时,
第1张是默认提示框;
第2张是处理成百分比数据后,显示当前单个数据项的提示框;
第3张是处理成百分比数据后,显示当前横坐标下多个数据项的提示框。

 
图1、默认提示框.jpg
 
图2、单项提示框.jpg
 
图3、多项提示框.jpg

2、实现

(本文代码只涉及配置项的部分代码)

上述图片的效果可用echarts的tooltip组件中的一个formatter方法实现,formatter支持字符串和回调函数两种配置方式(本文只描述回调函数的实现方式)。
(具体参考:http://echarts.baidu.com/option.html#tooltip.formatter)。

2.1 显示单项数据内容

(处理上图2提示框的效果)

/**
* tooltip配置项示例
*/ //用formatter回调函数显示单项数据内容
tooltip: {
trigger: 'item',
formatter: function(data)
{
return data.name + '<br/>' +data.seriesName + ':'+(data.value * 100)+'%'; //将小数转化为百分数显示
}
}

2.2 显示多项数据内容

(处理上图3提示框的效果)

/**
* tooltip配置项示例
*/ //用formatter回调函数显示多项数据内容
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回调函数的传参

formatter回调函数的传参格式为:

 (params: Object|Array, ticket: string, callback: (ticket: string, html: string)) => string

描述:
1、params:
(1)当tooltip的trigger为‘item’时,显示单项数据内容。formatter回调函数的第一个参数传入一个数据项对象;
(2)当tooltip的trigger为‘axis’时,显示多项数据内容数组。formatter回调函数的第一个参数传入当前类目下的数据项对象数组。
2、ticket:异步回调标识,无需关心,用作callback的传参。
3、callback:异步回调函数,传递ticket与填充内容的html两个参数。

当tooltip的trigger为‘item’时,在控制台中输出的单项数据示例对象为:

{
$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 }

其中,几个重要的data对象属性如下:
seriesName:系列名称
value:当前数据值
name:数据名,类目名(上述柱状图中表示当前横坐标数据名)

模拟异步返回提示框内容如下:

//用formatter回调函数模拟异步返回提示框内容
tooltip: {
trigger: 'item',
formatter: function(param, ticket, callback)
{
//用定时器模拟异步事件
setTimeout(function() {
var res = param.name + '<br/>' +param.seriesName + ':'+(param.value * 100)+'%';
callback(ticket, res);
}, 1000);
return '';//内容还没返回时显示的内容
}
}

3、扩展-其他配置项的formatter

3.1 直角坐标轴(xAxis/yAxis)中axisLabel的formatter

显示效果为上图2-单项提示框的y轴刻度数据。

//yAxis/xAxis配置项示例——用axisLabel 的formatter回调函数处理数据格式
yAxis: {
name: '销量占比',
axisLabel : {
formatter: function(value) {
if(value == 0) {
return value;
}else {
return value*100+'%';
} }
}
}

链接:https://www.jianshu.com/p/aa585c304660

在echarts中自定义提示框内容的更多相关文章

  1. echarts中tooltip提示框位置控制

    关键代码: position: function(point, params, dom, rect, size) { //其中point为当前鼠标的位置,size中有两个属性:viewSize和con ...

  2. Echarts修改提示框及自定义提示框内容

    1:首先先定义自定义的json数据 var msg = [{ 'tell':'110', 'ContentMessage':"我今天去吃大餐" },{ 'tell':'111', ...

  3. 在ASP.NET中引用自定义提示框

    在html网页中自定义提示框 正文: 在一般的B/S架构中项目,与用户的交互信息是非常重要的.在一般的情况下,设计人员都在把用户信息呈现在html中,用div和span去弹出相关信息.对于一般的情况而 ...

  4. echarts自定义tooltip提示框内容

    1.echarts自定义tooltip提示框内容 https://blog.csdn.net/dreamsup/article/details/56667330 2.关于Echarts的formatt ...

  5. vue2.0 自定义 提示框(Toast)组件

    1.自定义 提示框 组件 src / components / Toast / index.js /** * 自定义 提示框( Toast )组件 */ var Toast = {}; var sho ...

  6. vue 自定义 提示框(Toast)组件

    1.自定义 提示框 组件 src / components / Toast / index.js /** * 自定义 提示框( Toast )组件 */ var Toast = {}; var sho ...

  7. 使提示框居中显示&自定义提示框

    ToastActivity.java文件: 1 public class ToastActivity extends AppCompatActivity { 2 private Button mbtn ...

  8. 解决input中智能提示框onblur与onclick冲突的问题

    背景: 制作一个类似百度输入法的智能提示框, 其中当关键词输入进来时,会有智能提示展开,实际需求是当点击智能提示框的汉字时,输入框中自动补全并关闭智能提示, 当点击其他区域时,智能提示框自动隐藏,如下 ...

  9. 活动中使用提示框(Toast)

    任务名称:活动中使用Toast 任务现象:点击button时,会弹出提示框:You Click Button 步骤 1.创建一个项目,新建活动和加载布局.参考: http://8c925c9a.wiz ...

随机推荐

  1. SQL Server 2012不支持Microsoft Visual Studio Test Controller 2010

    折腾了一个上午, 发现Test Controller怎么都连不上SQL. 能尝试的都尝试了, 觉得应该看看是不是有不支持的问题.   找到了这篇. TFS 2010 will not support ...

  2. SQL INNER JOIN

    A INNER JOIN command is queries that combine data from more than 1 table.For two tables that want to ...

  3. React 同构思想

    作者:yangchunwen React比较吸引我的地方在于其客户端-服务端同构特性,服务端-客户端可复用组件,本文来简单介绍下这一架构思想. 出于篇幅原因,本文不会介绍React基础,所以,如果你还 ...

  4. (转)实现AI中LOD优化技术

    LOD(Level Of Detail)是3D渲染中用到的概念,按照wikipedia上的翻译,可以译为“细节层次”,它是一种根据与观察点的距离,来减低物体或者模型的复杂度来提升渲染效率的优化技术,因 ...

  5. Java最大的优势真的在于跨平台吗?

    下面讨论仅仅针对PC端和移动端. 曾经是,但如今已经不是了. 有跨平台需求的仅仅是client应用.而不是服务端.比如桌面应用,你的客户可能是Windows用户.也可能是Linux用户,这时候假设不想 ...

  6. javaWeb注册,登陆,注销功能的实现

    一:注册页面:regist.jsp: <%@ page language="java" contentType="text/html; charset=UTF-8& ...

  7. jquery翻页

    http://js.itivy.com/simplePagination.js/index.html#page-10 http://www.oschina.net/news/41941/7-html5 ...

  8. synchronized探究

    synchronized的加锁方式 synchronized的本质是给对象上锁,对象包括实例对象,也包括类对象.常见的加锁方式有下面几种写法:(1)在非static方法上加synchronized,例 ...

  9. 如何阅读Android系统源码-收藏必备

    对于任何一个对Android开发感兴趣的人而言,对于android系统的学习必不可少.而学习系统最佳的方法就如linus所言:"RTFSC"(Read The Fucking So ...

  10. POJ 3463 Sightseeing

    最短路+次短路(Dijkstra+priority_queue) 题意是要求你找出最短路的条数+与最短路仅仅差1的次短路的条数. 開始仅仅会算最短路的条数,和次短路的长度.真是给次短路条数跪了.ORZ ...