在d3条形图中设置自定义x轴标签?

时间:2013-03-26 11:57:34

标签: javascript d3.js

我在此页面上使用d3 crossfilter库:

http://jovansfreelance.com/bikestats/d3/crossfilter.php

如果查看第二个图表,您会看到x轴的标签为0.0,0.5,1.0,...,6.0。我需要这些标签是星期几,所以0.0是星期一,0.5不应该在那里,我不知道为什么它出现,因为数据中只有整数,1.0应该是星期二等。

谁能告诉我怎么做到这一点?请注意,所有4个图形调用相同的函数,我需要修改标签(硬编码它们很好)仅适用于此特定图形。

2 个答案:

答案 0 :(得分:19)

你应该查看序数量表。在此期间,您可以轻松制作自己的tickFormat:

var weekdays = ["Mon","Tues","Wed","Thurs","Fri","Sat","Sun"];
var formatDay = function(d) {
    return weekdays[d % 7] + "day";      
}

然后将其传递给比例,例如:

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

答案 1 :(得分:0)

在D3 v4中,我按照以下方式进行了研究:

var data = ["Mon","Tues","Wed","Thurs","Fri","Sat","Sun"]
var xScaleLabels = d3
  .scalePoint()
  .domain(data)
  .rangeRound([50, width - 50]); // In pixels

var axisTop2 = d3
  .axisBottom()
  .scale(xScaleLabels)
  .ticks(data.length);

svg
  .append("g")
  .call(axisTop2)
  .attr("transform", "translate(" + margin.left + "," + height + ")");