散布図を作成するために d3 を使用しています。x 軸と y 軸の両方の値のセットには、正と負の値があります。これは d3 を使用する私の最初の試みであり、Xmas の 10 日目に、d3.js を使用してデータを汚すなどの入門チュートリアルから、重要なのは x と y のスケールを正しく設定することです。
次に、私はこのチュートリアルを見つけました: Bar Chart with Negative Values、これは私がそれを正しく理解するのにほとんど役立ちました (私は思います)。私のデータ セットは大きすぎてここに配置できませんが、ここに使用するデータのサンプルがあるコードを示します。
<div id="compareAll"></div>
<script>
window.onload = function() {
var dataSet = [ [4,4], [-4,4], [-4,-4], [4,-4], ];
var x0 = Math.max(-d3.min(dataSet[0]), d3.max(dataSet[0]));
var xScale = d3.scale.ordinal()
.domain([-x0,x0])
.range([0,10]);
var yScale = d3.scale.ordinal()
.domain(d3.range(dataSet[1])
.rangeRoundBands([0,10]);
var svg = d3.select("#compareAll")
.append("svg")
.attr("width", 10)
.attr("height",10)
svg.selectAll("circle")
.data(dataSet)
.enter()
.append("circle")
.attr("cx", function(d) {
return xScale(d[0]);
})
.attr("cy", function(d) {
return yScale(d[1]);
})
.attr("r",4);
var xAxis = d3.svg.axis()
.scale(xScale)
.tickSize(1);
var yAxis = d3.svg.axis()
.scale(yScale)
.tickSize(1);
svg.append("svg:g")
.attr("class", "x axis")
.attr("transform", "translate(0,10)")
.call(xAxis);
svg.append("svg:g")
.attr("class", "y axis")
.attr("transform", "translate(10,0)")
.call(yAxis);
}
</script>
率直に言って、棒グラフの例での序数スケールの使用法はわかりませんが、それを取り出して xScale と同じ構文で yScale を作成すると、一見悪い結果になりました。
両方の軸に正と負の値を使用するための最良の方法についての説明をいただければ幸いです。明らかな何かが欠けている場合はお知らせください。できるだけ具体的で読みやすくするために、はるかに大きなプロジェクトからのこの例をまとめました。
ありがとう!