如何在d3中的双变量图中追加系列的填充颜色(区域)?

时间:2013-11-08 15:49:32

标签: d3.js

我正在尝试在d3中创建多个系列,每个系列的行之间的区域具有不同的填充颜色。我已经成功地获得了第一个系列,我相信我可以创建多个系列,但我无法弄清楚如何追加这个系列的填充颜色。我试过做类似的东西:.attr(“填充”,“红色”);附加该区域,但这不起作用。这是我的完整代码:

<!DOCTYPE html>
<meta charset="utf-8">
  <style>

    body {
    font: 10px sans-serif;
    }

    .axis path,
    .axis line {
    fill: none;
    stroke: #000;
    shape-rendering: crispEdges;
    }

    .x.axis path {
    display: none;
    }

    .area {
    fill: steelblue;
    }



  </style>
  <body>
    <script src="http://d3js.org/d3.v3.js"></script>
    <script>

      var margin = {top: 20, right: 20, bottom: 30, left: 50},
      width = 960 - margin.left - margin.right,
      height = 500 - margin.top - margin.bottom;

      var parseDate = d3.time.format("%H:%M:%S").parse;

      var x = d3.time.scale()
      .range([0, width]);

      var y = d3.scale.linear()
      .range([height, 0]);

      var xAxis = d3.svg.axis()
      .scale(x)
      .orient("bottom");

      var yAxis = d3.svg.axis()
      .scale(y)
      .orient("left");

      var line = d3.svg.line()
      .x(function(d) { return x(d.date); })
      .y(function(d) { return y(d.close); });

      var area = d3.svg.area()
      .x(function(d) { return x(d.date); })
      .y0(function(d) { return y(d.low); })
      .y1(function(d) { return y(d.high); });

      var svg = d3.select("body").append("svg")
      .attr("width", width + margin.left + margin.right)
      .attr("height", height + margin.top + margin.bottom)
      .append("g")
      .attr("transform", "translate(" + margin.left + "," + margin.top + ")");

      var context = svg.append("g")
      .attr('class','container')


      d3.csv("data.csv", function(error, data) {
      data.forEach(function(d) {
      d.date = parseDate(d.date);
      d.high = +d.positive;
      d.low  = +d.positivelow;
      });

      x.domain(d3.extent(data, function(d) { return d.date; }));
      <!--y.domain(d3.extent(data, function(d) { return d.close; }));-->
      <!--y.domain([d3.min(data, function(d) { return d.low; }), d3.max(data, function(d) { return d.high; })]);-->
      y.domain([1720,1780])

      svg.append("path")
      .datum(data)
      .attr("class", "area")
      .attr("d", area);
      <!--(This line below doesn't work)-->
      <!--.attr("fill","red");-->

      svg.append("g")
      .attr("class", "x axis")
      .attr("transform", "translate(0," + height + ")")
      .call(xAxis);

      svg.append("g")
      .attr("class", "y axis")
      .call(yAxis)
      .append("text")
      .attr("transform", "rotate(-90)")
      .attr("y", 6)
      .attr("dy", ".71em")
      .style("text-anchor", "end")
      .text("Some Y Title");
      });



    </script>

0 个答案:

没有答案