javascript - d3.js 图表区域填充不同颜色

标签 javascript d3.js

我试图用不同的颜色填充图表下方的区域,具体取决于 x 值范围,例如,对于 x 值 0 到 10 黄色,从 10 到 20 红色等等。有办法吗?

我的单一填充颜色的javascript是

var m = 80; 
var w = 900 - 3*m;
var h = 600- 3*m; 

var x = d3.scale.linear().range([0, w]);
var y = d3.scale.linear().range([h, 0]);
x.domain(d3.extent(data, function(d) { return d.time; }));
y.domain(d3.extent(data, function(d) { return d.points; }));

var line = d3.svg.line()
.x(function(d) { 
return x(d.time); 
})

.y(function(d) { 
return y(d.points); 
})

var graph = d3.select("#graph").append("svg:svg")
           .attr("width", w+3*m)
           .attr("height", h+3*m)
           .append("svg:g")
           .attr("transform", "translate(" + 1.5*m + "," + 1.5*m + ")");

var area = d3.svg.area()
.x(function(d) { return x(d.time); })
.y0(h)
.y1(function(d) { return y(d.points); });

graph.append("path")
.datum(data)
.attr("class", "area")
.attr("d", area)
.style("fill","steelblue"); 

提前致谢!

最佳答案

您基本上有两种选择。

  • 您可以为不同的颜色定义单独的区域。
  • 您可以定义单个区域并使用渐变来模拟不同的颜色。

第二个可能更容易,因为您不需要绘制任何单独的路径,您可以像当前一样简单地填充路径。

对于渐变,您需要定义停止点(即颜色变化)以对应于值。特别是,您需要在同一个地方引入两个停靠点,使其看起来像是颜色突然变化。有关渐变的更多信息 here .代码看起来像这样。

var grad = graph.append("defs")
     .append("linearGradient")
     .attr("id", "grad");
grad.append("stop").attr("offset", "0%").attr("stop-color", "yellow");
grad.append("stop").attr("offset", "10%").attr("stop-color", "yellow");
grad.append("stop").attr("offset", "10%").attr("stop-color", "red");
grad.append("stop").attr("offset", "20%").attr("stop-color", "red");
// etc

graph.append("path")
     .style("fill", "url(#grad)");

停止的位置将由您的比例决定。

关于javascript - d3.js 图表区域填充不同颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19114896/

相关文章:

javascript - vuejs + d3 : select returns element, 但 attr() 返回 null

javascript - 应该每秒重复一次的函数立即发生

javascript - 异步等待在 TypeScript API 中被跳过

javascript - 推送多项选择的数据值 仅多次推送第一个单击的选项

javascript - d3 中的圆环图

d3.js - 使用鼠标事件定位 this->sibling

javascript - 如何使用 D3 和 javascript 从 csv 创建交互式可折叠树形图?

javascript - 当输入集中在 Web 应用程序上时显示键盘

javascript - 'resolve' 的 Expo webpack 配置不起作用

javascript - 如何为 d3 可折叠树中的节点分配唯一的 id