Skip to content

Instantly share code, notes, and snippets.

@yurahuna
Created August 12, 2016 02:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yurahuna/c16d5b1c7f94b0cbd4d69e8e5ea80909 to your computer and use it in GitHub Desktop.
Save yurahuna/c16d5b1c7f94b0cbd4d69e8e5ea80909 to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>d3 test</title>
<script type="text/javascript" src="d3/d3.js"></script>
<style>
.axis path,
.axis line {
fill: none;
stroke: black;
shape-rendering: crispEdges;
}
.axis text {
font-family: Arial;
font-size: 11px;
}
</style>
</head>
<body>
<script type="text/javascript">
var w = 500;
var h = 300;
var padding = 30;
var svg = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h);
// 動的でランダムなデータセット
var dataset = [];
var numDataPoints = 50;
var xRange = Math.random() * 1000;
var yRange = Math.random() * 1000;
for (var i = 0; i < numDataPoints; i++) {
var newNumber1 = Math.round(Math.random() * xRange);
var newNumber2 = Math.round(Math.random() * yRange);
dataset.push([newNumber1, newNumber2]);
}
// var scale = d3.scale.linear() <--- 古い
// https://github.com/d3/d3-scale/blob/master/README.md#scaleLinear
var xScale = d3.scaleLinear()
.domain([0, d3.max(dataset, function(d) { return d[0]; })])
.range([padding, w - padding * 2]);
var yScale = d3.scaleLinear()
.domain([0, d3.max(dataset, function(d) { return d[1]; })])
.range([h - padding, padding]);
var rScale = d3.scaleLinear()
.domain([0, d3.max(dataset, function(d) { return d[1]; })])
.range([2, 5]);
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", function(d) {
return rScale(d[1]);
});
// var xAxis = d3.svg.axis()
// .scale(xScale)
// .orient("bottom");
// https://github.com/d3/d3-axis
// Bottom: 数字を軸の下に表示する、という意味
var xAxis = d3.axisBottom(xScale)
.ticks(5); // 目盛り数の目安(勝手に調整してくれる)
svg.append("g")
.attr("class", "axis")
// 軸自体の位置は↓で動かす
.attr("transform", "translate(0," + (h - padding) + ")")
.call(xAxis);
var yAxis = d3.axisLeft(yScale)
.ticks(5);
svg.append("g")
.attr("class", "axis")
.attr("transform", "translate(" + padding + ",0)")
.call(yAxis);
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment