1
私はこのコードを、データセットを使用するd3.jsのヒストグラムレイアウトに使用しています。しかし、矩形の開始位置は0ではありません。ヒストグラムのレイアウトごとに、開始位置は常に0にする必要がありますが、何とか0になっていません。d3.layout.histogram()が間違った出力を返す
ありがとうございました。
リファレンスチュートリアルビデオ - https://youtu.be/0CZ7-f9wXiM?list=PL6il2r9i3BqH9PmbOf5wA5E1wOG3FT22p
JSFiddle - デフォルトでhttps://jsfiddle.net/tewjyfed/
create(dataset);
function create(data) {
var map = data.map(function(i) { return parseInt(i.skill) });
var histogram = d3.layout.histogram()
.bins(7)
(map);
var yscale = d3.scale.linear()
.domain([0, d3.max(histogram.map(function(i) { return i.length }))])
.range([0, height]);
var xscale = d3.scale.linear()
.domain([0, d3.max(map)])
.range([0, width]);
var axis = d3.svg.axis()
.scale(xscale)
.orient('bottom');
var bar = svg.selectAll('bar')
.data(histogram)
.enter()
.append('g');
bar.append('rect')
.attr('x', function(d) { return xscale(d.x)})
.attr('y', function(d) { return height - yscale(d.y) })
.attr('width', function(d) { return xscale(d.dx) })
.attr('height', function(d) { return yscale(d.y)})
.attr('fill', 'lightsteelblue')
.attr('stroke', 'steelblue');
svg.append('g')
.attr('transform', 'translate(0, '+height +')')
.call(axis);
}