Skip to content

Instantly share code, notes, and snippets.

@pstuffa
Last active March 6, 2018 10:04
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pstuffa/c37d059efa1501d33913d63ffe3585db to your computer and use it in GitHub Desktop.
Save pstuffa/c37d059efa1501d33913d63ffe3585db to your computer and use it in GitHub Desktop.
Linear & Ordinal Scales
<!DOCTYPE html>
<meta charset="utf-8">
<script src="https://d3js.org/d3.v4.min.js"></script>
<style type="text/css">
</style>
<body>
</body>
<script>
var scales = ["Linear", "Ordinal", "Point", "Band", "Log", "Pow"];
var dataset = [1,3,8,9];
var margin = {top: 20, right: 20, bottom: 20, left: 20};
var width = 800 - margin.left - margin.right,
height = 80 - margin.top - margin.bottom;
var divs = d3.selectAll(".scaleDiv")
.data(scales)
.enter().append("div")
.attr("class", "div")
.each(multiple)
function multiple(scaleType) {
var svg = d3.select(this).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 scale = d3["scale" + scaleType]()
if(scaleType == "Linear") {
scale.domain(d3.extent(dataset, function(d) { return d; }))
.range([0, width]);
}
if(scaleType == "Log") {
scale.range([0, width]);
}
if(scaleType == "Pow") {
scale.domain(d3.extent(dataset, function(d) { return d; }))
.exponent(.1)
.range([0, width]);
}
if(scaleType == "Point") {
scale.domain(dataset)
.padding([1])
.rangeRound([0, width]);
}
if(scaleType == "Band") {
scale.domain(dataset)
.padding([.5])
.rangeRound([0, width]);
}
if(scaleType == "Ordinal") {
scale.domain(dataset)
.range([0, 40, 30, width]);
}
svg.append("text")
.attr("y", 10)
.text(scaleType);
svg.selectAll("." + scaleType)
.data(dataset)
.enter().append("circle")
.attr("r", 5)
.attr("cy", 40)
.attr("cx", function(d) { return scale(d); })
svg.append("g")
.attr("class","x axis")
.attr("transform","translate(0," + height + ")")
.call(d3.axisBottom(scale));
}
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment