提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。
需求
资源中有线图时,有时候希望以指标轴数据的最小值的百分比作为Y轴的起始值,那要如何实现?
调整前的效果:
调整后的效果:
思路
1)新建客户端宏
2)宏代码如下,设置Y轴起始点
function main(chartView) { var echarts = chartView.getChartObject(); var option = echarts.getOptions(); //此option已由smartbi系统封装。 try { debugger; var serie = option.series[0]; var data = serie.data; var min = parseFloat(data[0].value[1]); for (var i = 1; i < data.length; i++) { if (min > parseFloat(data[i].value[1])) { min = parseFloat(data[i].value[1]); } } option.yAxis.min = Math.floor(min * 0.8);//按指标轴数据最小值的0.8比例显示 } catch (e) {} }
2 评论
刘俊 发表:
如果是双Y轴,那么最后一行要改为:
option.yAxis[0].min = Math.floor(min *
0.8
);
yAxis[0]:代表左y轴
yAxis[1]:代表右y轴
刘怡霞 发表:
双Y轴根据不同系列值设置Y轴起始点可参考以下宏代码:(仅供参考)
function main(chartView) {
var echarts = chartView.getChartObject();
var option = echarts.getOptions(); //此option已由smartbi系统封装。
try {
debugger;
var serie = option.series[0];
var serie1 = option.series[1];
var data = serie.data;
var data1 = serie1.data;
var min = parseFloat(data[0].value[1]);
for (var i = 1; i < data.length; i++) {
if (min > parseFloat(data[i].value[1])) {
min = parseFloat(data[i].value[1]);
}
}
console.log("min="+min);
var min1 = parseFloat(data1[0].value[1]);
for (var j = 1; j < data1.length; j++) {
if (min1 > parseFloat(data1[j].value[1])) {
min1 = parseFloat(data1[j].value[1]);
}
}
console.log("min1="+min1);
option.yAxis[0].min = Math.floor(min * 0.8);//按指标轴数据最小值的0.8比例显示
option.yAxis[1].min = Math.floor(min1);
} catch (e) {}
}