Cubism.js - 范围到颜色映射

时间:2012-10-12 19:07:17

标签: d3.js cubism.js

我正在使用cubism.js生成CPU利用率时间序列。我有系列显示但是我注意到有关颜色如何分配给值的奇怪之处。

例如,值10获得与值100(红色)相同的颜色。我在下面定义了50种颜色。我希望每5个值(大于0)将分配给相应的颜色。

我原本期望值10获得颜色#00DDDD和值100以获得颜色#FF0000。

从比例范围到颜色定义的映射在哪里?

以下是我正在谈论的代码部分的片段。

var colors = ["#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff", "#ffffff",
"#00BBBB", "#00CCCC", "#00DDDD", "#00EEEE", "#00FFFF", "#00BB5E", "#00CC66", "#00DD6F", "#00EE77", "#00FF84", "#BBBB00", "#CCCC00", "#DDDD00", "#EEEE00", "#FFFF00J", "#BB5E00", "#CC6600m", "#DD6F00", "#EE7700", "#FF8000", "#BB0000", "#CC0000", "#DD0000", "#EE0000", "#FF0000"];

// Iterate through each search criteria, passing the host, criteria tuple.
// Queries and returns app server metrics, finally graphing accordingly.

var scale = d3.scale.linear().range([0,100]);
d3.select("body").selectAll(".horizon")
    .data(search_criterias.map(app_server_data_collector))
    .enter().insert("div", ".bottom")
    .attr("class", "horizon")
    .call(context.horizon().scale(scale).colors(colors).format(d3.format("+,")));

1 个答案:

答案 0 :(得分:4)

与此问题类似:Color bands for cubism.js

立体主义使用extent选项设置水平图的最小值和最大值,而不是比例范围。如果您没有明确设置范围,它将只使用数据中的最小值和最大值,这可能无法为您提供所需的色带。相反,请确保添加horizon.extent([0, 100])而不是比例范围。

此外,您希望所有数据都是正面的。请记住,水平图表将前半部分颜色分配给负值,将后半部分分配给正值。如果只有正值,则只会忽略颜色数组的前半部分。