我正在尝试在折线图的背面添加网格线,但是网格线不会在x轴的最后一个条目处结束。参见下面的plnk;

http://plnkr.co/edit/j8qQ19m4l4jgdCsRu1da?p=preview

供参考,我正在寻找这样的东西;

javascript - d3.js网格线悬在x轴上吗?-LMLPHP

虽然,我不确定在x轴上添加空白条目以将折线图推到中间是多么容易。

无论如何,我希望有人能够对此提供帮助!

谢谢



JS

var x = d3.time.scale()
  .domain([new Date(2016, 0, 1), new Date(2016, 11, 31)])
  .range([0, width]);

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

var xAxis = d3.svg.axis()
  .scale(x)
  .orient("bottom")
  .ticks(d3.time.months)
  .tickFormat(d3.time.format("%B"))
  .tickSize(-height, 0, 0)
  .innerTickSize(-height)
  .tickPadding(15)

var yAxis = d3.svg.axis()
  .scale(y)
  .orient("left")
  .innerTickSize(-width)
  .outerTickSize(0)
  .tickPadding(15)
  .tickSize(-width, 0, 0)

var line = d3.svg.line()
  .x(function(d) {
    return x(new Date(2016, moment(d.date, 'MMMM').format('M') - 1, 1));
  })
  .y(function(d) {
    return y(d.close);
  });

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 + ")");

d3.tsv("data.tsv", type, function(error, data) {

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

  svg.append("g")
    .attr("class", "y axis")
    .call(yAxis)

  svg.append("path")
    .data([data])
    .attr("class", "line")
    .attr("d", line);

});

function type(d) {
  d.date = d.date;
  d.close = +d.close;
  return d;
}


硅通孔

date    close
January 50
February    100
March   75
April   90
May 85
June    40
July    30
August  35
September   12
October 72
November    77
December    5

最佳答案

由于您的约会时间,您有以下几点:

 .domain([new Date(2016, 0, 1), new Date(2016, 11, 31)])


这将生成十二月的刻度线,然后生成其余的刻度线,因为您的TSV中的值为December 5。如果您想返回一个月,可以这么说,只需将其编辑为前一个月:

 .domain([new Date(2016, 0, 1), new Date(2016, 10, 31)])


更新的Plnkr:http://plnkr.co/edit/vKlCFpBvDi097337HJyW?p=preview

关于javascript - d3.js网格线悬在x轴上吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38913006/

10-11 00:20