赞
踩
这是做项目的时候遇到需要用echarts展示数据:
官方柱状图:
option = { color: ['#3398DB'], tooltip: { trigger: 'axis', axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: 'shadow' // 默认为直线,可选为:'line' | 'shadow' } }, grid: { left: '3%', right: '4%', bottom: '3%', containLabel: true }, xAxis: [ { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], axisTick: { alignWithLabel: true } } ], yAxis: [ { type: 'value' } ], series: [ { name: '直接访问', type: 'bar', barWidth: '60%', data: [10, 52, 200, 334, 390, 330, 220] } ] };
我们自定义tooltip:(核心是利用了tooltip下的formatter函数)
tooltip: {
// trigger: 'axis',
formatter(params) {
console.log(params) //我们可以打印该值
},
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
打印params发现是一个对象:找到data属性
这个data属性对应的值就是设定的series里的data数据的数据值:
series: [{
name: '直接访问',
type: 'bar',
barWidth: '60%',
data: [10, 52, 200, 334, 390, 330, 220]
}]
现在我们就可以通过改变这个data值:
data: [{
title:'第一天',
value: 10
}, {
title: '第二天',
value: 52
}, {
title: '第三天',
value: 220
}]
再次打印params:
现在就可以params参数做自定义hover数据展示效果了:
tooltip: {
// trigger: 'axis',
formatter(params) {
// 返回值就是html代码可以使用标签
return `
天数:${params.data.title} </br>
数值:${params.data.value}
`;
},
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
}
},
结果显示:
好了,我们接下来操作柱状图上方显示自定义数值:
series下有一个属性itemStyle,里面设定自定义显示数字:(同样用到了formatter函数)
itemStyle: {
normal: {
label: {
show: true, //开启显示
formatter(params) {
return params.data.value
},
position: 'top', //在上方显示
textStyle: { //数值样式
color: '#ff0000',
fontSize: 12
}
}
}
}
当然也可以显示百分数:改下formatter函数formatter: '{c}%',
下面是做vue项目时用到的echarts:
用了一个三元表达式是为了防止各条数据数值差距过大,引起柱状图高低明显,这里我先是在tooltip里缩小数值过大的比值,然后在显示时恢复过来:
tooltip: {
// trigger: 'item',
formatter: function (params) {
// 自定义显示hover数据
return `${params.data.title}:${params.data.flag ? params.data.value * 100 : params.data.value}</br>
漫画名:${params.data.cartonTitle}`;
},
axisPointer: { // 坐标轴指示器,坐标轴触发有效
type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
},
},
series: [{ type: 'bar', barWidth: "50%", data: dataAry, itemStyle: { barBorderRadius: 5, normal: { label: { show: true, //开启显示 formatter(params) { // 处理数值显示格式 return params.data.flag ? params.data.value * 100 : params.data.value }, position: 'top', //在上方显示 textStyle: { //数值样式 color: '#ff0000', fontSize: 12 } } } } }]
效果如图:真正数值显示出来,又不会因为二边数值差距过大而引起图标难看。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。