jquery - 如何在折线图中的两条线之间添加填充?

标签 jquery d3.js

在我的 d3.js 线图中,我想在两条线之间填充颜色。我还需要在图表的开头和结尾添加一个圆球。有人建议我正确的方法吗?

这是我想要制作的图像:

Live graph sample

Live demo here

我的js代码:

function InitChart() {

    var vis = d3.select("#visualisation"),
      WIDTH = 1000,
      HEIGHT = 500,
      MARGINS = {
        top: 20,
        right: 20,
        bottom: 20,
        left: 50
      },
      xScale = d3.scale.linear().range([MARGINS.left, WIDTH - MARGINS.right]).domain([2000, 2010]),
      yScale = d3.scale.linear().range([HEIGHT - MARGINS.top, MARGINS.bottom]).domain([134, 215]),
      xAxis = d3.svg.axis()
      .scale(xScale),
      yAxis = d3.svg.axis()
      .scale(yScale)
      .orient("left");

    vis.append("svg:g")
      .attr("class", "x axis")
      .attr("transform", "translate(0," + (HEIGHT - MARGINS.bottom) + ")")
      .call(xAxis);
    vis.append("svg:g")
      .attr("class", "y axis")
      .attr("transform", "translate(" + (MARGINS.left) + ",0)")
      .call(yAxis);
    var lineGen = d3.svg.line()
      .x(function(d) {
        return xScale(d.year);
      })
      .y(function(d) {
        return yScale(d.sale);
      })
      .interpolate("basis");
    vis.append('svg:path')
      .attr('d', lineGen(data))
      .attr('stroke', 'green')
      .attr('stroke-width', 2)
      .attr('fill', 'none');
    vis.append('svg:path')
      .attr('d', lineGen(data2))
      .attr('stroke', 'blue')
      .attr('stroke-width', 2)
      .attr('fill', 'none');
  }

  InitChart();

最佳答案

您应该使用 d3.svg.area 来实现此目的:

 var area = d3.svg.area()
  // Same x axis (could use .x0 and .x1 to set different ones)
  .x(function(d, i) { return xScale(data[i].year); })
  .y0(function(d, i) { return yScale(data[i].sale); })
  .y1(function(d, i) { return yScale(data2[i].sale); })
  .interpolate("basis");

vis.append("path")
  .datum(data)
  .attr("d", area)
  .attr("fill", "#CCC");

这是您修改后的plunkr:

http://plnkr.co/edit/1juPlaHyZcVujaR0yKLl

关于jquery - 如何在折线图中的两条线之间添加填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32092878/

相关文章:

d3.js - 如何更改 d3 pathTween 函数中的缓动

javascript - 如何访问javascript数组包含对象中的responsedata

javascript - 如果没有直接触发,如何停止事件?

javascript - emberjs 从另一个 View 锚定

javascript - Angular : Dynamically change JSON request

javascript - 使用 d3(v3 或 v4)读取 CSV,保存数据并回调

javascript - "import"使用 webpack ing d3 和 d3-cloud

javascript - 如何从 JavaScript 调用 REST API

Javascript/jQuery 执行顺序问题

javascript - SVG `<path>` 不精确