您的位置:

如何给echarts柱状图每个柱颜色不一样?

有时候,我们需要将echarts柱状图的每个柱子着上不同的颜色,以便更好地展示数据。本文将从以下几个方面进行详细阐述:

一、通过数组随机生成柱子颜色

1、我们可以通过数组随机生成每个柱子的颜色,代码如下:

option = {
    // 数据
    // ...
    // 柱子颜色
    color: function(params) {
        var colors = ['#5793f3', '#d14a61', '#675bba', '#f0b13c', '#61bb52'];
        return colors[params.dataIndex % colors.length];
    }
}

在这个例子中,我们设置了5种颜色,如果需要增加可以继续往数组里添加颜色即可。调用color参数时,通过dataIndex参数来判断需要用数组中的哪一种颜色。

二、根据数据值不同设置不同颜色

1、通过min和max参数设置数据范围,然后利用颜色渐变函数linear-gradient生成渐变色,并通过value参数获取数据值,从而生成相应的颜色。代码如下:

option = {
    // 数据范围
    visualMap: {
        min: 0,
        max: 100,
        calculable: true,
        // 渐变色
        color: ['red', 'yellow', 'green'],
        textStyle: {
            color: '#fff'
        }
    },
    // 数据
    // ...
    // 柱子颜色
    itemStyle: {
        normal: {
            color: function(params) {
                var colorList = ['#C1232B','#B5C334','#FCCE10','#E87C25','#27727B',
                    '#FE8463','#9BCA63','#FAD860','#F3A43B','#60C0DD',
                    '#D7504B','#C6E579','#F4E001','#F0805A','#26C0C0'
                ];
                return new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                    offset: 0,
                    color: colorList[colorList.length - 1]
                }, {
                    offset: 1,
                    color: colorList[0]
                }], false);
            }
        }
    }
}

在这个例子中,我们通过设置visualMap参数的min和max参数来设置数据范围。然后在itemStyle中通过value参数来获取数据值,并在颜色渐变函数linear-gradient中生成对应的颜色。

三、传入自定义的颜色数组

1、如果你已经有了一组固定的颜色,也可以直接传入数组。代码如下:

option = {
    // 数据
    // ...
    // 柱子颜色
    itemStyle: {
        normal: {
            color: function(params) {
                var colorList = ['#C1232B','#B5C334','#FCCE10','#E87C25','#27727B',
                    '#FE8463','#9BCA63','#FAD860','#F3A43B','#60C0DD',
                    '#D7504B','#C6E579','#F4E001','#F0805A','#26C0C0'
                ];
                return colorList[params.dataIndex % colorList.length];
            }
        }
    }
}

在这个例子中,我们将颜色数组定义在colorList变量里,并通过params获取每个柱子对应的数组下标,然后从数组中获取对应颜色。

四、传入函数动态生成颜色

1、如果你需要根据不同场景动态设置颜色,可以传入一个函数来根据数据参数来设置柱子颜色,代码如下:

option = {
    // 数据
    // ...
    // 柱子颜色
    itemStyle: {
        normal: {
            color: function(params) {
                var color1 = '#41ADF4';
                var color2 = '#F54645';
                if (params.value > 0) {
                    return color1;
                } else {
                    return color2;
                }
            }
        }
    }
}

在这个例子中,我们通过传入一个函数来进行判断,如果数据值大于0,返回color1颜色,否则返回color2颜色。

五、总结

本文介绍了四种设置echarts柱状图每个柱子颜色不一样的方法,包括数组随机生成颜色、根据数据值不同设置不同颜色、传入自定义颜色数组和传入函数动态生成颜色。根据具体场景选择合适的方法,能够让图表更加生动有趣。