0

私のデータは次のようなものです: [{"month":1,"year":2013,"sumValue":60599.0,"countRecords":2976,"date":"2013-01-01T00:00:00"},{ "月":2,"年":2013,"sumValue":52922.0,"countRecords":2688,"日付":"2013-02-01T00:00:00"},{"月":3,"年":2013,"sumValue":62585.0,"countRecords":3072,"date":"2013-03-01T00:00:00"}]

コード スニペット

var x = d3.scale.linear().range([0, width + margin.left + margin.right]);
var x_extent = d3.extent(data, function (d) { return d.month });
x.domain(x_extent);
var xAxis = d3.svg.axis().scale(x).orient("bottom");
svgGroup.append("g").attr("class", "x axis").attr("transform", "translate(0," + height + ")") .call(xAxis);

x 軸で 1 から 12 の値を取得する機会がありません (次のステップは月の名前を表示することですが、値を取得できない場合はどうすればよいでしょうか)表示されるのは、次のような(ばかげた)ものです:0.0 0.1 0.2.....

これを試してみると(別の投稿で言及されています):

d3.svg.axis().scale(x).ticks(d3.time.months, 1).tickFormat(d3.time.format("%b"));

何も表示されません。

基本的な理解が欠けていると思います。誰かがこの問題を手伝ってくれますか?

前もって感謝します

©axi

4

1 に答える 1

0

タイム スケールを使用するには (これは 2 番目のコード スニペットが示唆するものです)、次のようにスケールをインスタンス化する必要があります。

var x = d3.time.scale().range([0, width + margin.left + margin.right]);
var x_extent = d3.extent(data, function (d) { return new Date(d.date); });
x.domain(x_extent);

この場合、.date文字列をスケールに渡す前にDate( に示すように) に変換する必要があることに注意してください。d3.extent

于 2013-06-19T09:46:03.817 に答える