产品不良数top5

描述:当前是关于Echarts图表中的 柱状图 示例。
 
            
        function contains(arr, dst) {
            var i = arr.length;
            while (i -= 1) {
                if (arr[i] == dst) {
                    return i;
                }
            }
            return false;
        }

        var attackSourcesData = [70, 68, 30, 21, 12];
        var attackSourcesName = ['产品A', '产品B', '产品C', '产品D', '产品E'];
        var attackSourcesColor = ['#f36c6c', '#e6cf4e', '#0093ff', '#20d180', '#1089E7'];

        function attackSourcesDataFmt(sData) {
            var sss = [];
            sData.forEach(function (item, i) {
                itemStyle = {
                    color: i > 3 ? attackSourcesColor[3] : attackSourcesColor[i]
                }
                sss.push({
                    value: item,
                    itemStyle: itemStyle
                });
            });
            return sss;
        }
        option = {
            backgroundColor:"black",
            title: {
                text: '产品不良数top5',
                textStyle: {
                    align: 'center',
                    color: '#fff',
                    fontSize: 28,
                },
                top: '5%',
                left: 'center',
            },
            tooltip: {
                show: true,
                // backgroundColor: 'rgba(3,169,244, 0.5)',//背景颜色(此时为默认色)
                textStyle: {
                    fontSize: 16
                },
                //trigger: 'axis',
                //axisPointer: {
                //    type: 'shadow'
                //}
            },
            legend: {
                show: false
            },
            grid: {
                left: 250,
                bottom: 20,
                right: 60,
            },
            xAxis: {
                type: 'value',

                splitLine: {
                    show: false
                },
                axisLabel: {
                    show: false
                },
                axisTick: {
                    show: false
                },
                axisLine: {
                    show: false
                }

            },
            yAxis: {
                type: 'category',
                inverse: true,
                axisLine: {
                    show: false
                },
                axisTick: {
                    show: false
                },
                axisPointer: {
                    label: {
                        show: true,
                        margin: 30
                    }
                },
                data: attackSourcesName,
                axisLabel: {
                    margin: 210,
                    fontSize: 14,
                    align: 'left',
                    color: '#333',
                    rich: {
                        nt1: {
                            color: '#fff',
                            backgroundColor: attackSourcesColor[0],
                            width: 30,
                            height: 30,
                            fontSize: 20,
                            align: 'center',
                            borderRadius: 100
                        },
                        nt2: {
                            color: '#fff',
                            backgroundColor: attackSourcesColor[1],
                            width: 30,
                            height: 30,
                            fontSize: 20,
                            align: 'center',
                            borderRadius: 100
                        },
                        nt3: {
                            color: '#fff',
                            backgroundColor: attackSourcesColor[2],
                            width: 30,
                            height: 30,
                            fontSize: 20,
                            align: 'center',
                            borderRadius: 100
                        },
                        nt: {
                            color: '#fff',
                            backgroundColor: attackSourcesColor[3],
                            width: 30,
                            height: 30,
                            fontSize: 20,
                            align: 'center',
                            borderRadius: 100
                        },
                        title1: {
                            backgroundColor: attackSourcesColor[0],
                            color: '#fff',
                            width: 145,
                            fontSize: 20,
                            align: 'left',
                            borderRadius: 5,
                            padding: 5,
                        },
                        title2: {
                            backgroundColor: attackSourcesColor[1],
                            color: '#fff',
                            width: 145,
                            fontSize: 20,
                            align: 'left',
                            borderRadius: 5,
                            padding: 5,
                        },
                        title3: {
                            backgroundColor: attackSourcesColor[2],
                            color: '#fff',
                            width: 145,
                            fontSize: 20,
                            align: 'left',
                            borderRadius: 5,
                            padding: 5,
                        },
                        title: {
                            backgroundColor: attackSourcesColor[3],
                            color: '#fff',
                            width: 145,
                            fontSize: 20,
                            align: 'left',
                            borderRadius: 5,
                            padding: 5,
                        }
                    },
                    formatter: function (value, index) {
                        index = contains(attackSourcesName, value) + 1
                        if (index - 1 < 3) {
                            return [
                                '{nt' + index + '|' + index + '}' + '  {title' + index + '|' + value + '}'
                            ].join('\n')
                        } else {
                            return [
                                '{nt|' + index + '}' + '  {title|' + value + '}'
                            ].join('\n')
                        }
                    }
                }
            },
            series: [{
                    z: 2,
                    //name: 'value',
                    type: 'bar',
                    barWidth: '25px',
                    animationDuration: 1500,
                    data: attackSourcesDataFmt(attackSourcesData),
                    /**
                     * es写法
                     attackSourcesData.map((item, i) => {
                        itemStyle = {
                            color: i > 3 ? colorList[3] : colorList[i]
                        }
                        return {
                            value: item,
                            itemStyle: itemStyle
                        };
                    }),
                    */
                    itemStyle: {
                        normal: {
                            color: function (params) {
                                return attackSourcesColor[params.dataIndex > 3 ? 3 : params.dataIndex]
                            },
                            barBorderRadius: 5,
                        }
                    },
                    label: {
                        show: true,
                        position: 'right',
                        color: '#fff',
                        fontSize: 24,
                        offset: [10, 0]
                    }
                }

            ]
        };