C3.js时间序列图表中的自定义颜色

时间:2017-09-14 05:18:01

标签: javascript d3.js c3.js

我正在尝试在this example之后的c3.js时间序列图表中设置自定义颜色。每个数组的第一个元素用于标识数据集,所以如果我有一个数组:

var datatest1 = ['data1', 30, 200, 100, 400, 150, 250];

可以像这样访问color属性:

colors: {data1:'#0000'}

或:

colors: {'data1':'#0000'}

但是,如果我使用数组的第一个元素来访问它们:

var data1id =  datatest1[0];

然后:

colors: {data1id:'#0000'}

失败了。由于我在浏览器中没有得到任何反馈,因此不确定我可能做错了什么......

这是一个有效的例子:

var axis = ['x', '2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04', '2013-01-05', '2013-01-06'];
var datatest2 = ['data2', 130, 340, 200, 500, 250, 350];
var datatest1 = ['data1', 30, 200, 100, 400, 150, 250];

var data1id =  datatest1[0];
var data2id =  datatest2[0];

var chart = c3.generate({
    data: {
        x: 'x',
        columns: [
            axis,
            datatest1,
            datatest2
        ],
        colors: {
            //data1: '#0000',
            //data2: '#0000'
            datatest1: '#0000',
            datatest2: '#0000'
        }
    },
    axis: {
        x: {
            type: 'timeseries',
            tick: {
                format: '%Y-%m-%d'
            }
        }
    }
});

-----编辑 我这样做是因为数据(包括标识符)是动态生成的。感谢

1 个答案:

答案 0 :(得分:1)

您可以像这样动态创建颜色对象。

var colors = {};
colors[datatest1[0]] = '#0000';
colors[datatest2[0]] = '#0000';

然后在图中设置它

var chart = c3.generate({
    data: {
        x: 'x',
        columns: [
            axis,
            datatest1,
            datatest2
        ],
        colors: colors  //set colors object created above
    },
    axis: {
        x: {
            type: 'timeseries',
            tick: {
                format: '%Y-%m-%d'
            }
        }
    }
});

工作代码here