javascript - NVD3 lineChart - 填充线条上方的区域,而不是下方的区域

标签 javascript d3.js nvd3.js

我正在开发一个与此示例非常相似的图表:http://jsfiddle.net/ezanker/L6nfq/

但是我不想填充蓝线下方的蓝色区域,而是想填充其上方的区域。这种情况我该怎么办?

我知道有一种使用纯 D3.js 执行此操作的简单方法(通过函数 y0y1),但我想要一个使用 NVD3 库的解决方案.

是否可以对此 jsfiddle 进行一些小更改以填充该行上方的蓝色区域而不是其下方的区域?

谢谢。

最佳答案

我无法看到使用 nvd3 提供的功能,所以我只是用基本 d3 来破解它:

setTimeout(function(){
    var area = d3.svg.area()
    .x(function(d) { return chart.xScale()(d.x); })
    .y0(0)
    .y1(function(d) { return chart.yScale()(d.y); });
    var t = d3.select(".nv-series-2"),
        d = t.datum().values;
  t.append("path")
    .attr("d", area(d))
    .style("fill", "steelblue");
}, 10);
<小时/>

更新了 fiddle here .

评论编辑

这个疯狂怎么样:

var area = d3.svg.area()
    .x(function(d) {
      return chart.xScale()(d.x);
    })
    .y0(0)
    .y1(function(d) {
      return chart.yScale()(d.y);
    });
  function addArea() {
    setTimeout(function() {
      d3.selectAll("#cust-fill").remove();
      d3.selectAll('.nv-group')
        .each(function(d) {
          if (d.key === "Another sine wave") {
            var t = d3.select(this),
              d = t.datum().values;
            t.append("path")
              .attr("id", "cust-fill")
              .attr("d", area(d))
              .style("fill", d.color)
              .style("opacity", ".3");
          }
        })
    }, 100);
  }
  nv.dispatch.render_end = addArea;
  chart.dispatch.stateChange = addArea;

已更新fiddle .

关于javascript - NVD3 lineChart - 填充线条上方的区域,而不是下方的区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38880737/

相关文章:

javascript - Select2 更改删除的 id 值

javascript - d3.js 支持每个节点的图像

javascript - .split(/^|\s+/) 和 .split(/s+/) 之间的区别

file - 在 D3 中加载分隔符分隔的值

javascript - 部分 View 和 jQuery 图形问题

javascript - 使用 IE9 上传之前在 Div 中预览图像

javascript - jQuery展开/折叠动画 'jumping'超过一定高度

javascript - 如何返回符合 Mongodb 给定条件的子文档数组?

javascript - NVD3 为饼图的单个切片创建点击事件

javascript - NVD3 访问图表对象