8

このページでd3クロスフィルターライブラリを使用しています。

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

2番目のグラフを見ると、x軸に0.0、0.5、1.0、...、6.0のラベルが付いていることがわかります。これらのラベルは曜日にする必要があるため、0.0は月曜日、0.5はまったく表示されないはずです。データには整数しか含まれていないため、なぜ表示されたのかわかりません。1.0は火曜日などです。

誰かがこれを達成する方法を教えてもらえますか?4つのグラフすべてが同じ関数を呼び出すことに注意してください。この特定のグラフについてのみ、ラベルを変更する必要があります(ハードコーディングしても問題ありません)。

4

2 に答える 2

21

順序尺度を確認する必要があります。それまでの間、独自の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);
于 2013-03-26T19:59:03.400 に答える
1

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 + ")");
于 2018-01-08T22:48:47.300 に答える