Created
September 20, 2016 10:54
-
-
Save theWhiteFox/9d6d9c87223d181a9c81df309e7fe058 to your computer and use it in GitHub Desktop.
D3JS Moving xAxis along with line
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 characters
| <h1>Path Transitions</h1> | |
| <p>This is a working example from: <a href="https://bost.ocks.org/mike/path/">https://bost.ocks.org/mike/path/</a></p> | |
| <p><b>Scroll down to see the graph</b></p> | |
| <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum massa in ornare auctor. Nunc tincidunt cursus ipsum ac egestas. Morbi quis mi id leo vulputate vestibulum et nec diam. Duis fringilla mauris in erat vehicula, sed euismod libero scelerisque. Sed eget justo vel lectus aliquet tempus. Integer ut placerat orci. Cras nunc felis, vulputate ac posuere vitae, vestibulum nec diam. Proin molestie, quam ut mattis vehicula, eros elit sodales felis, et viverra ligula massa a nisi. Curabitur condimentum vulputate convallis. Duis aliquam molestie venenatis. Ut feugiat eleifend rutrum. Fusce rutrum sapien at ligula pretium facilisis vel ut diam.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum massa in ornare auctor. Nunc tincidunt cursus ipsum ac egestas. Morbi quis mi id leo vulputate vestibulum et nec diam. Duis fringilla mauris in erat vehicula, sed euismod libero scelerisque. Sed eget justo vel lectus aliquet tempus. Integer ut placerat orci. Cras nunc felis, vulputate ac posuere vitae, vestibulum nec diam. Proin molestie, quam ut mattis vehicula, eros elit sodales felis, et viverra ligula massa a nisi. Curabitur condimentum vulputate convallis. Duis aliquam molestie venenatis. Ut feugiat eleifend rutrum. Fusce rutrum sapien at ligula pretium facilisis vel ut diam.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum massa in ornare auctor. Nunc tincidunt cursus ipsum ac egestas. Morbi quis mi id leo vulputate vestibulum et nec diam. Duis fringilla mauris in erat vehicula, sed euismod libero scelerisque. Sed eget justo vel lectus aliquet tempus. Integer ut placerat orci. Cras nunc felis, vulputate ac posuere vitae, vestibulum nec diam. Proin molestie, quam ut mattis vehicula, eros elit sodales felis, et viverra ligula massa a nisi. Curabitur condimentum vulputate convallis. Duis aliquam molestie venenatis. Ut feugiat eleifend rutrum. Fusce rutrum sapien at ligula pretium facilisis vel ut diam.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum massa in ornare auctor. Nunc tincidunt cursus ipsum ac egestas. Morbi quis mi id leo vulputate vestibulum et nec diam. Duis fringilla mauris in erat vehicula, sed euismod libero scelerisque. Sed eget justo vel lectus aliquet tempus. Integer ut placerat orci. Cras nunc felis, vulputate ac posuere vitae, vestibulum nec diam. Proin molestie, quam ut mattis vehicula, eros elit sodales felis, et viverra ligula massa a nisi. Curabitur condimentum vulputate convallis. Duis aliquam molestie venenatis. Ut feugiat eleifend rutrum. Fusce rutrum sapien at ligula pretium facilisis vel ut diam.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum massa in ornare auctor. Nunc tincidunt cursus ipsum ac egestas. Morbi quis mi id leo vulputate vestibulum et nec diam. Duis fringilla mauris in erat vehicula, sed euismod libero scelerisque. Sed eget justo vel lectus aliquet tempus. Integer ut placerat orci. Cras nunc felis, vulputate ac posuere vitae, vestibulum nec diam. Proin molestie, quam ut mattis vehicula, eros elit sodales felis, et viverra ligula massa a nisi. Curabitur condimentum vulputate convallis. Duis aliquam molestie venenatis. Ut feugiat eleifend rutrum. Fusce rutrum sapien at ligula pretium facilisis vel ut diam.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum massa in ornare auctor. Nunc tincidunt cursus ipsum ac egestas. Morbi quis mi id leo vulputate vestibulum et nec diam. Duis fringilla mauris in erat vehicula, sed euismod libero scelerisque. Sed eget justo vel lectus aliquet tempus. Integer ut placerat orci. Cras nunc felis, vulputate ac posuere vitae, vestibulum nec diam. Proin molestie, quam ut mattis vehicula, eros elit sodales felis, et viverra ligula massa a nisi. Curabitur condimentum vulputate convallis. Duis aliquam molestie venenatis. Ut feugiat eleifend rutrum. Fusce rutrum sapien at ligula pretium facilisis vel ut diam.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum massa in ornare auctor. Nunc tincidunt cursus ipsum ac egestas. Morbi quis mi id leo vulputate vestibulum et nec diam. Duis fringilla mauris in erat vehicula, sed euismod libero scelerisque. Sed eget justo vel lectus aliquet tempus. Integer ut placerat orci. Cras nunc felis, vulputate ac posuere vitae, vestibulum nec diam. Proin molestie, quam ut mattis vehicula, eros elit sodales felis, et viverra ligula massa a nisi. Curabitur condimentum vulputate convallis. Duis aliquam molestie venenatis. Ut feugiat eleifend rutrum. Fusce rutrum sapien at ligula pretium facilisis vel ut diam.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum massa in ornare auctor. Nunc tincidunt cursus ipsum ac egestas. Morbi quis mi id leo vulputate vestibulum et nec diam. Duis fringilla mauris in erat vehicula, sed euismod libero scelerisque. Sed eget justo vel lectus aliquet tempus. Integer ut placerat orci. Cras nunc felis, vulputate ac posuere vitae, vestibulum nec diam. Proin molestie, quam ut mattis vehicula, eros elit sodales felis, et viverra ligula massa a nisi. Curabitur condimentum vulputate convallis. Duis aliquam molestie venenatis. Ut feugiat eleifend rutrum. Fusce rutrum sapien at ligula pretium facilisis vel ut diam.</p><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec vestibulum massa in ornare auctor. Nunc tincidunt cursus ipsum ac egestas. Morbi quis mi id leo vulputate vestibulum et nec diam. Duis fringilla mauris in erat vehicula, sed euismod libero scelerisque. Sed eget justo vel lectus aliquet tempus. Integer ut placerat orci. Cras nunc felis, vulputate ac posuere vitae, vestibulum nec diam. Proin molestie, quam ut mattis vehicula, eros elit sodales felis, et viverra ligula massa a nisi. Curabitur condimentum vulputate convallis. Duis aliquam molestie venenatis. Ut feugiat eleifend rutrum. Fusce rutrum sapien at ligula pretium facilisis vel ut diam.</p> | |
| <p>This chart, for example, shows your scrolling activity while reading this document over the last three minutes:</p> | |
| <div class="graph"></div> |
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 characters
| (function() { | |
| var n = 243, | |
| duration = 750, | |
| now = new Date(Date.now() - duration), | |
| count = 0, | |
| scrollData = d3.range(n).map(function() { return 0; }); | |
| var margin = {top: 6, right: 0, bottom: 20, left: 40}, | |
| width = 960 - margin.right, | |
| height = 120 - margin.top - margin.bottom; | |
| var x = d3.time.scale() | |
| .domain([now - (n - 2) * duration, now - duration]) | |
| .range([0, width]); | |
| var y = d3.scale.linear() | |
| .range([height, 0]); | |
| var line = d3.svg.line() | |
| .interpolate("basis") | |
| .x(function(d, i) { return x(now - (n - 1 - i) * duration); }) | |
| .y(function(d, i) { return y(d); }); | |
| var svg = d3.select(".graph").append("p").append("svg") | |
| .attr("width", width + margin.left + margin.right) | |
| .attr("height", height + margin.top + margin.bottom) | |
| .style("margin-left", -margin.left + "px") | |
| .append("g") | |
| .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); | |
| svg.append("defs").append("clipPath") | |
| .attr("id", "clip") | |
| .append("rect") | |
| .attr("width", width) | |
| .attr("height", height); | |
| var axis = svg.append("g") | |
| .attr("class", "x axis") | |
| .attr("transform", "translate(0," + height + ")") | |
| .call(x.axis = d3.svg.axis().scale(x).orient("bottom")); | |
| var path = svg.append("g") | |
| .attr("clip-path", "url(#clip)") | |
| .append("path") | |
| .datum(scrollData) | |
| .attr("class", "line"); | |
| var transition = d3.select({}).transition() | |
| .duration(750) | |
| .ease("linear"); | |
| d3.select(window) | |
| .on("scroll", function() { ++count; }); | |
| (function tick() { | |
| transition = transition.each(function() { | |
| // update the domains | |
| now = new Date(); | |
| x.domain([now - (n - 2) * duration, now - duration]); | |
| y.domain([0, d3.max(scrollData)]); | |
| // push the accumulated count onto the back, and reset the count | |
| scrollData.push(Math.min(30, count)); | |
| count = 0; | |
| // redraw the line | |
| svg.select(".line") | |
| .attr("d", line) | |
| .attr("transform", null); | |
| // slide the x-axis left | |
| axis.call(x.axis); | |
| // slide the line left | |
| path.transition() | |
| .attr("transform", "translate(" + x(now - (n - 1) * duration) + ")"); | |
| // pop the old data point off the front | |
| scrollData.shift(); | |
| }).transition().each("start", tick); | |
| })(); | |
| })(); |
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 characters
| <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.16/d3.js"></script> |
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 characters
| .line{ | |
| fill: none; | |
| stroke: #000; | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment