Skip to content

Instantly share code, notes, and snippets.

@andrewthornton
Created December 28, 2015 15:43
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 andrewthornton/eb8d67a9820fbd36d1cb to your computer and use it in GitHub Desktop.
Save andrewthornton/eb8d67a9820fbd36d1cb to your computer and use it in GitHub Desktop.
Parabola
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
<style>
body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; }
svg { width: 100%; height: 100%; }
path {
fill: none;
stroke: teal;
}
.axis path, line {
stroke: #aaa;
shape-rendering: crispEdges;
}
.axis text {
fill: #aaa;
font-size: 11px;
}
</style>
</head>
<body>
<script>
var margin = {top: 50, right: 50, bottom: 50, left: 50};
var width = 960 - margin.left - margin.right;
var height = 500 - margin.top - margin.bottom;
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 fn = function (x) {
return Math.pow(x, 2);
};
var x = d3.scale.linear()
.range([0, width]);
var y = d3.scale.linear()
.range([height, 0]);
var xAxis = d3.svg.axis()
.scale(x);
var yAxis = d3.svg.axis()
.orient('left')
.scale(y);
var line = d3.svg.line()
.interpolate('basis')
.x(function (d) {return x(d.x);})
.y(function (d) {return y(d.y);});
var data = d3.range(-10, 11).map(function (d) {
return {x:d, y:fn(d)};
});
x.domain(d3.extent(data, function (d) {return d.x;}));
y.domain([0, d3.max(data, function (d) {return d.y;})]);
svg.append('g')
.attr('class', 'axis')
.attr('transform', 'translate(0,' + height + ')')
.call(xAxis);
svg.append('g')
.attr('class', 'axis')
.attr('transform', 'translate(' + width/2 + ',0)')
.call(yAxis);
svg.append('path')
.datum(data)
.attr('d', line);
</script>
</body>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment