This is the little bit of scaffolding I typically use when starting a d3.js project. I typically separate the Javascript from the HTML, but it's included here for convenience. In addition to d3.js v4, this example uses the following additional libraries.
Block here: bl.ocks.org/fogonwater/a299c3ea7f4f1fea6ee5eda061113430
Heavily influenced by Adam Pearce's Tiny Tools talk.
D3 code to create simple scatter:
var q = d3.queue()
.defer(d3.csv, 'data.csv')
//.defer(d3.json, 'data.json')
.await(visualize);
var c = d3.conventions({
parentSel: d3.select('#chart'),
width: 600,
height: 300,
margin: {'left':30,'right':10,'top':10,'bottom':20}
});
function visualize(errors, data) {
data.forEach(function(d) {
d.prop1 = +d.prop1;
d.prop2 = +d.prop2;
//console.log(d);
});
c.x.domain(d3.extent(data, ƒ('prop1'))).nice();
c.y.domain(d3.extent(data, ƒ('prop2'))).nice();
c.drawAxis();
c.svg.dataAppend(data, "circle.dot")
.attr("r", 6.2)
.attr("cx", ƒ('prop1', c.x))
.attr("cy", ƒ('prop2', c.y))
.style("fill", ƒ('prop3', c.color))
.call(d3.attachTooltip);
};
xxxxxxxxxx
<meta charset="utf-8">
<style>
body {
font: 10px sans-serif;
}
.axis path,
.axis line {
fill: none;
stroke: #444;
shape-rendering: crispEdges;
}
.dot {
stroke: #444;
}
div.tooltip {
top: -1000px;
position: absolute;
padding: 10px;
background: rgba(255, 255, 255, .90);
border: 1px solid lightgray;
pointer-events: none;
}
.tooltip-hidden{
opacity: 0;
}
</style>
<body>
<div id="chart"></div>
<div class='tooltip'></div>
<script src="https://d3js.org/d3.v4.min.js"></script>
<script src='jetpack-starter-kit.js'></script>
<script>
var q = d3.queue()
.defer(d3.csv, 'data.csv')
//.defer(d3.json, 'data.json')
.await(visualize);
var c = d3.conventions({
parentSel: d3.select('#chart'),
width: 600,
height: 300,
margin: {'left':30,'right':10,'top':10,'bottom':20}
});
function visualize(errors, data) {
data.forEach(function(d) {
d.prop1 = +d.prop1;
d.prop2 = +d.prop2;
//console.log(d);
});
c.x.domain(d3.extent(data, ƒ('prop1'))).nice();
c.y.domain(d3.extent(data, ƒ('prop2'))).nice();
c.drawAxis();
c.svg.dataAppend(data, "circle.dot")
.attr("r", 6.2)
.attr("cx", ƒ('prop1', c.x))
.attr("cy", ƒ('prop2', c.y))
.style("fill", ƒ('prop3', c.color))
.call(d3.attachTooltip);
};
</script>
https://d3js.org/d3.v4.min.js