d3_rails 2.9.1 → 2.9.2.rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.DS_Store +0 -0
- data/Gemfile +0 -1
- data/README.md +3 -36
- data/lib/.DS_Store +0 -0
- data/{vendor/assets/javascripts/morris → lib/d3_rails}/.DS_Store +0 -0
- data/lib/d3_rails/version.rb +1 -1
- data/vendor/.DS_Store +0 -0
- data/vendor/assets/.DS_Store +0 -0
- data/vendor/assets/javascripts/.DS_Store +0 -0
- data/vendor/assets/javascripts/d3.v2.js +7 -5
- data/vendor/assets/stylesheets/.DS_Store +0 -0
- metadata +13 -72
- data/vendor/assets/javascripts/chart/box.js +0 -297
- data/vendor/assets/javascripts/chart/bullet.js +0 -237
- data/vendor/assets/javascripts/chart/chart.js +0 -1
- data/vendor/assets/javascripts/chart/horizon.js +0 -203
- data/vendor/assets/javascripts/chart/qq.js +0 -245
- data/vendor/assets/javascripts/d3_chart_module.js +0 -1
- data/vendor/assets/javascripts/morris.js +0 -1
- data/vendor/assets/javascripts/morris/Makefile +0 -10
- data/vendor/assets/javascripts/morris/README.md +0 -87
- data/vendor/assets/javascripts/morris/examples/_template.html +0 -18
- data/vendor/assets/javascripts/morris/examples/days.html +0 -36
- data/vendor/assets/javascripts/morris/examples/decimal.html +0 -31
- data/vendor/assets/javascripts/morris/examples/lib/example.css +0 -13
- data/vendor/assets/javascripts/morris/examples/lib/example.js +0 -4
- data/vendor/assets/javascripts/morris/examples/lib/prettify.css +0 -1
- data/vendor/assets/javascripts/morris/examples/lib/prettify.js +0 -28
- data/vendor/assets/javascripts/morris/examples/months-no-smooth.html +0 -37
- data/vendor/assets/javascripts/morris/examples/negative.html +0 -35
- data/vendor/assets/javascripts/morris/examples/non-date.html +0 -36
- data/vendor/assets/javascripts/morris/examples/quarters.html +0 -53
- data/vendor/assets/javascripts/morris/examples/timestamps.html +0 -37
- data/vendor/assets/javascripts/morris/examples/weeks.html +0 -52
- data/vendor/assets/javascripts/morris/morris.coffee +0 -444
- data/vendor/assets/javascripts/morris/morris.js +0 -493
- data/vendor/assets/javascripts/morris/morris.min.js +0 -1
- data/vendor/assets/javascripts/tesseract.js +0 -1
- data/vendor/assets/javascripts/tesseract/.gitignore +0 -2
- data/vendor/assets/javascripts/tesseract/LICENSE +0 -12
- data/vendor/assets/javascripts/tesseract/Makefile +0 -48
- data/vendor/assets/javascripts/tesseract/README.md +0 -11
- data/vendor/assets/javascripts/tesseract/index.js +0 -1
- data/vendor/assets/javascripts/tesseract/lib/dart/AUTHORS +0 -9
- data/vendor/assets/javascripts/tesseract/lib/dart/LICENSE +0 -25
- data/vendor/assets/javascripts/tesseract/lib/dart/dual_pivot_quicksort.dart +0 -342
- data/vendor/assets/javascripts/tesseract/package.json +0 -11
- data/vendor/assets/javascripts/tesseract/src/array.js +0 -32
- data/vendor/assets/javascripts/tesseract/src/bisect.js +0 -44
- data/vendor/assets/javascripts/tesseract/src/filter.js +0 -19
- data/vendor/assets/javascripts/tesseract/src/heap.js +0 -44
- data/vendor/assets/javascripts/tesseract/src/heapselect.js +0 -36
- data/vendor/assets/javascripts/tesseract/src/identity.js +0 -3
- data/vendor/assets/javascripts/tesseract/src/insertionsort.js +0 -18
- data/vendor/assets/javascripts/tesseract/src/null.js +0 -3
- data/vendor/assets/javascripts/tesseract/src/package.js +0 -14
- data/vendor/assets/javascripts/tesseract/src/permute.js +0 -8
- data/vendor/assets/javascripts/tesseract/src/quicksort.js +0 -282
- data/vendor/assets/javascripts/tesseract/src/reduce.js +0 -19
- data/vendor/assets/javascripts/tesseract/src/tesseract.js +0 -663
- data/vendor/assets/javascripts/tesseract/src/version.js +0 -1
- data/vendor/assets/javascripts/tesseract/src/zero.js +0 -3
- data/vendor/assets/javascripts/tesseract/tesseract.js +0 -1177
- data/vendor/assets/javascripts/tesseract/tesseract.min.js +0 -1
- data/vendor/assets/javascripts/tesseract/test/benchmark.js +0 -177
- data/vendor/assets/javascripts/tesseract/test/bisect-test.js +0 -206
- data/vendor/assets/javascripts/tesseract/test/heap-test.js +0 -44
- data/vendor/assets/javascripts/tesseract/test/permute-test.js +0 -51
- data/vendor/assets/javascripts/tesseract/test/select-test.js +0 -63
- data/vendor/assets/javascripts/tesseract/test/sort-test.js +0 -83
- data/vendor/assets/javascripts/tesseract/test/tesseract-test.js +0 -655
- data/vendor/assets/javascripts/tesseract/test/version-test.js +0 -16
data/.DS_Store
CHANGED
Binary file
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -16,8 +16,8 @@ or you can use it to build dynamic pages (like jQuery).
|
|
16
16
|
|
17
17
|
# D3 Version
|
18
18
|
|
19
|
-
The current release of this gem is using **D3 v=2.9.
|
20
|
-
**Last Updated
|
19
|
+
The current release of this gem is using **D3 v=2.9.2** (though for convenience I have left version 2.7.5 in the gem so you can still include your modules manually since rails will compile your javascripts into one file in the end anyway)
|
20
|
+
**Last Updated 5-18-2012**
|
21
21
|
|
22
22
|
# Included Javascripts
|
23
23
|
**minified js files are not included, since the rails asset pipeline sorta necessitates the compiling (and likely minifying) your js files for production**
|
@@ -33,40 +33,7 @@ The current release of this gem is using **D3 v=2.9.1** (though for convenience
|
|
33
33
|
science.js
|
34
34
|
science.lin.js
|
35
35
|
science.stats.js
|
36
|
-
|
37
|
-
## Additional modules:
|
38
|
-
|
39
|
-
There are a few additional modules/js libraries included for convenience in this gem:
|
40
|
-
|
41
|
-
morris.js
|
42
|
-
tesseract.js
|
43
|
-
d3 charting module
|
44
|
-
|
45
|
-
## D3 charting module
|
46
|
-
|
47
|
-
** D3 charts can be be included in your rails application by including the following line in your javascripts manifest **
|
48
|
-
|
49
|
-
//= require d3_chart_module
|
50
|
-
|
51
|
-
This will include the following javascripts to your application:
|
52
|
-
|
53
|
-
box.js
|
54
|
-
bullet.js
|
55
|
-
chart.js
|
56
|
-
horizon.js
|
57
|
-
qq.js
|
58
|
-
|
59
|
-
## Tesseract
|
60
|
-
|
61
|
-
** Tesseract can be be included in your rails application by including the following line in your javascripts manifest **
|
62
|
-
|
63
|
-
//= require tesseract
|
64
|
-
|
65
|
-
## Morris
|
66
|
-
|
67
|
-
** Morris can also be included in your application with the following additional line of code for your javascripts manifest.
|
68
|
-
|
69
|
-
//= require morris
|
36
|
+
d3.v2.js
|
70
37
|
|
71
38
|
### Installation
|
72
39
|
|
data/lib/.DS_Store
CHANGED
Binary file
|
Binary file
|
data/lib/d3_rails/version.rb
CHANGED
data/vendor/.DS_Store
CHANGED
Binary file
|
data/vendor/assets/.DS_Store
CHANGED
Binary file
|
Binary file
|
@@ -10,7 +10,7 @@ try {
|
|
10
10
|
d3_style_setProperty.call(this, name, value + "", priority);
|
11
11
|
};
|
12
12
|
}
|
13
|
-
d3 = {version: "2.9.
|
13
|
+
d3 = {version: "2.9.2"}; // semver
|
14
14
|
function d3_class(ctor, properties) {
|
15
15
|
try {
|
16
16
|
for (var key in properties) {
|
@@ -661,7 +661,7 @@ d3.format = function(specifier) {
|
|
661
661
|
// Apply the scale, computing it from the value's exponent for si format.
|
662
662
|
if (scale < 0) {
|
663
663
|
var prefix = d3.formatPrefix(value, precision);
|
664
|
-
value
|
664
|
+
value = prefix.scale(value);
|
665
665
|
suffix = prefix.symbol;
|
666
666
|
} else {
|
667
667
|
value *= scale;
|
@@ -730,12 +730,12 @@ d3.formatPrefix = function(value, precision) {
|
|
730
730
|
};
|
731
731
|
|
732
732
|
function d3_formatPrefix(d, i) {
|
733
|
+
var k = Math.pow(10, Math.abs(8 - i) * 3);
|
733
734
|
return {
|
734
|
-
scale:
|
735
|
+
scale: i > 8 ? function(d) { return d / k; } : function(d) { return d * k; },
|
735
736
|
symbol: d
|
736
737
|
};
|
737
738
|
}
|
738
|
-
|
739
739
|
/*
|
740
740
|
* TERMS OF USE - EASING EQUATIONS
|
741
741
|
*
|
@@ -5564,6 +5564,7 @@ d3.layout.pie = function() {
|
|
5564
5564
|
// They are stored in the original data's order.
|
5565
5565
|
var arcs = [];
|
5566
5566
|
index.forEach(function(i) {
|
5567
|
+
var d;
|
5567
5568
|
arcs[i] = {
|
5568
5569
|
data: data[i],
|
5569
5570
|
value: d = values[i],
|
@@ -5987,7 +5988,8 @@ d3.layout.hierarchy = function() {
|
|
5987
5988
|
n,
|
5988
5989
|
c = node.children = [],
|
5989
5990
|
v = 0,
|
5990
|
-
j = depth + 1
|
5991
|
+
j = depth + 1,
|
5992
|
+
d;
|
5991
5993
|
while (++i < n) {
|
5992
5994
|
d = recurse(childs[i], j, nodes);
|
5993
5995
|
d.parent = node;
|
Binary file
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: d3_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.9.
|
5
|
-
prerelease:
|
4
|
+
version: 2.9.2.rc1
|
5
|
+
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Han Kang
|
@@ -12,11 +12,11 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2012-
|
15
|
+
date: 2012-05-28 00:00:00.000000000Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: railties
|
19
|
-
requirement: &
|
19
|
+
requirement: &70217248387960 !ruby/object:Gem::Requirement
|
20
20
|
none: false
|
21
21
|
requirements:
|
22
22
|
- - ! '>='
|
@@ -24,10 +24,10 @@ dependencies:
|
|
24
24
|
version: 3.1.0
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
|
-
version_requirements: *
|
27
|
+
version_requirements: *70217248387960
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: bundler
|
30
|
-
requirement: &
|
30
|
+
requirement: &70217248387460 !ruby/object:Gem::Requirement
|
31
31
|
none: false
|
32
32
|
requirements:
|
33
33
|
- - ~>
|
@@ -35,10 +35,10 @@ dependencies:
|
|
35
35
|
version: 1.0.0
|
36
36
|
type: :development
|
37
37
|
prerelease: false
|
38
|
-
version_requirements: *
|
38
|
+
version_requirements: *70217248387460
|
39
39
|
- !ruby/object:Gem::Dependency
|
40
40
|
name: rails
|
41
|
-
requirement: &
|
41
|
+
requirement: &70217248387000 !ruby/object:Gem::Requirement
|
42
42
|
none: false
|
43
43
|
requirements:
|
44
44
|
- - ~>
|
@@ -46,7 +46,7 @@ dependencies:
|
|
46
46
|
version: '3.1'
|
47
47
|
type: :development
|
48
48
|
prerelease: false
|
49
|
-
version_requirements: *
|
49
|
+
version_requirements: *70217248387000
|
50
50
|
description: Gem installation of javascript framework for data visualization, D3
|
51
51
|
email:
|
52
52
|
- han@logicallsat.com
|
@@ -63,17 +63,13 @@ files:
|
|
63
63
|
- d3_rails.gemspec
|
64
64
|
- lib/.DS_Store
|
65
65
|
- lib/d3_rails.rb
|
66
|
+
- lib/d3_rails/.DS_Store
|
66
67
|
- lib/d3_rails/engine.rb
|
67
68
|
- lib/d3_rails/version.rb
|
68
69
|
- vendor/.DS_Store
|
69
70
|
- vendor/assets/.DS_Store
|
70
71
|
- vendor/assets/javascripts/.DS_Store
|
71
72
|
- vendor/assets/javascripts/LICENSE
|
72
|
-
- vendor/assets/javascripts/chart/box.js
|
73
|
-
- vendor/assets/javascripts/chart/bullet.js
|
74
|
-
- vendor/assets/javascripts/chart/chart.js
|
75
|
-
- vendor/assets/javascripts/chart/horizon.js
|
76
|
-
- vendor/assets/javascripts/chart/qq.js
|
77
73
|
- vendor/assets/javascripts/colorbrewer.js
|
78
74
|
- vendor/assets/javascripts/d3.chart.js
|
79
75
|
- vendor/assets/javascripts/d3.geo.js
|
@@ -82,67 +78,11 @@ files:
|
|
82
78
|
- vendor/assets/javascripts/d3.layout.js
|
83
79
|
- vendor/assets/javascripts/d3.time.js
|
84
80
|
- vendor/assets/javascripts/d3.v2.js
|
85
|
-
- vendor/assets/javascripts/d3_chart_module.js
|
86
81
|
- vendor/assets/javascripts/d3_csv.js
|
87
82
|
- vendor/assets/javascripts/d3_rails.js
|
88
|
-
- vendor/assets/javascripts/morris.js
|
89
|
-
- vendor/assets/javascripts/morris/.DS_Store
|
90
|
-
- vendor/assets/javascripts/morris/Makefile
|
91
|
-
- vendor/assets/javascripts/morris/README.md
|
92
|
-
- vendor/assets/javascripts/morris/examples/_template.html
|
93
|
-
- vendor/assets/javascripts/morris/examples/days.html
|
94
|
-
- vendor/assets/javascripts/morris/examples/decimal.html
|
95
|
-
- vendor/assets/javascripts/morris/examples/lib/example.css
|
96
|
-
- vendor/assets/javascripts/morris/examples/lib/example.js
|
97
|
-
- vendor/assets/javascripts/morris/examples/lib/prettify.css
|
98
|
-
- vendor/assets/javascripts/morris/examples/lib/prettify.js
|
99
|
-
- vendor/assets/javascripts/morris/examples/months-no-smooth.html
|
100
|
-
- vendor/assets/javascripts/morris/examples/negative.html
|
101
|
-
- vendor/assets/javascripts/morris/examples/non-date.html
|
102
|
-
- vendor/assets/javascripts/morris/examples/quarters.html
|
103
|
-
- vendor/assets/javascripts/morris/examples/timestamps.html
|
104
|
-
- vendor/assets/javascripts/morris/examples/weeks.html
|
105
|
-
- vendor/assets/javascripts/morris/morris.coffee
|
106
|
-
- vendor/assets/javascripts/morris/morris.js
|
107
|
-
- vendor/assets/javascripts/morris/morris.min.js
|
108
83
|
- vendor/assets/javascripts/science.js
|
109
84
|
- vendor/assets/javascripts/science.lin.js
|
110
85
|
- vendor/assets/javascripts/science.stats.js
|
111
|
-
- vendor/assets/javascripts/tesseract.js
|
112
|
-
- vendor/assets/javascripts/tesseract/.gitignore
|
113
|
-
- vendor/assets/javascripts/tesseract/LICENSE
|
114
|
-
- vendor/assets/javascripts/tesseract/Makefile
|
115
|
-
- vendor/assets/javascripts/tesseract/README.md
|
116
|
-
- vendor/assets/javascripts/tesseract/index.js
|
117
|
-
- vendor/assets/javascripts/tesseract/lib/dart/AUTHORS
|
118
|
-
- vendor/assets/javascripts/tesseract/lib/dart/LICENSE
|
119
|
-
- vendor/assets/javascripts/tesseract/lib/dart/dual_pivot_quicksort.dart
|
120
|
-
- vendor/assets/javascripts/tesseract/package.json
|
121
|
-
- vendor/assets/javascripts/tesseract/src/array.js
|
122
|
-
- vendor/assets/javascripts/tesseract/src/bisect.js
|
123
|
-
- vendor/assets/javascripts/tesseract/src/filter.js
|
124
|
-
- vendor/assets/javascripts/tesseract/src/heap.js
|
125
|
-
- vendor/assets/javascripts/tesseract/src/heapselect.js
|
126
|
-
- vendor/assets/javascripts/tesseract/src/identity.js
|
127
|
-
- vendor/assets/javascripts/tesseract/src/insertionsort.js
|
128
|
-
- vendor/assets/javascripts/tesseract/src/null.js
|
129
|
-
- vendor/assets/javascripts/tesseract/src/package.js
|
130
|
-
- vendor/assets/javascripts/tesseract/src/permute.js
|
131
|
-
- vendor/assets/javascripts/tesseract/src/quicksort.js
|
132
|
-
- vendor/assets/javascripts/tesseract/src/reduce.js
|
133
|
-
- vendor/assets/javascripts/tesseract/src/tesseract.js
|
134
|
-
- vendor/assets/javascripts/tesseract/src/version.js
|
135
|
-
- vendor/assets/javascripts/tesseract/src/zero.js
|
136
|
-
- vendor/assets/javascripts/tesseract/tesseract.js
|
137
|
-
- vendor/assets/javascripts/tesseract/tesseract.min.js
|
138
|
-
- vendor/assets/javascripts/tesseract/test/benchmark.js
|
139
|
-
- vendor/assets/javascripts/tesseract/test/bisect-test.js
|
140
|
-
- vendor/assets/javascripts/tesseract/test/heap-test.js
|
141
|
-
- vendor/assets/javascripts/tesseract/test/permute-test.js
|
142
|
-
- vendor/assets/javascripts/tesseract/test/select-test.js
|
143
|
-
- vendor/assets/javascripts/tesseract/test/sort-test.js
|
144
|
-
- vendor/assets/javascripts/tesseract/test/tesseract-test.js
|
145
|
-
- vendor/assets/javascripts/tesseract/test/version-test.js
|
146
86
|
- vendor/assets/stylesheets/.DS_Store
|
147
87
|
- vendor/assets/stylesheets/LICENSE
|
148
88
|
- vendor/assets/stylesheets/azimuthal.css
|
@@ -180,9 +120,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
180
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
121
|
none: false
|
182
122
|
requirements:
|
183
|
-
- - ! '
|
123
|
+
- - ! '>'
|
184
124
|
- !ruby/object:Gem::Version
|
185
|
-
version:
|
125
|
+
version: 1.3.1
|
186
126
|
requirements: []
|
187
127
|
rubyforge_project: d3_rails
|
188
128
|
rubygems_version: 1.8.6
|
@@ -190,3 +130,4 @@ signing_key:
|
|
190
130
|
specification_version: 3
|
191
131
|
summary: D3 automated install for Rails 3.1+
|
192
132
|
test_files: []
|
133
|
+
has_rdoc:
|
@@ -1,297 +0,0 @@
|
|
1
|
-
// Inspired by http://informationandvisualization.de/blog/box-plot
|
2
|
-
d3.chart.box = function() {
|
3
|
-
var width = 1,
|
4
|
-
height = 1,
|
5
|
-
duration = 0,
|
6
|
-
domain = null,
|
7
|
-
value = Number,
|
8
|
-
whiskers = d3_chart_boxWhiskers,
|
9
|
-
quartiles = d3_chart_boxQuartiles,
|
10
|
-
tickFormat = null;
|
11
|
-
|
12
|
-
// For each small multiple…
|
13
|
-
function box(g) {
|
14
|
-
g.each(function(d, i) {
|
15
|
-
d = d.map(value).sort(d3.ascending);
|
16
|
-
var g = d3.select(this),
|
17
|
-
n = d.length,
|
18
|
-
min = d[0],
|
19
|
-
max = d[n - 1];
|
20
|
-
|
21
|
-
// Compute quartiles. Must return exactly 3 elements.
|
22
|
-
var quartileData = d.quartiles = quartiles(d);
|
23
|
-
|
24
|
-
// Compute whiskers. Must return exactly 2 elements, or null.
|
25
|
-
var whiskerIndices = whiskers && whiskers.call(this, d, i),
|
26
|
-
whiskerData = whiskerIndices && whiskerIndices.map(function(i) { return d[i]; });
|
27
|
-
|
28
|
-
// Compute outliers. If no whiskers are specified, all data are "outliers".
|
29
|
-
// We compute the outliers as indices, so that we can join across transitions!
|
30
|
-
var outlierIndices = whiskerIndices
|
31
|
-
? d3.range(0, whiskerIndices[0]).concat(d3.range(whiskerIndices[1] + 1, n))
|
32
|
-
: d3.range(n);
|
33
|
-
|
34
|
-
// Compute the new x-scale.
|
35
|
-
var x1 = d3.scale.linear()
|
36
|
-
.domain(domain && domain.call(this, d, i) || [min, max])
|
37
|
-
.range([height, 0]);
|
38
|
-
|
39
|
-
// Retrieve the old x-scale, if this is an update.
|
40
|
-
var x0 = this.__chart__ || d3.scale.linear()
|
41
|
-
.domain([0, Infinity])
|
42
|
-
.range(x1.range());
|
43
|
-
|
44
|
-
// Stash the new scale.
|
45
|
-
this.__chart__ = x1;
|
46
|
-
|
47
|
-
// Note: the box, median, and box tick elements are fixed in number,
|
48
|
-
// so we only have to handle enter and update. In contrast, the outliers
|
49
|
-
// and other elements are variable, so we need to exit them! Variable
|
50
|
-
// elements also fade in and out.
|
51
|
-
|
52
|
-
// Update center line: the vertical line spanning the whiskers.
|
53
|
-
var center = g.selectAll("line.center")
|
54
|
-
.data(whiskerData ? [whiskerData] : []);
|
55
|
-
|
56
|
-
center.enter().insert("svg:line", "rect")
|
57
|
-
.attr("class", "center")
|
58
|
-
.attr("x1", width / 2)
|
59
|
-
.attr("y1", function(d) { return x0(d[0]); })
|
60
|
-
.attr("x2", width / 2)
|
61
|
-
.attr("y2", function(d) { return x0(d[1]); })
|
62
|
-
.style("opacity", 1e-6)
|
63
|
-
.transition()
|
64
|
-
.duration(duration)
|
65
|
-
.style("opacity", 1)
|
66
|
-
.attr("y1", function(d) { return x1(d[0]); })
|
67
|
-
.attr("y2", function(d) { return x1(d[1]); });
|
68
|
-
|
69
|
-
center.transition()
|
70
|
-
.duration(duration)
|
71
|
-
.style("opacity", 1)
|
72
|
-
.attr("y1", function(d) { return x1(d[0]); })
|
73
|
-
.attr("y2", function(d) { return x1(d[1]); });
|
74
|
-
|
75
|
-
center.exit().transition()
|
76
|
-
.duration(duration)
|
77
|
-
.style("opacity", 1e-6)
|
78
|
-
.attr("y1", function(d) { return x1(d[0]); })
|
79
|
-
.attr("y2", function(d) { return x1(d[1]); })
|
80
|
-
.remove();
|
81
|
-
|
82
|
-
// Update innerquartile box.
|
83
|
-
var box = g.selectAll("rect.box")
|
84
|
-
.data([quartileData]);
|
85
|
-
|
86
|
-
box.enter().append("svg:rect")
|
87
|
-
.attr("class", "box")
|
88
|
-
.attr("x", 0)
|
89
|
-
.attr("y", function(d) { return x0(d[2]); })
|
90
|
-
.attr("width", width)
|
91
|
-
.attr("height", function(d) { return x0(d[0]) - x0(d[2]); })
|
92
|
-
.transition()
|
93
|
-
.duration(duration)
|
94
|
-
.attr("y", function(d) { return x1(d[2]); })
|
95
|
-
.attr("height", function(d) { return x1(d[0]) - x1(d[2]); });
|
96
|
-
|
97
|
-
box.transition()
|
98
|
-
.duration(duration)
|
99
|
-
.attr("y", function(d) { return x1(d[2]); })
|
100
|
-
.attr("height", function(d) { return x1(d[0]) - x1(d[2]); });
|
101
|
-
|
102
|
-
// Update median line.
|
103
|
-
var medianLine = g.selectAll("line.median")
|
104
|
-
.data([quartileData[1]]);
|
105
|
-
|
106
|
-
medianLine.enter().append("svg:line")
|
107
|
-
.attr("class", "median")
|
108
|
-
.attr("x1", 0)
|
109
|
-
.attr("y1", x0)
|
110
|
-
.attr("x2", width)
|
111
|
-
.attr("y2", x0)
|
112
|
-
.transition()
|
113
|
-
.duration(duration)
|
114
|
-
.attr("y1", x1)
|
115
|
-
.attr("y2", x1);
|
116
|
-
|
117
|
-
medianLine.transition()
|
118
|
-
.duration(duration)
|
119
|
-
.attr("y1", x1)
|
120
|
-
.attr("y2", x1);
|
121
|
-
|
122
|
-
// Update whiskers.
|
123
|
-
var whisker = g.selectAll("line.whisker")
|
124
|
-
.data(whiskerData || []);
|
125
|
-
|
126
|
-
whisker.enter().insert("svg:line", "circle, text")
|
127
|
-
.attr("class", "whisker")
|
128
|
-
.attr("x1", 0)
|
129
|
-
.attr("y1", x0)
|
130
|
-
.attr("x2", width)
|
131
|
-
.attr("y2", x0)
|
132
|
-
.style("opacity", 1e-6)
|
133
|
-
.transition()
|
134
|
-
.duration(duration)
|
135
|
-
.attr("y1", x1)
|
136
|
-
.attr("y2", x1)
|
137
|
-
.style("opacity", 1);
|
138
|
-
|
139
|
-
whisker.transition()
|
140
|
-
.duration(duration)
|
141
|
-
.attr("y1", x1)
|
142
|
-
.attr("y2", x1)
|
143
|
-
.style("opacity", 1);
|
144
|
-
|
145
|
-
whisker.exit().transition()
|
146
|
-
.duration(duration)
|
147
|
-
.attr("y1", x1)
|
148
|
-
.attr("y2", x1)
|
149
|
-
.style("opacity", 1e-6)
|
150
|
-
.remove();
|
151
|
-
|
152
|
-
// Update outliers.
|
153
|
-
var outlier = g.selectAll("circle.outlier")
|
154
|
-
.data(outlierIndices, Number);
|
155
|
-
|
156
|
-
outlier.enter().insert("svg:circle", "text")
|
157
|
-
.attr("class", "outlier")
|
158
|
-
.attr("r", 5)
|
159
|
-
.attr("cx", width / 2)
|
160
|
-
.attr("cy", function(i) { return x0(d[i]); })
|
161
|
-
.style("opacity", 1e-6)
|
162
|
-
.transition()
|
163
|
-
.duration(duration)
|
164
|
-
.attr("cy", function(i) { return x1(d[i]); })
|
165
|
-
.style("opacity", 1);
|
166
|
-
|
167
|
-
outlier.transition()
|
168
|
-
.duration(duration)
|
169
|
-
.attr("cy", function(i) { return x1(d[i]); })
|
170
|
-
.style("opacity", 1);
|
171
|
-
|
172
|
-
outlier.exit().transition()
|
173
|
-
.duration(duration)
|
174
|
-
.attr("cy", function(i) { return x1(d[i]); })
|
175
|
-
.style("opacity", 1e-6)
|
176
|
-
.remove();
|
177
|
-
|
178
|
-
// Compute the tick format.
|
179
|
-
var format = tickFormat || x1.tickFormat(8);
|
180
|
-
|
181
|
-
// Update box ticks.
|
182
|
-
var boxTick = g.selectAll("text.box")
|
183
|
-
.data(quartileData);
|
184
|
-
|
185
|
-
boxTick.enter().append("svg:text")
|
186
|
-
.attr("class", "box")
|
187
|
-
.attr("dy", ".3em")
|
188
|
-
.attr("dx", function(d, i) { return i & 1 ? 6 : -6 })
|
189
|
-
.attr("x", function(d, i) { return i & 1 ? width : 0 })
|
190
|
-
.attr("y", x0)
|
191
|
-
.attr("text-anchor", function(d, i) { return i & 1 ? "start" : "end"; })
|
192
|
-
.text(format)
|
193
|
-
.transition()
|
194
|
-
.duration(duration)
|
195
|
-
.attr("y", x1);
|
196
|
-
|
197
|
-
boxTick.transition()
|
198
|
-
.duration(duration)
|
199
|
-
.text(format)
|
200
|
-
.attr("y", x1);
|
201
|
-
|
202
|
-
// Update whisker ticks. These are handled separately from the box
|
203
|
-
// ticks because they may or may not exist, and we want don't want
|
204
|
-
// to join box ticks pre-transition with whisker ticks post-.
|
205
|
-
var whiskerTick = g.selectAll("text.whisker")
|
206
|
-
.data(whiskerData || []);
|
207
|
-
|
208
|
-
whiskerTick.enter().append("svg:text")
|
209
|
-
.attr("class", "whisker")
|
210
|
-
.attr("dy", ".3em")
|
211
|
-
.attr("dx", 6)
|
212
|
-
.attr("x", width)
|
213
|
-
.attr("y", x0)
|
214
|
-
.text(format)
|
215
|
-
.style("opacity", 1e-6)
|
216
|
-
.transition()
|
217
|
-
.duration(duration)
|
218
|
-
.attr("y", x1)
|
219
|
-
.style("opacity", 1);
|
220
|
-
|
221
|
-
whiskerTick.transition()
|
222
|
-
.duration(duration)
|
223
|
-
.text(format)
|
224
|
-
.attr("y", x1)
|
225
|
-
.style("opacity", 1);
|
226
|
-
|
227
|
-
whiskerTick.exit().transition()
|
228
|
-
.duration(duration)
|
229
|
-
.attr("y", x1)
|
230
|
-
.style("opacity", 1e-6)
|
231
|
-
.remove();
|
232
|
-
});
|
233
|
-
d3.timer.flush();
|
234
|
-
}
|
235
|
-
|
236
|
-
box.width = function(x) {
|
237
|
-
if (!arguments.length) return width;
|
238
|
-
width = x;
|
239
|
-
return box;
|
240
|
-
};
|
241
|
-
|
242
|
-
box.height = function(x) {
|
243
|
-
if (!arguments.length) return height;
|
244
|
-
height = x;
|
245
|
-
return box;
|
246
|
-
};
|
247
|
-
|
248
|
-
box.tickFormat = function(x) {
|
249
|
-
if (!arguments.length) return tickFormat;
|
250
|
-
tickFormat = x;
|
251
|
-
return box;
|
252
|
-
};
|
253
|
-
|
254
|
-
box.duration = function(x) {
|
255
|
-
if (!arguments.length) return duration;
|
256
|
-
duration = x;
|
257
|
-
return box;
|
258
|
-
};
|
259
|
-
|
260
|
-
box.domain = function(x) {
|
261
|
-
if (!arguments.length) return domain;
|
262
|
-
domain = x == null ? x : d3.functor(x);
|
263
|
-
return box;
|
264
|
-
};
|
265
|
-
|
266
|
-
box.value = function(x) {
|
267
|
-
if (!arguments.length) return value;
|
268
|
-
value = x;
|
269
|
-
return box;
|
270
|
-
};
|
271
|
-
|
272
|
-
box.whiskers = function(x) {
|
273
|
-
if (!arguments.length) return whiskers;
|
274
|
-
whiskers = x;
|
275
|
-
return box;
|
276
|
-
};
|
277
|
-
|
278
|
-
box.quartiles = function(x) {
|
279
|
-
if (!arguments.length) return quartiles;
|
280
|
-
quartiles = x;
|
281
|
-
return box;
|
282
|
-
};
|
283
|
-
|
284
|
-
return box;
|
285
|
-
};
|
286
|
-
|
287
|
-
function d3_chart_boxWhiskers(d) {
|
288
|
-
return [0, d.length - 1];
|
289
|
-
}
|
290
|
-
|
291
|
-
function d3_chart_boxQuartiles(d) {
|
292
|
-
return [
|
293
|
-
d3.quantile(d, .25),
|
294
|
-
d3.quantile(d, .5),
|
295
|
-
d3.quantile(d, .75)
|
296
|
-
];
|
297
|
-
}
|