页面树结构
转至元数据结尾
转至元数据起始

提示:本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。

需求

资源中有线图时,有时候希望以指标轴数据的最小值的百分比作为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 评论

  1. 刘俊 发表:

    如果是双Y轴,那么最后一行要改为:option.yAxis[0].min = Math.floor(min * 0.8); 

    yAxis[0]:代表左y轴

    yAxis[1]:代表右y轴

  2. 刘怡霞 发表:

    双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) {}
    }