pv -> cart -> buy 漏斗图

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            var data = [{
        name: '点击总人数',
        value: 18492966,
        label: "100%"
    },
    {
        name: '购买人数',
        value: 245829,
        label: "1.329%"
    }
];
var data2 = [{
        name: '点击总人数',
        value: 18492966,
        label: "100%"
    },
    {
        name: '点击,收藏人数',
        value: 309560,
        label: "1.674%"
    },
    {
        name: '点击,收藏,购买人数',
        value: 23256,
        label: "7.513%"
    }
];
var data3 = [{
        name: '点击总人数',
        value: 18492966,
        label: "100%"
    },
    {
        name: '点击,加购人数',
        value: 688761,
        label: "3.724%"
    },
    {
        name: '点击,加购,购买人数',
        value: 66683,
        label: "9.682%"
    }
];
var data4 = [{
        name: '点击总人数',
        value: 18492966,
        label: "100%"
    },
    {
        name: '点击,收藏并加购人数',
        value: 22052,
        label: "0.119%"
    },
    {
        name: '点击,收藏并加购,购买人数',
        value: 3502,
        label: "15.881%"
    }
];

function space_arr(data) {
    var space = [];
    data.forEach((item, index) => {
        space.push((18492966 - item.value) / 2);
    });
    return space;
}
data_space = space_arr(data);

getArrByKey = (data, k) => {
    let key = k || "value";
    let res = [];
    if (data) {
        data.forEach(function(t) {
            res.push(t[key]);
        });
    }
    return res;
};

option = {
    title: {
        text: 'pv -> buy 漏斗图'
    },
    toolbox: {
        show: true,
        iconStyle: {
            color: '#666',
            borderWidth: 0
        },
        emphasis: {
            iconStyle: {
                textFill: '#666',
                textPadding: 10
            },
        },
        left: 0,
        top: 30,
        itemSize: 20,
        itemGap: 20,
        feature: {
            myTool1: {
                show: true,
                title: 'pv -> buy',
                icon: 'path://M0 26h32v4h-32zM4 18h4v6h-4zM10 10h4v14h-4zM16 16h4v8h-4zM22 4h4v20h-4z',
                onclick: function() {
                    option.series[0].data = space_arr(data);
                    option.series[1].data = data;
                    option.series[2].data = space_arr(data);
                    option.yAxis[0].data = getArrByKey(data, 'name');
                    option.title.text = 'pv -> buy 漏斗图';
                    myChart.setOption(option);
                }
            },
            myTool2: {
                show: true,
                title: 'pv -> fav -> buy',
                icon: 'path://M0 26h32v4h-32zM4 18h4v6h-4zM10 10h4v14h-4zM16 16h4v8h-4zM22 4h4v20h-4z',
                onclick: function() {
                    option.series[0].data = space_arr(data2);
                    option.series[1].data = data2;
                    option.series[2].data = space_arr(data2);
                    option.yAxis[0].data = getArrByKey(data2, 'name');
                    option.title.text = 'pv -> fav -> buy 漏斗图';
                    myChart.setOption(option);
                }
            },
            myTool3: {
                show: true,
                title: 'pv -> cart -> buy',
                icon: 'path://M0 26h32v4h-32zM4 18h4v6h-4zM10 10h4v14h-4zM16 16h4v8h-4zM22 4h4v20h-4z',
                onclick: function() {
                    option.series[0].data = space_arr(data3);
                    option.series[1].data = data3;
                    option.series[2].data = space_arr(data3);
                    option.yAxis[0].data = getArrByKey(data3, 'name');
                    option.title.text = 'pv -> cart -> buy 漏斗图';
                    myChart.setOption(option);
                }
            },
            myTool4: {
                show: true,
                title: 'pv -> fav,cart -> buy',
                icon: 'path://M0 26h32v4h-32zM4 18h4v6h-4zM10 10h4v14h-4zM16 16h4v8h-4zM22 4h4v20h-4z',
                onclick: function() {
                    option.series[0].data = space_arr(data4);
                    option.series[1].data = data4;
                    option.series[2].data = space_arr(data4);
                    option.yAxis[0].data = getArrByKey(data4, 'name');
                    option.title.text = 'pv -> fav,cart -> buy 漏斗图';
                    myChart.setOption(option);
                }
            },
        }
    },
    grid: {
        top: '30%',
        bottom: '30%',
        right: 30,
        left: 30,
        containLabel: true
    },
    tooltip: {
        show: false,
        formatter: '{b} : {c}%'
    },
    xAxis: {
        show: false
    },
    yAxis: [{
        show: true,
        inverse: true,
        data: getArrByKey(data, 'name'),
        axisLine: {
            show: false
        },
        splitLine: {
            show: false
        },
        axisTick: {
            show: false
        },
        axisLabel: {
            fontSize: 16,
        },
        max: 3.5
    }],
    series: [{
        name: '百分比条',
        stack: 'data',
        type: 'bar',
        data: data_space,
        itemStyle: {
            opacity: 0.03
        },
    }, {
        name: '百分比条',
        stack: 'data',
        type: 'bar',
        yAxisIndex: 0,
        data: data,
        barWidth: 35,
        label: {
            normal: {
                show: true,
                position: 'right',
                textStyle: {
                    fontSize: 14,
                    lineHeight: 18
                },
                formatter: function(a) {
                    return a.data.value + '\n' + a.data.label;
                }
            }
        },
    }, {
        name: '百分比条',
        stack: 'data',
        type: 'bar',
        data: data_space,
        itemStyle: {
            opacity: 0.03
        }
    }]
};