Javascript 有条件填写d3.js中的面积图

Javascript 有条件填写d3.js中的面积图,javascript,d3.js,Javascript,D3.js,我有一个面积图(应该代表一个时间序列)。我想根据y值给图表上色,这样对于y>c的区域,它是一种颜色,对于y的区域,可以改变添加区域的方式 vis.selectAll("path").data(mpts).enter().append("svg:path") .attr("class", "area") .attr("d", area) .attr("fill", function(d) { return (d.val > c ? "o

我有一个面积图(应该代表一个时间序列)。我想根据y值给图表上色,这样对于y>c的区域,它是一种颜色,对于y的区域,可以改变添加区域的方式

    vis.selectAll("path").data(mpts).enter().append("svg:path")
        .attr("class", "area")
        .attr("d", area)
        .attr("fill", function(d) { return (d.val > c ? "orange" : "yellow"); });

什么是“定义”区域?我尝试添加到.append(“path”)和d3.svg.area()语句中,这两个语句似乎都不起作用。很抱歉,我应该仔细看看--您还需要更改创建路径的方式。我会更新我的答案。我理解为什么这应该有效,但它只会创建一个很长的空路径元素列表,除非我在做一些愚蠢的事情。我想我理解你现在想做什么。使用
[mpts]
而不是
mpts
作为
.data()
的参数绘制图形,但我猜您想要的是每个条的不同颜色?你必须为每个数据点生成单独的路径来实现这一点,也就是说,
mpts
需要是一个数组数组,其中每个数组描述y值的矩形。明白了……我想我只是通过绘制带有特定填充的矩形来近似解决方案
    vis.selectAll("path").data(mpts).enter().append("svg:path")
        .attr("class", "area")
        .attr("d", area)
        .attr("fill", function(d) { return (d.val > c ? "orange" : "yellow"); });