cal-heatmap - legendColors 作为颜色值数组?
cal-heatmap - legendColors as array of color values?
我正在试用 cal-heatmap,我想提供一个简单的图例颜色数组供使用,而不必为每种颜色定义 CSS 类。
到目前为止,在我的测试中这似乎不可能?
例如,使用:
legendColors : ['rgb(103,0,31)','rgb(178,24,43)','rgb(214,96,77)','rgb(244,165,130)','rgb(253,219,199)','rgb(224,224,224)','rgb(186,186,186)','rgb(135,135,135)','rgb(77,77,77)','rgb(26,26,26)'],
给我一个从第一种颜色到第二种颜色有 10 个等级的比例尺,忽略其余部分。
我是不是在文档中遗漏了一些简单的东西,或者这是不可能的?
我知道我可以创建 CSS 类,但我不想这样做 - 我需要动态的、数量可变的类别,以及动态创建的颜色。
我查看了 API 和源代码,但似乎不可能。想到两个想法:
一、事后修复:
cal.init({
range: 10,
start: new Date(2000, 0, 1, 1),
data: "datas-hours.json",
onComplete: function() {
setTimeout(function(){
['rgb(103,0,31)','rgb(178,24,43)','rgb(214,96,77)','rgb(244,165,130)','rgb(253,219,199)','rgb(224,224,224)','rgb(186,186,186)','rgb(135,135,135)','rgb(77,77,77)','rgb(26,26,26)']
.forEach(function(d,i){
d3.selectAll("rect.r" + i)
.style("fill", d);
});
}, 10);
}
我不确定为什么 setTimeout 是必要的,这会在颜色交换时产生奇怪的 "flash" 影响。示例 here.
另一个想法是写the styles on the fly:
var style = document.createElement('style');
style.type = 'text/css';
['rgb(103,0,31)','rgb(178,24,43)','rgb(214,96,77)','rgb(244,165,130)','rgb(253,219,199)','rgb(224,224,224)','rgb(186,186,186)','rgb(135,135,135)','rgb(77,77,77)','rgb(26,26,26)']
.forEach(function(d,i){
style.innerHTML += ".q" + i + " {fill:" + d + "; background-color: " + d + "}";
});
document.getElementsByTagName('head')[0].appendChild(style);
var cal = new CalHeatMap();
cal.init({
range: 10,
start: new Date(2000, 0, 1, 1),
data: "datas-hours.json"
});
例子here.
不过我不确定我喜欢这两个选项中的任何一个。您最好分叉存储库,添加您想要的内容并提交拉取请求。向下看第 3278 行,用你的序号换掉那个色标。
我正在试用 cal-heatmap,我想提供一个简单的图例颜色数组供使用,而不必为每种颜色定义 CSS 类。
到目前为止,在我的测试中这似乎不可能?
例如,使用:
legendColors : ['rgb(103,0,31)','rgb(178,24,43)','rgb(214,96,77)','rgb(244,165,130)','rgb(253,219,199)','rgb(224,224,224)','rgb(186,186,186)','rgb(135,135,135)','rgb(77,77,77)','rgb(26,26,26)'],
给我一个从第一种颜色到第二种颜色有 10 个等级的比例尺,忽略其余部分。
我是不是在文档中遗漏了一些简单的东西,或者这是不可能的?
我知道我可以创建 CSS 类,但我不想这样做 - 我需要动态的、数量可变的类别,以及动态创建的颜色。
我查看了 API 和源代码,但似乎不可能。想到两个想法:
一、事后修复:
cal.init({
range: 10,
start: new Date(2000, 0, 1, 1),
data: "datas-hours.json",
onComplete: function() {
setTimeout(function(){
['rgb(103,0,31)','rgb(178,24,43)','rgb(214,96,77)','rgb(244,165,130)','rgb(253,219,199)','rgb(224,224,224)','rgb(186,186,186)','rgb(135,135,135)','rgb(77,77,77)','rgb(26,26,26)']
.forEach(function(d,i){
d3.selectAll("rect.r" + i)
.style("fill", d);
});
}, 10);
}
我不确定为什么 setTimeout 是必要的,这会在颜色交换时产生奇怪的 "flash" 影响。示例 here.
另一个想法是写the styles on the fly:
var style = document.createElement('style');
style.type = 'text/css';
['rgb(103,0,31)','rgb(178,24,43)','rgb(214,96,77)','rgb(244,165,130)','rgb(253,219,199)','rgb(224,224,224)','rgb(186,186,186)','rgb(135,135,135)','rgb(77,77,77)','rgb(26,26,26)']
.forEach(function(d,i){
style.innerHTML += ".q" + i + " {fill:" + d + "; background-color: " + d + "}";
});
document.getElementsByTagName('head')[0].appendChild(style);
var cal = new CalHeatMap();
cal.init({
range: 10,
start: new Date(2000, 0, 1, 1),
data: "datas-hours.json"
});
例子here.
不过我不确定我喜欢这两个选项中的任何一个。您最好分叉存储库,添加您想要的内容并提交拉取请求。向下看第 3278 行,用你的序号换掉那个色标。