Skip to content

Commit 5748994

Browse files
committed
Add d3.scale.quantize.
A quantize scale is much like a linear scale, but it returns a discrete value from a set range (similar to quantile and ordinal scales).
1 parent 41c91fd commit 5748994

7 files changed

Lines changed: 123 additions & 65 deletions

File tree

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ d3.scale.js: \
7171
src/scale/sqrt.js \
7272
src/scale/ordinal.js \
7373
src/scale/category.js \
74-
src/scale/quantile.js
74+
src/scale/quantile.js \
75+
src/scale/quantize.js
7576

7677
d3.svg.js: \
7778
src/svg/svg.js \

d3.js

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
(function(){d3 = {version: "0.29.3"}; // semver
1+
(function(){d3 = {version: "0.29.4"}; // semver
22
if (!Date.now) Date.now = function() {
33
return +new Date();
44
};
@@ -2081,6 +2081,35 @@ d3.scale.quantile = function() {
20812081

20822082
return scale;
20832083
};
2084+
d3.scale.quantize = function() {
2085+
var x0 = 0,
2086+
x1 = 1,
2087+
kx = 2,
2088+
i = 1,
2089+
range = [0, 1];
2090+
2091+
function scale(x) {
2092+
return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];
2093+
}
2094+
2095+
scale.domain = function(x) {
2096+
if (!arguments.length) return [x0, x1];
2097+
x0 = x[0];
2098+
x1 = x[1];
2099+
kx = range.length / (x1 - x0);
2100+
return scale;
2101+
};
2102+
2103+
scale.range = function(x) {
2104+
if (!arguments.length) return range;
2105+
range = x;
2106+
kx = range.length / (x1 - x0);
2107+
i = range.length - 1;
2108+
return scale;
2109+
};
2110+
2111+
return scale;
2112+
};
20842113
d3.svg = {};
20852114
d3.svg.arc = function() {
20862115
var innerRadius = d3_svg_arcInnerRadius,

d3.min.js

Lines changed: 54 additions & 53 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/calendar/dji.html

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<html>
22
<head>
33
<title>DJI</title>
4-
<script type="text/javascript" src="../../d3.min.js"></script>
5-
<script type="text/javascript" src="../../d3.csv.min.js"></script>
4+
<script type="text/javascript" src="../../d3.js"></script>
5+
<script type="text/javascript" src="../../d3.csv.js"></script>
66
<style type="text/css">
77

88
@import url("../../lib/colorbrewer/colorbrewer.css");
@@ -35,8 +35,8 @@
3535
.rollup(function(d) { return (d[0].Close - d[0].Open) / d[0].Open; })
3636
.map(csv);
3737

38-
var color = d3.scale.quantile()
39-
.domain(d3.values(data))
38+
var color = d3.scale.quantize()
39+
.domain([-.05, .05])
4040
.range(d3.range(9));
4141

4242
var w = 960,
@@ -51,7 +51,7 @@
5151
.enter("svg:svg")
5252
.attr("width", w)
5353
.attr("height", h)
54-
.attr("class", "RdYlGn")
54+
.attr("class", "RdGy")
5555
.append("svg:g")
5656
.attr("transform", "translate(" + pw + "," + ph + ")");
5757

examples/calendar/vix.html

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
<html>
22
<head>
33
<title>VIX</title>
4-
<script type="text/javascript" src="../../d3.min.js"></script>
5-
<script type="text/javascript" src="../../d3.csv.min.js"></script>
6-
<script type="text/javascript" src="values.js"></script>
7-
<script type="text/javascript" src="nest.js"></script>
4+
<script type="text/javascript" src="../../d3.js"></script>
5+
<script type="text/javascript" src="../../d3.csv.js"></script>
86
<style type="text/css">
97

108
@import url("../../lib/colorbrewer/colorbrewer.css");

src/core/core.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
d3 = {version: "0.29.3"}; // semver
1+
d3 = {version: "0.29.4"}; // semver

src/scale/quantize.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
d3.scale.quantize = function() {
2+
var x0 = 0,
3+
x1 = 1,
4+
kx = 2,
5+
i = 1,
6+
range = [0, 1];
7+
8+
function scale(x) {
9+
return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];
10+
}
11+
12+
scale.domain = function(x) {
13+
if (!arguments.length) return [x0, x1];
14+
x0 = x[0];
15+
x1 = x[1];
16+
kx = range.length / (x1 - x0);
17+
return scale;
18+
};
19+
20+
scale.range = function(x) {
21+
if (!arguments.length) return range;
22+
range = x;
23+
kx = range.length / (x1 - x0);
24+
i = range.length - 1;
25+
return scale;
26+
};
27+
28+
return scale;
29+
};

0 commit comments

Comments
 (0)