分段展示

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            var data =   [
    [0, 35, 60, 67],
    [1, 53, 79, 38],
    [2, 50, 89,47]
]

var data1 =   [
    [0, 150,179, 45],
    [1, 313, 219, 89],
    [2, 201, 191,147]
]

var data2 =   [
    [0, 255,197, 145],
    [1, 315, 119, 189],
    [2, 255, 231,127]
]

function renderItem(params, api) {
    var xValue = api.value(0);
    var currentSeriesIndices = api.currentSeriesIndices();
    var barLayout = api.barLayout({
        count: currentSeriesIndices.length - 1
    });
    var points = [];
    var customSeries = option.series.filter(v => v.type === 'custom')
    console.log(customSeries)
    for (var i = 0; i < currentSeriesIndices.length; i++) {
        var seriesIndex = currentSeriesIndices[i];
        if (seriesIndex !== params.seriesIndex && option.series[seriesIndex].type ==='bar') {
            var point = api.coord([xValue, api.value(seriesIndex + 1)]);
            point[0] += barLayout[i].offsetCenter +  (customSeries.length - 1) *i * ((barLayout[i-1]||{}).width || 0) / 2;
            console.log()
            points.push(point);
        }
    }
    var style = api.style({
        stroke: api.visual('color'),
        fill: null
    });
    return {
        type: 'polyline',
        shape: {
            points: points
        },
        style: style
    };
}
option = {
    title: {
        text: 'Awesome Chart'
    },
    xAxis: {
        data: ['Sun', 'Mon', 'Tue']
    },
    yAxis: [{},
        {}
    ],
    series: [{
            type: 'bar',
            data: [220, 182, 191]
        },
        {
            type: 'bar',
            data: [220, 182, 191]
        },
        {
            type: 'bar',
            data: [120, 282, 291]
        },
        {
            type: 'custom',
            name: 'trend',
            yAxisIndex: 1,
            renderItem: renderItem,
            itemStyle: {
                normal: {
                    borderWidth: 2
                }
            },
            encode: {
                x: 0,
                y: [1, 2, 3]
            },
            data: data,
            z: 100
        },
                {
            type: 'custom',
            name: 'trend1',
            yAxisIndex: 1,
            renderItem: renderItem,
            itemStyle: {
                normal: {
                    borderWidth: 2
                }
            },
            encode: {
                x: 0,
                y: [1, 2, 3]
            },
            data: data1,
            z: 100
        },
         {
            type: 'custom',
            name: 'trend2',
            yAxisIndex: 1,
            renderItem: renderItem,
            itemStyle: {
                normal: {
                    borderWidth: 2
                }
            },
            encode: {
                x: 0,
                y: [1, 2, 3]
            },
            data: data2,
            z: 100
        }
    ]
};