在做数据可视化的过程中,遇到了一个问题,就是给图表tooltip重命名。

在研究后,发现了三种方法:

方法1:一般情况下,可以在给chart绑定数据源时,添加scale配置,并在scale配置中设置别名,直接在官网的实例代码中进行修改演示:

代码如下:

const data = [
{ year: '1991', value: 3 },
{ year: '1992', value: 4 },
{ year: '1993', value: 3.5 },
{ year: '1994', value: 5 },
{ year: '1995', value: 4.9 },
{ year: '1996', value: 6 },
{ year: '1997', value: 7 },
{ year: '1998', value: 9 },
{ year: '1999', value: 13 }
];
const chart = new G2.Chart({
container: 'container',
forceFit: true,
height: 500
});
chart.source(data);
chart.scale('value', {
alias:'值',    //为value字段设置别名,在tooltip显示时则显示别名
min: 0
});
chart.scale('year', {
range: [ 0, 1 ]
});
chart.tooltip({
crosshairs: {
type: 'line'
}
});
chart.line().position('year*value');
chart.point().position('year*value')
.size(4)
.shape('circle')
.style({
stroke: '#fff',
lineWidth: 1
});
chart.render();

  

图像如下:

方法2:在geom中添加tooltip属性,返回处理后的结果,并且在chart的tooltip中自定义模板

const data = [
{ year: '1991', value: 3 },
{ year: '1992', value: 4 },
{ year: '1993', value: 3.5 },
{ year: '1994', value: 5 },
{ year: '1995', value: 4.9 },
{ year: '1996', value: 6 },
{ year: '1997', value: 7 },
{ year: '1998', value: 9 },
{ year: '1999', value: 13 }
];
const chart = new G2.Chart({
container: 'container',
forceFit: true,
height: 500
});
chart.source(data);
chart.scale('value', {
min: 0
});
chart.scale('year', {
range: [ 0, 1 ]
});
chart.tooltip({
crosshairs: {
type: 'line'
},
showTitle: false,
itemTpl: '<li><span>年份: {year}</span><br><span>产量: {yield}</span></li>'
});
chart.line().position('year*value').tooltip('year*value',function(year,value){
/**
*此处也可以添加数据处理语句
*/
return {
year:year+'年',
yield:value+'亿吨',
}
});
chart.point().position('year*value')
.size(4)
.shape('circle')
.style({
stroke: '#fff',
lineWidth: 1
}).tooltip('year*value',function(year,value){
/**
*此处也可以添加数据处理语句
*/
return {
year:year+'年',
yield:value+'亿吨',
}
});
chart.render();

 

图像如下:

方法3:若数据源经过了transform的fold转换,有些情况下前两种方法可能就不会适用了,因为在数据转换前,格式是{ year: '1996', north: 322, south: 162 },

在经过fold转换后,格式为{"year": "1996","type": "north","value": 322},{"year": "1996","type": "south","value": 162}

此时已经无法为north和south设置别名了,这时我们可以在fold转换前在进行一次rename转换。

const { DataView } = DataSet;
const data = [
{ year: '1996', north: 322, south: 162 },
{ year: '1997', north: 324, south: 90 },
{ year: '1998', north: 329, south: 50 },
{ year: '1999', north: 342, south: 77 },
{ year: '2000', north: 348, south: 35 },
{ year: '2001', north: 334, south: -45 },
{ year: '2002', north: 325, south: -88 },
{ year: '2003', north: 316, south: -120 },
{ year: '2004', north: 318, south: -156 },
{ year: '2005', north: 330, south: -123 },
{ year: '2006', north: 355, south: -88 },
{ year: '2007', north: 366, south: -66 },
{ year: '2008', north: 337, south: -45 },
{ year: '2009', north: 352, south: -29 },
{ year: '2010', north: 377, south: -45 },
{ year: '2011', north: 383, south: -88 },
{ year: '2012', north: 344, south: -132 },
{ year: '2013', north: 366, south: -146 },
{ year: '2014', north: 389, south: -169 },
{ year: '2015', north: 334, south: -184 }
];
// 数据需要加工成 {year: '1996', type: 'north', value: 50} 的模式
const dv = new DataView().source(data);
dv.transform({
type:'rename',
map:{
north:'北方',
south:'南方',
}
})
dv.transform({
type: 'fold',
fields: [ '北方', '南方' ], // 展开字段集
key: 'type', // key字段
value: 'value' // value字段
}); const chart = new G2.Chart({
container: 'container',
forceFit: true,
height: 500
});
chart.source(dv, {
year: {
range: [ 0, 1 ]
}
});
chart.tooltip({
crosshairs: {
type: 'line'
}
});
chart.area().position('year*value').color('type');
chart.line().position('year*value').color('type')
.size(2);
chart.render();

图像如下:

目前发现了这三种方法,若有其他更好的方法,请留言,共同学习

最新文章

  1. 新手看Mockplus
  2. 写在Python前
  3. Java程序编译和运行的过程【转】
  4. 专题实验 PGA
  5. Lesson: Introduction to JAXP
  6. JS的事件监听机制
  7. ASP.NET 安全认证
  8. printf那点事
  9. 图片轮播插件Nivo Slider
  10. rabbitmq(中间消息代理)在python中的使用
  11. Java学习笔记25(System类)
  12. ffdshow 源代码分析 8: 视频解码器类(TvideoCodecDec)
  13. Executor框架简介
  14. C++ this指针的详解
  15. Java编译与反编译
  16. JavaScript_几种创建对象(2017-07-04)
  17. Xml文档添加节点和属性
  18. [置顶] Redis String类型数据常用的16条命令总结
  19. ImportError DLL load failed: %1 不是有效的 Win32 应用程序
  20. js json转url参数

热门文章

  1. Spring Boot 2.X(十六):应用监控之 Spring Boot Actuator 使用及配置
  2. 由浅入深——从ArrayList浅谈并发容器
  3. maven编码配置
  4. VUE 表格进入页面加载初始数据及操作后刷新数据
  5. 装上linux后的准备工作
  6. flex一些属性
  7. 3sql
  8. Xamarin.Forms 学习系列之优秀UI收集
  9. django-migrate一败再败
  10. linux 系统自动定制运行 crontab