我尝试这样的代码,但它不会改变颜色:
var colors = ["#F0E5FF","#E1CCFF","#C499FF","#AC79F2","#8D4CE5","#6100E5","#C94D8C"];
var colorScaleDomain = [100, 300, 1000, 10000, 50000, 600000];
var colorScale = d3.scale.threshold()
.domain(colorScaleDomain)
.range(colors);
link.style("stroke", function(d){
return colorScale(d[0].size)
});
什么是错在我的代码?
小提琴与您的代码:https://jsfiddle.net/mkaran/om8tqotp/与稍微不同的色彩比例域和变体使用d3.scale.ordinal()https://jsfiddle.net/mkaran/6qvjep7r /。我认为你所给的色阶域太宽,所以d [0] .size属于一个类别,因此它只给出一种颜色。尝试更好地调整域,例如:[300,500,1000,1300,1800,2000,5000,10000,13000,18000,20000] https://jsfiddle.net/mkaran/gLvnm0pf/ – mkaran
@mkaran:是的,这是因为我的真实数据集要大得多。你能发表一个答案吗? – Dinosaurius
@mkaran:我稍微误会了一件事。如果'var color = [“#9EDAE5”,“#6100E5”,“#C94D8C”];'var colorScaleDomain = [300,1000,20000]',那么所有大小小于300的条目将有颜色'#9EDAE5',对吧? – Dinosaurius