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

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

示例仅供参考,若是实际场景和示例需求场景有所差别,有可能需要自行调整宏代码。

需求

希望实现图形样式时表示可以支持通过变量控制柱状图颜色。

具体的需求为:需要根据图一中的“占比”的数值来改版图二中柱子的颜色,当“占比”大于0.04时柱子为绿色,小于0.04 柱子为红色。

图一:

图二:

思路

1)因为图形本身没有获取到所有数据的信息,因此需要先在这个图形的扩展属性上添加一下扩展属性:



 {
 "chartex": {
 "allFieldsData": true
 }
}

2)新建客户端宏模块

3)宏代码如下:

function main(chartView) {
    //echarts options对象 请参考http://echarts.baidu.com/option.html#series-bar.data.itemStyle.normal.color
    var options = chartView.getChartObject().getOptions(); //获取echarts图形信息
    //所有数据,请参考https://history.wiki.smartbi.com.cn/pages/viewpage.action?pageId=22938999
    var allFieldsData = options.allFieldsData;
    var allData = allFieldsData.data;//所有数据
    var flagColumnIndex = 3; //占比所在列序号,从0开始
    if (options.series && options.series.length > 0) {
        var columnSerieDatas = options.series[0].data; //柱子所在序列
        for (var di in columnSerieDatas) {
            var dataItem = columnSerieDatas[di];
            var flagValue = allData[di][flagColumnIndex].value;//获取占比的值
            dataItem.itemStyle = dataItem.itemStyle || {};
            dataItem.itemStyle.normal = dataItem.itemStyle.normal || {};
            dataItem.itemStyle.normal.color = (flagValue > 0.04) ? "#00ff00" : "#ff0000";
        }
    }
}

4)效果图:

柱子颜色根据占比来判断,大于0.04显示为绿色,小于0.04显示为红色

示例资源:根据占比来设置柱子颜色.xml