|
|
|
|
@ -12,14 +12,12 @@ function myScatterPlot() {
|
|
|
|
|
|
|
|
|
|
var i = 0;
|
|
|
|
|
var csvDataset = new Array(data.length);
|
|
|
|
|
for (var ii = 0; ii < csvDataset.length; ii++) {
|
|
|
|
|
csvDataset[ii] = new Array(2);
|
|
|
|
|
}
|
|
|
|
|
//
|
|
|
|
|
data.forEach(d => {
|
|
|
|
|
d.x = +d.x;
|
|
|
|
|
d.y = +d.y;
|
|
|
|
|
//
|
|
|
|
|
csvDataset[i] = new Array(2);
|
|
|
|
|
csvDataset[i][0] = d.x;
|
|
|
|
|
csvDataset[i][1] = d.y;
|
|
|
|
|
i++;
|
|
|
|
|
@ -43,16 +41,19 @@ function plot(dataset) {
|
|
|
|
|
|
|
|
|
|
// setup data scaling to fit view
|
|
|
|
|
// x-scale
|
|
|
|
|
// domain : real world domain
|
|
|
|
|
// range : viewport range
|
|
|
|
|
var xScale = d3.scaleLinear()
|
|
|
|
|
.domain([0, d3.max(dataset, d => d[0])])
|
|
|
|
|
.range([PADDING, WIDTH - PADDING]);
|
|
|
|
|
|
|
|
|
|
// y-scale
|
|
|
|
|
// domain : real world domain
|
|
|
|
|
// range : viewport range
|
|
|
|
|
var yScale = d3.scaleLinear()
|
|
|
|
|
.domain([0, d3.max(dataset, d => d[1])])
|
|
|
|
|
.range([HEIGHT - PADDING, PADDING]); // reverse the range as view coordinate start from top-left
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Create SVG element
|
|
|
|
|
var svg = d3.select("body")
|
|
|
|
|
.append("svg")
|
|
|
|
|
@ -66,7 +67,8 @@ function plot(dataset) {
|
|
|
|
|
.append("circle")
|
|
|
|
|
.attr("cx", pt => xScale(pt[0]))
|
|
|
|
|
.attr("cy", pt => yScale(pt[1]))
|
|
|
|
|
.attr("r", 5);
|
|
|
|
|
.attr("r", 2)
|
|
|
|
|
.attr("class", "dot");
|
|
|
|
|
|
|
|
|
|
// create label for each point
|
|
|
|
|
svg.selectAll("text")
|
|
|
|
|
@ -76,9 +78,10 @@ function plot(dataset) {
|
|
|
|
|
.text(pt => `${pt[0]},${pt[1]}`)
|
|
|
|
|
.attr("x", pt => xScale(pt[0]))
|
|
|
|
|
.attr("y", pt => yScale(pt[1]))
|
|
|
|
|
.attr("font-family", "sans-serif")
|
|
|
|
|
.attr("class", "xy");
|
|
|
|
|
/* .attr("font-family", "sans-serif")
|
|
|
|
|
.attr("font-size", "11px")
|
|
|
|
|
.attr("fill", "red");
|
|
|
|
|
.attr("fill", "red"); */
|
|
|
|
|
|
|
|
|
|
// draw axes
|
|
|
|
|
// x axis : transform drawing from top to bottom
|
|
|
|
|
|