Created
June 19, 2021 08:53
Revisions
-
d3noob revised this gist
Jun 19, 2021 . 1 changed file with 1 addition and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -2,6 +2,4 @@ This is a follow on from a simple line graph and is based on @mbostock's example It impliments a simple tooltip which I find particularly neat. This implimentation is designed as a simple example which will be built on to create a slightly more complex example. This graph is part of the code samples for the update to the book [D3 Tips and Tricks](https://leanpub.com/d3-t-and-t-v7) to version 7 of d3.js. -
d3noob created this gist
Jun 19, 2021 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1 @@ license: mit This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,7 @@ This is a follow on from a simple line graph and is based on @mbostock's example [here](http://bl.ocks.org/mbostock/02d893e3486c70c4475f). It impliments a simple tooltip which I find particularly neat. This implimentation is designed as a simple example which will be built on to create a slightly more complex example. This graph is part of the code samples for the update to the book [D3 Tips and Tricks](https://leanpub.com/d3-t-and-t-v6) to version 6 of d3.js. forked from <a href='http://bl.ocks.org/d3noob/'>d3noob</a>'s block: <a href='http://bl.ocks.org/d3noob/d5c24b5d2117aa6740244240a3633ac0'>Favorite tooltip (simple version) v7</a> This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,27 @@ date,close 26-Mar-12,606.98 27-Mar-12,614.48 28-Mar-12,617.62 29-Mar-12,609.86 30-Mar-12,599.55 2-Apr-12,618.63 3-Apr-12,629.32 4-Apr-12,624.31 5-Apr-12,633.68 9-Apr-12,636.23 10-Apr-12,628.44 11-Apr-12,626.20 12-Apr-12,622.77 13-Apr-12,605.23 16-Apr-12,580.13 17-Apr-12,543.70 18-Apr-12,443.34 19-Apr-12,345.44 20-Apr-12,234.98 23-Apr-12,166.70 24-Apr-12,130.28 25-Apr-12,99.00 26-Apr-12,89.70 27-Apr-12,67.00 30-Apr-12,53.98 1-May-12,58.13 This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,27 @@ date,close 1-May-12,58.13 30-Apr-12,53.98 27-Apr-12,67.00 26-Apr-12,89.70 25-Apr-12,99.00 24-Apr-12,130.28 23-Apr-12,166.70 20-Apr-12,234.98 19-Apr-12,345.44 18-Apr-12,443.34 17-Apr-12,543.70 16-Apr-12,580.13 13-Apr-12,605.23 12-Apr-12,622.77 11-Apr-12,626.20 10-Apr-12,628.44 9-Apr-12,636.23 5-Apr-12,633.68 4-Apr-12,624.31 3-Apr-12,629.32 2-Apr-12,618.63 30-Mar-12,599.55 29-Mar-12,609.86 28-Mar-12,617.62 27-Mar-12,614.48 26-Mar-12,606.98 This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,112 @@ <!DOCTYPE html> <meta charset="utf-8"> <style> /* set the CSS */ .line { fill: none; stroke: steelblue; stroke-width: 2px; } </style> <body> <!-- load the d3.js library --> <script src="https://d3js.org/d3.v7.min.js"></script> <script> // set the dimensions and margins of the graph var margin = {top: 20, right: 20, bottom: 30, left: 50}, width = 960 - margin.left - margin.right, height = 500 - margin.top - margin.bottom; // parse the date / time var parseTime = d3.timeParse("%d-%b-%y"); bisectDate = d3.bisector(function(d) { return d.date; }).left; // set the ranges var x = d3.scaleTime().range([0, width]); var y = d3.scaleLinear().range([height, 0]); // define the line var valueline = d3.line() .x(function(d) { return x(d.date); }) .y(function(d) { return y(d.close); }); // append the svg obgect to the body of the page // appends a 'group' element to 'svg' // moves the 'group' element to the top left margin var svg = d3.select("body").append("svg") .attr("width", width + margin.left + margin.right) .attr("height", height + margin.top + margin.bottom) .append("g") .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); var lineSvg = svg.append("g"); var focus = svg.append("g") .style("display", "none"); // Get the data d3.csv("atad.csv").then(function(data) { // format the data data.forEach(function(d) { d.date = parseTime(d.date); d.close = +d.close; }); // Scale the range of the data x.domain(d3.extent(data, function(d) { return d.date; })); y.domain([0, d3.max(data, function(d) { return d.close; })]); // Add the valueline path. lineSvg.append("path") .data([data]) .attr("class", "line") .attr("d", valueline); // Add the X Axis svg.append("g") .attr("transform", "translate(0," + height + ")") .call(d3.axisBottom(x)); // Add the Y Axis svg.append("g") .call(d3.axisLeft(y)); // append the circle at the intersection focus.append("circle") .attr("class", "y") .style("fill", "none") .style("stroke", "blue") .attr("r", 4); // append the rectangle to capture mouse svg.append("rect") .attr("width", width) .attr("height", height) .style("fill", "none") .style("pointer-events", "all") .on("mouseover", function() { focus.style("display", null); }) .on("mouseout", function() { focus.style("display", "none"); }) .on("mousemove", mousemove); function mousemove() { var x0 = x.invert(d3.pointer(event,this)[0]), i = bisectDate(data, x0, 1), d0 = data[i - 1], d1 = data[i], d = x0 - d0.date > d1.date - x0 ? d1 : d0; focus.select("circle.y") .attr("transform", "translate(" + x(d.date) + "," + y(d.close) + ")"); } }); </script> </body>