AmCharts 3-如何动态更改以分组形式包含其数据的序列图的颜色?

时间:2019-04-04 14:29:00

标签: javascript amcharts

考虑到我无法访问图表的创建代码,因为这是针对浏览器扩展的。

以下代码仅适用于“简单”序列图

const chart = AmCharts.charts[0];
chat.dataProvider.forEach(data => data['_fillColor_'] = getRandomColor());
chart.validateData();

但是,如果我对带有分组数据的图表执行相同的操作,则它将为每个组上色而不是每个组类别。

我想出了一个“技巧”,将图表数据分组后,它将直接为其图形着色,而不是更改dataProvider颜色。

chart.graphs.forEach( graph => { 
    const color = getRandomColor()
    graph.fillColors = color;
    graph.bulletColor = color;
})

它可以工作,但是也许有更多类似于API的方式可以做到这一点?这感觉很hacky,可能会失败。

但是还有另一个问题,如何识别AmSerialChart分组存储数据?我还最终使用了一种非常“ hacky”的方式,这种方式可能无法在所有情况下都起作用。

最后,这是代码,我正在寻找使这种代码变少的方法:

//If valueFields length is 1 means the data isn't grouped
if(chart.dataProvider[0]['_valueFields_'].length == 1){
    chart.dataProvider.forEach( data => data['_fillColor_'] = getRandomColor());
}else{
    chart.graphs.forEach( (graph, i) => {
        const color = getRandomColor()
        graph.fillColors = color;
        graph.bulletColor = color;
    })
}

0 个答案:

没有答案