echarts的自定义动态颜色

时间:2018-08-30 16:02:02

标签: javascript echarts

我正在使用echarts进行数据可视化。...我从here获得了静态数据的解决方案。但是,就我而言,我有动态数据,并且不知道如何使它起作用。数据项不时更改。并非总是如下所示的3个项目。可以是任何数字。

var option = {
xAxis: {
    type: 'category',
    data: ['Mon', 'Tue', 'Wed']
},
yAxis: {
    type: 'value'
},
series: [{
    data: [
        {
            value: 120,
            itemStyle: {color: 'blue'},
        },
        {
            value: 200,
            itemStyle: {color: 'red'},
        },
        {
            value: 150,
            itemStyle: {color: 'green'},
        }
    ],
    type: 'bar'
}],
  graph: {
    color: colorPalette
  }
};

有人对此有任何想法。

感谢您的帮助。谢谢

2 个答案:

答案 0 :(得分:1)

您可以预先定义一个颜色数组,并为每个必须绘制的条形从该数组中随机弹出一种颜色:

var colors = [
  "blue",
  "red",
  "yellow",
  "green",
  "purple"
];

function popRandomColor(){
  var rand = Math.random();
  var color = colors[Math.floor(rand*colors.length)];
  colors.splice(Math.floor(rand*colors.length), 1);
  return color;
}

每当您需要颜色库中的颜色时,调用popRandomColor()

var option = {
xAxis: {
    type: 'category',
    data: ['Mon', 'Tue', 'Wed']
},
yAxis: {
    type: 'value'
},
series: [{
    data: [
        {
            value: 120,
            itemStyle: {color: popRandomColor()},
        },
        {
            value: 200,
            itemStyle: {color: popRandomColor()},
        },
        {
            value: 150,
            itemStyle: {color: popRandomColor()},
        }
    ],
    type: 'bar'
}],
  graph: {
    color: colorPalette
  }
};

答案 1 :(得分:0)

您要使用不同颜色的动态数据吗?检查下面

// put any color you want in Array colors
var colors = [
    "blue",
    "red",
    "green"
];

// can be any length
var data = [{
    category: 'cate1',
    value: 120
}, {
    category: 'cate2',
    value: 200
}, {
    category: 'cate3',
    value: 150
}, {
    category: 'cate4',
    value: 135
}, {
    category: 'cate5',
    value: 54
}]

let category = [];

let seriesData = data.map((item, index) => {
    category.push(item.category);
    return {
        value: item.value,
        itemStyle: {
            color: colors[index % colors.length]
        }
    }
});

var option = {
    xAxis: {
        type: 'category',
        data: category
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: seriesData,
        type: 'bar'
    }]
};