0

D3 で scale メソッドを使用するようにコードを更新しました。ただし、それ以来、棒グラフは表示されません。この問題の原因は何ですか?

var dataset = [ ];

    for (var i = 0; i < 14; i++) {var newNumber = Math.round(Math.random() * 70);
    dataset.push(newNumber);}

var svg = d3.select("body")
            .append("svg")
            .attr("width", w)
            .attr("height", h);

    var widthScale = d3.scale.linear()
                    .domain([0,d3.max(dataset)])
                    .range([0,w]);

        svg.selectAll("rect")
            .data(dataset)
            .enter()
            .append("rect")
            .attr("x", 3)
            .attr("y", function (d,i) {return i* 36;})
            .attr("width", function(d) {return widthScale;})
            .attr("height", h / dataset.length - barPadding)
            .attr("fill", function(d) {return "rgb(0, 0, " + (d * 10) + ")";});
4

1 に答える 1

1

D3 スケールは、指定された入力ドメイン (データ値、0 から最大) の値を指定された出力範囲 (グラフの幅) に変換する単なる関数です。したがって、スケールをデータに適用する必要がありますwidthScale( d )。現在、出力値ではなく、属性にwidthScale関数を割り当てています。widthrect

作業中のフィドルを参照してください: http://jsfiddle.net/S92u4/

于 2013-10-09T07:05:01.957 に答える