' )
59 | .parent()
60 | .addClass( this.orientation )
61 | .css( 'font-size', this.element.css('font-size') );
62 |
63 | this._super();
64 |
65 | this.element.removeClass( 'ui-widget' )
66 |
67 | this._alignWithStep();
68 |
69 | if ( this.orientation == 'horizontal' ) {
70 | this.uiSlider
71 | .width( this.element.css('width') );
72 | } else {
73 | this.uiSlider
74 | .height( this.element.css('height') );
75 | }
76 |
77 | this._drawLabels();
78 | },
79 |
80 | _drawLabels: function () {
81 |
82 | var labels = this.options.tickLabels || {},
83 | $lbl = this.uiSlider.children( '.ui-slider-labels' ),
84 | dir = this.orientation == 'horizontal' ? 'left' : 'bottom',
85 | min = this.options.min,
86 | max = this.options.max,
87 | inr = this.tickInterval,
88 | cnt = ( max - min ),
89 | tickArray = this.options.tickArray,
90 | ta = tickArray.length > 0,
91 | label, pt,
92 | i = 0;
93 |
94 | $lbl.html('');
95 |
96 | for (;i<=cnt;i++) {
97 |
98 | if ( ( !ta && i%inr == 0 ) || ( ta && tickArray.indexOf( i+min ) > -1 ) ) {
99 |
100 | label = labels[i+min] ? labels[i+min] : (this.options.tweenLabels ? i+min : '');
101 |
102 | $('
').addClass( 'ui-slider-label-ticks' )
103 | .css( dir, (Math.round( ( i / cnt ) * 10000 ) / 100) + '%' )
104 | .html( '
'+( label )+'' )/* dvc.nformat adds thousand seperator*/
105 | .appendTo( $lbl );
106 |
107 | }
108 | }
109 |
110 | },
111 |
112 | _setOption: function( key, value ) {
113 |
114 | this._super( key, value );
115 |
116 | switch ( key ) {
117 |
118 | case 'tickInterval':
119 | case 'tickLabels':
120 | case 'tickArray':
121 | case 'min':
122 | case 'max':
123 | case 'step':
124 |
125 | this._alignWithStep();
126 | this._drawLabels();
127 | break;
128 |
129 | case 'orientation':
130 |
131 | this.element
132 | .removeClass( 'horizontal vertical' )
133 | .addClass( this.orientation );
134 |
135 | this._drawLabels();
136 | break;
137 | }
138 | },
139 |
140 | _alignWithStep: function () {
141 | if ( this.options.tickInterval < this.options.step )
142 | this.tickInterval = this.options.step;
143 | else
144 | this.tickInterval = this.options.tickInterval;
145 | },
146 |
147 | _destroy: function() {
148 | this._super();
149 | this.uiSlider.replaceWith( this.element );
150 | },
151 |
152 | widget: function() {
153 | return this.uiSlider;
154 | }
155 |
156 | });
157 |
158 | }(jQuery));
--------------------------------------------------------------------------------
/lib/swoopy-drag-d3v4.js:
--------------------------------------------------------------------------------
1 | d3.swoopyDrag = function(){
2 | var x = d3.scaleLinear()
3 | var y = d3.scaleLinear()
4 |
5 | var annotations = []
6 | var annotationSel
7 |
8 | var draggable = false
9 |
10 | var dispatch = d3.dispatch('drag')
11 |
12 | var textDrag = d3.drag()
13 | .on('drag', function(d){
14 | var x = d3.event.x
15 | var y = d3.event.y
16 | d.textOffset = [x, y].map(Math.round)
17 |
18 | d3.select(this).call(translate, d.textOffset)
19 |
20 | dispatch.call('drag')
21 | })
22 | .subject(function(d){ return {x: d.textOffset[0], y: d.textOffset[1]} })
23 |
24 | var circleDrag = d3.drag()
25 | .on('drag', function(d){
26 | var x = d3.event.x
27 | var y = d3.event.y
28 | d.pos = [x, y].map(Math.round)
29 |
30 | var parentSel = d3.select(this.parentNode)
31 |
32 | var path = ''
33 | var points = parentSel.selectAll('circle').data()
34 | if (points[0].type == 'A'){
35 | path = calcCirclePath(points)
36 | } else{
37 | points.forEach(function(d){ path = path + d.type + d.pos })
38 | }
39 |
40 | parentSel.select('path').attr('d', path).datum().path = path
41 | d3.select(this).call(translate, d.pos)
42 |
43 | dispatch.call('drag')
44 | })
45 | .subject(function(d){ return {x: d.pos[0], y: d.pos[1]} })
46 |
47 |
48 | var rv = function(sel){
49 | annotationSel = sel.html('').selectAll('g')
50 | .data(annotations).enter()
51 | .append('g')
52 | .call(translate, function(d){ return [x(d), y(d)] })
53 |
54 | var textSel = annotationSel.append('text')
55 | .call(translate, ƒ('textOffset'))
56 | .text(ƒ('text'))
57 |
58 | annotationSel.append('path')
59 | .attr('d', ƒ('path'))
60 |
61 | if (!draggable) return
62 |
63 | annotationSel.style('cursor', 'pointer')
64 | textSel.call(textDrag)
65 |
66 | annotationSel.selectAll('circle').data(function(d){
67 | var points = []
68 |
69 | if (~d.path.indexOf('A')){
70 | //handle arc paths seperatly -- only one circle supported
71 | var pathNode = d3.select(this).select('path').node()
72 | var l = pathNode.getTotalLength()
73 |
74 | points = [0, .5, 1].map(function(d){
75 | var p = pathNode.getPointAtLength(d*l)
76 | return {pos: [p.x, p.y], type: 'A'}
77 | })
78 | } else{
79 | var i = 1
80 | var type = 'M'
81 | var commas = 0
82 |
83 | for (var j = 1; j < d.path.length; j++){
84 | var curChar = d.path[j]
85 | if (curChar == ',') commas++
86 | if (curChar == 'L' || curChar == 'C' || commas == 2){
87 | points.push({pos: d.path.slice(i, j).split(','), type: type})
88 | type = curChar
89 | i = j + 1
90 | commas = 0
91 | }
92 | }
93 |
94 | points.push({pos: d.path.slice(i, j).split(','), type: type})
95 | }
96 |
97 | return points
98 | }).enter().append('circle')
99 | .attr('r', 8)
100 | .attr('fill', 'rgba(0,0,0,0)')
101 | .attr('stroke', '#333')
102 | .attr('stroke-dasharray', '2 2')
103 | .call(translate, ƒ('pos'))
104 | .call(circleDrag)
105 |
106 | dispatch.call('drag')
107 | }
108 |
109 |
110 | rv.annotations = function(_x){
111 | if (typeof(_x) == 'undefined') return annotations
112 | annotations = _x
113 | return rv
114 | }
115 | rv.x = function(_x){
116 | if (typeof(_x) == 'undefined') return x
117 | x = _x
118 | return rv
119 | }
120 | rv.y = function(_x){
121 | if (typeof(_x) == 'undefined') return y
122 | y = _x
123 | return rv
124 | }
125 | rv.draggable = function(_x){
126 | if (typeof(_x) == 'undefined') return draggable
127 | draggable = _x
128 | return rv
129 | }
130 | rv.on = function() {
131 | var value = dispatch.on.apply(dispatch, arguments);
132 | return value === dispatch ? rv : value;
133 | }
134 |
135 | return rv
136 |
137 | //convert 3 points to an Arc Path
138 | function calcCirclePath(points){
139 | var a = points[0].pos
140 | var b = points[2].pos
141 | var c = points[1].pos
142 |
143 | var A = dist(b, c)
144 | var B = dist(c, a)
145 | var C = dist(a, b)
146 |
147 | var angle = Math.acos((A*A + B*B - C*C)/(2*A*B))
148 |
149 | //calc radius of circle
150 | var K = .5*A*B*Math.sin(angle)
151 | var r = A*B*C/4/K
152 | r = Math.round(r*1000)/1000
153 |
154 | //large arc flag
155 | var laf = +(Math.PI/2 > angle)
156 |
157 | //sweep flag
158 | var saf = +((b[0] - a[0])*(c[1] - a[1]) - (b[1] - a[1])*(c[0] - a[0]) < 0)
159 |
160 | return ['M', a, 'A', r, r, 0, laf, saf, b].join(' ')
161 | }
162 |
163 | function dist(a, b){
164 | return Math.sqrt(
165 | Math.pow(a[0] - b[0], 2) +
166 | Math.pow(a[1] - b[1], 2))
167 | }
168 |
169 |
170 | //no jetpack dependency
171 | function translate(sel, pos){
172 | sel.attr('transform', function(d){
173 | var posStr = typeof(pos) == 'function' ? pos(d) : pos
174 | return 'translate(' + posStr + ')'
175 | })
176 | }
177 |
178 | function ƒ(str){ return function(d){ return d[str] } }
179 | }
--------------------------------------------------------------------------------
/lib/globalStyle2.css:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | html, body, div, span, applet, object, iframe,
5 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
6 | a, abbr, acronym, address, big, cite, code,
7 | del, dfn, em, img, ins, kbd, q, s, samp,
8 | small, strike, strong, sub, sup, tt, var,
9 | b, u, i, center,
10 | dl, dt, dd, ol, ul, li,
11 | fieldset, form, label, legend,
12 | table, caption, tbody, tfoot, thead, tr, th, td,
13 | article, aside, canvas, details, embed,
14 | figure, figcaption, footer, header, hgroup,
15 | menu, nav, output, ruby, section, summary,
16 | time, mark, audio, video
17 | {
18 | margin: 0;
19 | padding: 0;
20 | border: 0;
21 | font-size: 100%;
22 | font: inherit;
23 | vertical-align: baseline;
24 | }
25 |
26 |
27 |
28 | html
29 | {
30 | -webkit-text-size-adjust: none; /* prevent font scaling in landscape */
31 | }
32 |
33 |
34 |
35 | body /* required */
36 | {
37 | font-family: 'Open Sans', sans-serif;
38 | font-weight:400;
39 | }
40 |
41 |
42 |
43 | a, /* required */
44 | a:link,
45 | a:visited
46 | {
47 | color: #4774CC;
48 | text-decoration: none;
49 | }
50 |
51 |
52 |
53 | a:hover, /* required */
54 | a:active
55 | {
56 | opacity: 0.7;
57 | }
58 |
59 |
60 |
61 | /*.footnotes p,*/
62 | .footer /* required */
63 | {
64 | font-size: 14px;
65 | color: #808080;
66 | font-weight:100;
67 | padding-bottom:15px;
68 | }
69 |
70 |
71 |
72 | /* chart */
73 | #graphic /* required */
74 | {
75 | width: 100%;
76 | }
77 |
78 |
79 |
80 | #graphic:before, /* required */
81 | #graphic:after
82 | {
83 | content: " "; /* 1 */
84 | display: table; /* 2 */
85 | }
86 |
87 |
88 |
89 | #graphic:after /* required */
90 | {
91 | clear: both;
92 | }
93 |
94 |
95 |
96 | #graphic img /* required */
97 | {
98 | max-width: 100%;
99 | height: auto;
100 | }
101 |
102 | .svgRect{
103 | fill: white;
104 | }
105 |
106 | /* y-axis tick labels */
107 | #graphic .axis /* required */
108 | {
109 | font-size: 12px;
110 | fill: #666;
111 | }
112 |
113 |
114 | /* x-axis baseline; not to be confused with centreline. Can consider overlaying this with #centreline */
115 | #graphic .axis path /* required */
116 | {
117 | fill: none;
118 | stroke: #666;
119 | shape-rendering: crispEdges;
120 | }
121 |
122 |
123 | #graphic .axis line /* required */
124 | {
125 | fill: none;
126 | stroke: #ccc;
127 | shape-rendering: crispEdges;
128 | }
129 |
130 | /* y-axis line path */
131 | #graphic .axis.y path /* required */
132 | {
133 | display: none;
134 | }
135 |
136 |
137 |
138 | /* y-axis full width grid lines */
139 | #graphic .grid .tick /* required */
140 | {
141 | stroke: #CCC;
142 | stroke-width: 1px;
143 | shape-rendering: crispEdges;
144 | }
145 |
146 |
147 |
148 | /* ploted graph line */
149 | #graphic .line /* required */
150 | {
151 | fill: none; /* must be 'none' */
152 | stroke-width: 3px;
153 | stroke-linecap:round;
154 | stroke-linejoin:round;
155 | }
156 |
157 |
158 |
159 | /* legend elements */
160 | #graphic .key li/* required */
161 | {
162 | display: inline-block;
163 | margin: 0 18px 0 0;
164 | padding: 0;
165 | line-height: 15px;
166 | }
167 |
168 |
169 |
170 | /* legend coloured elements */
171 | #graphic .key b/* required */
172 | {
173 | display: inline-block;
174 | width: 35px;
175 | height: 15px;
176 | margin-right: 6px;
177 | float: left;
178 | background-color:none;
179 | margin-top:8px;
180 | }
181 |
182 |
183 |
184 | /* legend element labels */
185 | #graphic .key label/* required */
186 | {
187 | white-space: nowrap;
188 | font-size: 12px;
189 | color: #333;
190 | font-weight: normal;
191 | }
192 |
193 |
194 |
195 | /* y-axis units label */
196 | #graphic .unit/* required */
197 | {
198 | font-family: Arial, Helvetica, sans-serif;
199 | font-size: 12px;
200 | fill: #333333;
201 | text-align: left;
202 | width:130px;
203 | height:20px;
204 | display:block;
205 | float:none;
206 |
207 | }
208 |
209 | .annotext0, .annotext1, .annotext2, .annotext3 {
210 | font-family: 'Open Sans', sans-serif;
211 | font-size: 16px;
212 | fill: #666;
213 | font-weight:500;
214 | }
215 |
216 |
217 |
218 | .annocirc0, .annocirc1, .annocirc2, .annocirc3{
219 | stroke:#E66500;
220 | stroke-width:2px;
221 | fill: #E66500;
222 | display:inline;
223 | }
224 |
225 | #centreline /* required */
226 | {
227 | stroke:#666;
228 | stroke-width:3px;
229 | }
230 |
231 |
232 |
233 | /* y- and x-axis tick text */
234 | .domain/* required. BOTH MUST BE NONE */
235 | {
236 | fill:none;
237 | stroke:none;
238 | }
239 |
240 |
241 | .circles
242 | {
243 | float:left;
244 | }
245 |
246 |
247 | /* footnotes to graph */
248 | #keypoints/* required. */
249 | {
250 | margin-bottom:10px;
251 | color:#666;
252 | font-weight:700;
253 | }
254 |
255 | #keypoints p/* required. */
256 | {
257 | margin-bottom:0.6em;
258 | }
259 |
260 |
261 |
--------------------------------------------------------------------------------
/plain-beeswarm/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
Beeswam plot
5 |
6 |
7 |
8 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
206 |
207 |
208 |
--------------------------------------------------------------------------------
/lib/topojson.js:
--------------------------------------------------------------------------------
1 | !function(){function t(n,t){function r(t){var r,e=n.arcs[0>t?~t:t],o=e[0];return n.transform?(r=[0,0],e.forEach(function(n){r[0]+=n[0],r[1]+=n[1]})):r=e[e.length-1],0>t?[r,o]:[o,r]}function e(n,t){for(var r in n){var e=n[r];delete t[e.start],delete e.start,delete e.end,e.forEach(function(n){o[0>n?~n:n]=1}),f.push(e)}}var o={},i={},u={},f=[],c=-1;return t.forEach(function(r,e){var o,i=n.arcs[0>r?~r:r];i.length<3&&!i[1][0]&&!i[1][1]&&(o=t[++c],t[c]=r,t[e]=o)}),t.forEach(function(n){var t,e,o=r(n),f=o[0],c=o[1];if(t=u[f])if(delete u[t.end],t.push(n),t.end=c,e=i[c]){delete i[e.start];var a=e===t?t:t.concat(e);i[a.start=t.start]=u[a.end=e.end]=a}else i[t.start]=u[t.end]=t;else if(t=i[c])if(delete i[t.start],t.unshift(n),t.start=f,e=u[f]){delete u[e.end];var s=e===t?t:e.concat(t);i[s.start=e.start]=u[s.end=t.end]=s}else i[t.start]=u[t.end]=t;else t=[n],i[t.start=f]=u[t.end=c]=t}),e(u,i),e(i,u),t.forEach(function(n){o[0>n?~n:n]||f.push([n])}),f}function r(n,r,e){function o(n){var t=0>n?~n:n;(s[t]||(s[t]=[])).push({i:n,g:a})}function i(n){n.forEach(o)}function u(n){n.forEach(i)}function f(n){"GeometryCollection"===n.type?n.geometries.forEach(f):n.type in l&&(a=n,l[n.type](n.arcs))}var c=[];if(arguments.length>1){var a,s=[],l={LineString:i,MultiLineString:u,Polygon:u,MultiPolygon:function(n){n.forEach(u)}};f(r),s.forEach(arguments.length<3?function(n){c.push(n[0].i)}:function(n){e(n[0].g,n[n.length-1].g)&&c.push(n[0].i)})}else for(var h=0,p=n.arcs.length;p>h;++h)c.push(h);return{type:"MultiLineString",arcs:t(n,c)}}function e(r,e){function o(n){n.forEach(function(t){t.forEach(function(t){(f[t=0>t?~t:t]||(f[t]=[])).push(n)})}),c.push(n)}function i(n){return l(u(r,{type:"Polygon",arcs:[n]}).coordinates[0])>0}var f={},c=[],a=[];return e.forEach(function(n){"Polygon"===n.type?o(n.arcs):"MultiPolygon"===n.type&&n.arcs.forEach(o)}),c.forEach(function(n){if(!n._){var t=[],r=[n];for(n._=1,a.push(t);n=r.pop();)t.push(n),n.forEach(function(n){n.forEach(function(n){f[0>n?~n:n].forEach(function(n){n._||(n._=1,r.push(n))})})})}}),c.forEach(function(n){delete n._}),{type:"MultiPolygon",arcs:a.map(function(e){var o=[];if(e.forEach(function(n){n.forEach(function(n){n.forEach(function(n){f[0>n?~n:n].length<2&&o.push(n)})})}),o=t(r,o),(n=o.length)>1)for(var u,c=i(e[0][0]),a=0;n>a;++a)if(c===i(o[a])){u=o[0],o[0]=o[a],o[a]=u;break}return o})}}function o(n,t){return"GeometryCollection"===t.type?{type:"FeatureCollection",features:t.geometries.map(function(t){return i(n,t)})}:i(n,t)}function i(n,t){var r={type:"Feature",id:t.id,properties:t.properties||{},geometry:u(n,t)};return null==t.id&&delete r.id,r}function u(n,t){function r(n,t){t.length&&t.pop();for(var r,e=s[0>n?~n:n],o=0,i=e.length;i>o;++o)t.push(r=e[o].slice()),a(r,o);0>n&&f(t,i)}function e(n){return n=n.slice(),a(n,0),n}function o(n){for(var t=[],e=0,o=n.length;o>e;++e)r(n[e],t);return t.length<2&&t.push(t[0].slice()),t}function i(n){for(var t=o(n);t.length<4;)t.push(t[0].slice());return t}function u(n){return n.map(i)}function c(n){var t=n.type;return"GeometryCollection"===t?{type:t,geometries:n.geometries.map(c)}:t in l?{type:t,coordinates:l[t](n)}:null}var a=v(n.transform),s=n.arcs,l={Point:function(n){return e(n.coordinates)},MultiPoint:function(n){return n.coordinates.map(e)},LineString:function(n){return o(n.arcs)},MultiLineString:function(n){return n.arcs.map(o)},Polygon:function(n){return u(n.arcs)},MultiPolygon:function(n){return n.arcs.map(u)}};return c(t)}function f(n,t){for(var r,e=n.length,o=e-t;o<--e;)r=n[o],n[o++]=n[e],n[e]=r}function c(n,t){for(var r=0,e=n.length;e>r;){var o=r+e>>>1;n[o]
n&&(n=~n);var r=o[n];r?r.push(t):o[n]=[t]})}function r(n,r){n.forEach(function(n){t(n,r)})}function e(n,t){"GeometryCollection"===n.type?n.geometries.forEach(function(n){e(n,t)}):n.type in u&&u[n.type](n.arcs,t)}var o={},i=n.map(function(){return[]}),u={LineString:t,MultiLineString:r,Polygon:r,MultiPolygon:function(n,t){n.forEach(function(n){r(n,t)})}};n.forEach(e);for(var f in o)for(var a=o[f],s=a.length,l=0;s>l;++l)for(var h=l+1;s>h;++h){var p,g=a[l],v=a[h];(p=i[g])[f=c(p,v)]!==v&&p.splice(f,0,v),(p=i[v])[f=c(p,g)]!==g&&p.splice(f,0,g)}return i}function s(n,t){function r(n){i.remove(n),n[1][2]=t(n),i.push(n)}var e=v(n.transform),o=m(n.transform),i=g();return t||(t=h),n.arcs.forEach(function(n){for(var u,f,c=[],a=0,s=0,l=n.length;l>s;++s)f=n[s],e(n[s]=[f[0],f[1],1/0],s);for(var s=1,l=n.length-1;l>s;++s)u=n.slice(s-1,s+2),u[1][2]=t(u),c.push(u),i.push(u);for(var s=0,l=c.length;l>s;++s)u=c[s],u.previous=c[s-1],u.next=c[s+1];for(;u=i.pop();){var h=u.previous,p=u.next;u[1][2]0;){var r=(t+1>>1)-1,o=e[r];if(p(n,o)>=0)break;e[o._=t]=o,e[n._=t=r]=n}}function t(n,t){for(;;){var r=t+1<<1,i=r-1,u=t,f=e[u];if(o>i&&p(e[i],f)<0&&(f=e[u=i]),o>r&&p(e[r],f)<0&&(f=e[u=r]),u===t)break;e[f._=t]=f,e[n._=t=u]=n}}var r={},e=[],o=0;return r.push=function(t){return n(e[t._=o]=t,o++),o},r.pop=function(){if(!(0>=o)){var n,r=e[0];return--o>0&&(n=e[o],t(e[n._=0]=n,0)),r}},r.remove=function(r){var i,u=r._;if(e[u]===r)return u!==--o&&(i=e[o],(p(i,r)<0?n:t)(e[i._=u]=i,u)),u},r}function v(n){if(!n)return y;var t,r,e=n.scale[0],o=n.scale[1],i=n.translate[0],u=n.translate[1];return function(n,f){f||(t=r=0),n[0]=(t+=n[0])*e+i,n[1]=(r+=n[1])*o+u}}function m(n){if(!n)return y;var t,r,e=n.scale[0],o=n.scale[1],i=n.translate[0],u=n.translate[1];return function(n,f){f||(t=r=0);var c=(n[0]-i)/e|0,a=(n[1]-u)/o|0;n[0]=c-t,n[1]=a-r,t=c,r=a}}function y(){}var d={version:"1.6.18",mesh:function(n){return u(n,r.apply(this,arguments))},meshArcs:r,merge:function(n){return u(n,e.apply(this,arguments))},mergeArcs:e,feature:o,neighbors:a,presimplify:s};"function"==typeof define&&define.amd?define(d):"object"==typeof module&&module.exports?module.exports=d:this.topojson=d}();
--------------------------------------------------------------------------------
/lib/globalStyle.css:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | html, body, div, span, applet, object, iframe,
5 | h1, h2, h3, h4, h5, h6, p, blockquote, pre,
6 | a, abbr, acronym, address, big, cite, code,
7 | del, dfn, em, img, ins, kbd, q, s, samp,
8 | small, strike, strong, sub, sup, tt, var,
9 | b, u, i, center,
10 | dl, dt, dd, ol, ul, li,
11 | fieldset, form, label, legend,
12 | table, caption, tbody, tfoot, thead, tr, th, td,
13 | article, aside, canvas, details, embed,
14 | figure, figcaption, footer, header, hgroup,
15 | menu, nav, output, ruby, section, summary,
16 | time, mark, audio, video
17 | {
18 | margin: 0;
19 | padding: 0;
20 | border: 0;
21 | font-size: 100%;
22 | font: inherit;
23 | vertical-align: baseline;
24 | }
25 |
26 |
27 |
28 | html
29 | {
30 | -webkit-text-size-adjust: none; /* prevent font scaling in landscape */
31 | }
32 |
33 |
34 |
35 | body /* required */
36 | {
37 | font-family: 'Open Sans', sans-serif;
38 | font-weight:400;
39 | max-width:800px;
40 | margin: 0px auto;
41 | }
42 |
43 | a{
44 | text-decoration: underline;
45 |
46 | }
47 |
48 | /* a,
49 | a:link,
50 | a:visited
51 | {
52 | color: #4774CC;
53 | text-decoration: none;
54 | }
55 |
56 |
57 |
58 | a:hover,
59 | a:active
60 | {
61 | opacity: 0.7;
62 | } */
63 |
64 |
65 |
66 | /*.footnotes p,*/
67 | .footer /* required */
68 | {
69 | font-size: 14px;
70 | color: #808080;
71 | font-weight:100;
72 | padding-bottom:2px;
73 | }
74 |
75 |
76 |
77 | /* chart */
78 | #graphic /* required */
79 | {
80 | width: 100%;
81 | }
82 |
83 |
84 |
85 | #graphic:before, /* required */
86 | #graphic:after
87 | {
88 | content: " "; /* 1 */
89 | display: table; /* 2 */
90 | }
91 |
92 |
93 |
94 | #graphic:after /* required */
95 | {
96 | clear: both;
97 | }
98 |
99 | .svgRect{
100 | fill: white;
101 | }
102 |
103 | /* y-axis tick labels */
104 | #graphic .axis /* required */
105 | {
106 | font-size: 12px;
107 | fill: #666;
108 | }
109 |
110 |
111 | /* x-axis baseline; not to be confused with centreline. Can consider overlaying this with #centreline */
112 | #graphic .axis path /* required */
113 | {
114 | fill: none;
115 | stroke: #ccc;
116 | shape-rendering: crispEdges;
117 | }
118 |
119 |
120 | #graphic .axis line /* required */
121 | {
122 | fill: none;
123 | stroke: #ccc;
124 | shape-rendering: crispEdges;
125 | }
126 |
127 | /* y-axis line path */
128 | #graphic .axis.y path /* required */
129 | {
130 | display: none;
131 | }
132 |
133 |
134 |
135 | /* y-axis full width grid lines */
136 | #graphic .grid .tick line/* required */
137 | {
138 | stroke: #CCC;
139 | stroke-width: 1px;
140 | shape-rendering: crispEdges;
141 | }
142 |
143 |
144 |
145 | /* plotted graph line */
146 | #graphic .line /* required */
147 | {
148 | fill: none; /* must be 'none' */
149 | stroke-width: 3px;
150 | stroke-linecap:round;
151 | stroke-linejoin:round;
152 | }
153 |
154 | #graphic img /* required */
155 | {
156 | max-width: 100%;
157 | height: auto;
158 | }
159 |
160 | /* legend elements */
161 | #graphic .key /* required */
162 | {
163 | display: inline-block;
164 | margin: 0 0 1em 0;
165 | padding: 0;
166 | line-height: 15px;
167 | }
168 |
169 |
170 | /* legend elements */
171 | #graphic .key li/* required */
172 | {
173 | display: inline-block;
174 | margin: 0 18px 0 0;
175 | padding: 0;
176 | line-height: 15px;
177 | }
178 |
179 |
180 |
181 | /* legend coloured elements */
182 | #graphic .key b/* required */
183 | {
184 | display: inline-block;
185 | width: 35px;
186 | height: 15px;
187 | margin-right: 6px;
188 | float: left;
189 | background-color:none;
190 | margin-top:8px;
191 | }
192 |
193 |
194 | #graphic .legendBlocks{ /* new for Cluster chart */
195 | width: 15px !important;
196 | margin-top:0px !important;
197 | }
198 |
199 |
200 | /* y-axis units label */
201 | #graphic .unit/* required */
202 | {
203 | font-size:12px;
204 | fill:#333333;
205 | text-align: left;
206 | width:130px;
207 | height:20px;
208 | display:block;
209 | float:none;
210 | }
211 |
212 | .annotext0, .annotext1, .annotext2, .annotext3 {
213 | font-family: 'Open Sans', sans-serif;
214 | font-size: 12px;
215 | fill: #666;
216 | font-weight:500;
217 | }
218 |
219 |
220 | .annocirc0, .annocirc1, .annocirc2, .annocirc3{
221 | stroke:#E66500;
222 | stroke-width:2px;
223 | fill: #E66500;
224 | display:inline;
225 | }
226 |
227 | #centreline /* required */
228 | {
229 | stroke:#666;
230 | stroke-width:3px;
231 | }
232 |
233 |
234 |
235 | /* y- and x-axis tick text */
236 | .domain/* required. BOTH MUST BE NONE */
237 | {
238 | fill:none;
239 | stroke:none;
240 | }
241 |
242 |
243 | .circles
244 | {
245 | float:left;
246 | }
247 |
248 |
249 | /* footnotes to graph */
250 | #keypoints/* required. */
251 | {
252 | margin-bottom:10px;
253 | color:#666;
254 | font-weight:700;
255 | }
256 |
257 | #keypoints p/* required. */
258 | {
259 | margin-bottom:0.6em;
260 | }
261 |
262 |
263 | #downloadshare:hover {
264 | cursor:pointer;
265 | cursor:hand;
266 | }
267 | #embedShare:hover {
268 | cursor:pointer;
269 | cursor:hand;
270 | }
271 |
--------------------------------------------------------------------------------
/accurate-plain-beeswarm/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Beeswam plot
5 |
6 |
7 |
8 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
218 |
219 |
220 |
--------------------------------------------------------------------------------
/lib/d3-jetpack.js:
--------------------------------------------------------------------------------
1 | (function(root, factory) {
2 | if (typeof module !== 'undefined' && module.exports) {
3 | module.exports = factory(require('d3'));
4 | } else if (typeof define === 'function' && define.amd) {
5 | define(['d3'], factory);
6 | } else {
7 | root.d3 = factory(root.d3);
8 | }
9 | }(this, function(d3) {
10 |
11 | d3.selection.prototype.translate = function(xy) {
12 | return this.attr('transform', function(d,i) {
13 | return 'translate('+[typeof xy == 'function' ? xy.call(this, d,i) : xy]+')';
14 | });
15 | };
16 |
17 | d3.transition.prototype.translate = function(xy) {
18 | return this.attr('transform', function(d,i) {
19 | return 'translate('+[typeof xy == 'function' ? xy.call(this, d,i) : xy]+')';
20 | });
21 | };
22 |
23 | d3.selection.prototype.tspans = function(lines, lh) {
24 | return this.selectAll('tspan')
25 | .data(lines)
26 | .enter()
27 | .append('tspan')
28 | .text(function(d) { return d; })
29 | .attr('x', 0)
30 | .attr('dy', function(d,i) { return i ? lh || 15 : 0; });
31 | };
32 |
33 | d3.selection.prototype.append =
34 | d3.selection.enter.prototype.append = function(name) {
35 | var n = d3_parse_attributes(name), s;
36 | //console.log(name, n);
37 | name = n.attr ? n.tag : name;
38 | name = d3_selection_creator(name);
39 | s = this.select(function() {
40 | return this.appendChild(name.apply(this, arguments));
41 | });
42 | return n.attr ? s.attr(n.attr) : s;
43 | };
44 |
45 | d3.selection.prototype.insert =
46 | d3.selection.enter.prototype.insert = function(name, before) {
47 | var n = d3_parse_attributes(name), s;
48 | name = n.attr ? n.tag : name;
49 | name = d3_selection_creator(name);
50 | before = d3_selection_selector(before);
51 | s = this.select(function() {
52 | return this.insertBefore(name.apply(this, arguments), before.apply(this, arguments) || null);
53 | });
54 | return n.attr ? s.attr(n.attr) : s;
55 | };
56 |
57 | var d3_parse_attributes_regex = /([\.#])/g;
58 |
59 | function d3_parse_attributes(name) {
60 | if (typeof name === "string") {
61 | var attr = {},
62 | parts = name.split(d3_parse_attributes_regex), p;
63 | name = parts.shift();
64 | while ((p = parts.shift())) {
65 | if (p == '.') attr['class'] = attr['class'] ? attr['class'] + ' ' + parts.shift() : parts.shift();
66 | else if (p == '#') attr.id = parts.shift();
67 | }
68 | return attr.id || attr['class'] ? { tag: name, attr: attr } : name;
69 | }
70 | return name;
71 | }
72 |
73 | function d3_selection_creator(name) {
74 | return typeof name === "function" ? name : (name = d3.ns.qualify(name)).local ? function() {
75 | return this.ownerDocument.createElementNS(name.space, name.local);
76 | } : function() {
77 | return this.ownerDocument.createElementNS(this.namespaceURI, name);
78 | };
79 | }
80 |
81 | function d3_selection_selector(selector) {
82 | return typeof selector === "function" ? selector : function() {
83 | return this.querySelector(selector);
84 | };
85 | }
86 |
87 | d3.wordwrap = function(line, maxCharactersPerLine) {
88 | var w = line.split(' '),
89 | lines = [],
90 | words = [],
91 | maxChars = maxCharactersPerLine || 40,
92 | l = 0;
93 | w.forEach(function(d) {
94 | if (l+d.length > maxChars) {
95 | lines.push(words.join(' '));
96 | words.length = 0;
97 | l = 0;
98 | }
99 | l += d.length;
100 | words.push(d);
101 | });
102 | if (words.length) {
103 | lines.push(words.join(' '));
104 | }
105 | return lines;
106 | };
107 |
108 | d3.ascendingKey = function(key) {
109 | return typeof key == 'function' ? function (a, b) {
110 | return key(a) < key(b) ? -1 : key(a) > key(b) ? 1 : key(a) >= key(b) ? 0 : NaN;
111 | } : function (a, b) {
112 | return a[key] < b[key] ? -1 : a[key] > b[key] ? 1 : a[key] >= b[key] ? 0 : NaN;
113 | };
114 | };
115 |
116 | d3.descendingKey = function(key) {
117 | return typeof key == 'function' ? function (a, b) {
118 | return key(b) < key(a) ? -1 : key(b) > key(a) ? 1 : key(b) >= key(a) ? 0 : NaN;
119 | } : function (a, b) {
120 | return b[key] < a[key] ? -1 : b[key] > a[key] ? 1 : b[key] >= a[key] ? 0 : NaN;
121 | };
122 | };
123 |
124 | d3.f = function(){
125 | var functions = arguments;
126 | //convert all string arguments into field accessors
127 | var i = 0, l = functions.length;
128 | while (i < l) {
129 | if (typeof(functions[i]) === 'string' || typeof(functions[i]) === 'number'){
130 | functions[i] = (function(str){ return function(d){ return d[str] }; })(functions[i])
131 | }
132 | i++;
133 | }
134 | //return composition of functions
135 | return function(d) {
136 | var i=0, l = functions.length;
137 | while (i++ < l) d = functions[i-1].call(this, d);
138 | return d;
139 | };
140 | };
141 | // store d3.f as convenient unicode character function (alt-f on macs)
142 | if (typeof window !== 'undefined' && !window.hasOwnProperty('ƒ')) window.ƒ = d3.f;
143 |
144 | // this tweak allows setting a listener for multiple events, jquery style
145 | var d3_selection_on = d3.selection.prototype.on;
146 | d3.selection.prototype.on = function(type, listener, capture) {
147 | if (typeof type == 'string' && type.indexOf(' ') > -1) {
148 | type = type.split(' ');
149 | for (var i = 0; i');
185 | var embedUrlOpen = 1;
186 | d3.select("#embedShare").on("click", function() {
187 | if (embedUrlOpen == 1) {
188 | d3.select("#embedURL").transition().duration(500).style("height","60px")
189 | .style("display","block").style("opacity",1);
190 | embedUrlOpen = 2;
191 | } else if (embedUrlOpen == 2) {
192 | d3.select("#embedURL").transition().duration(500).style("height","0px").style("opacity",0);
193 | d3.select("#embedURL").transition().delay(501).style("display", "none");
194 |
195 | embedUrlOpen = 1;
196 | }
197 | });
198 |
199 | d3.select("#closeURL").on("click", function() {
200 | d3.select("#embedURL").transition().duration(500).style("height","0px").style("opacity",0);
201 | d3.select("#embedURL").transition().delay(501).style("display", "none");
202 | embedUrlOpen = 1;
203 | });
204 |
205 | //download image button
206 |
207 | d3.select("#downloadshare").on("click",function(){saveSvgAsPng(document.getElementById("chart"), "fallback.png")});
208 |
209 | d3.select("#downloadshare").on("click",function(){saveSvgAsPng(document.getElementById("chart"), "diagram.png")});
210 |
211 |
212 |
--------------------------------------------------------------------------------
/group-beeswarm/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Beeswam plot
5 |
6 |
7 |
8 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
299 |
300 |
301 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Beeswarm plots
2 | ### Live versions
3 |
4 | - [Plain beeswarm](https://onsvisual.github.io/beeswarm/plain-beeswarm/index.html)
5 | - [Group beeswarm](https://onsvisual.github.io/beeswarm/group-beeswarm/index.html)
6 | - [Multiple beeswarms](https://onsvisual.github.io/beeswarm/multiple-beeswarms/index.html)
7 | - [Accurate plain beeswarm](https://onsvisual.github.io/beeswarm/accurate-plain-beeswarm/)
8 | - [Multiple beeswarm alternative](https://onsvisual.github.io/beeswarm/multiple-beeswarms-alternative/index.html)
9 | - [Population profiles](https://onsvisual.github.io/beeswarm/population-profiles/index.html)
10 |
11 |
12 | Templated version of beeswarm plots
13 |
14 | |[Plain beeswarm](#plain)|[Group beeswarm](#group)|
15 | :-----:|:-----:
16 | |
17 |
18 | |[Multiple beeswarm](#multiple)|[Accurate plain beeswarm](#accurateplain)|
19 | :-----:|:-----:
20 | |
21 |
22 | The files for each chart should be in the following format:
23 |
24 | 
25 |
26 | The config file contains all the variables which you can adjust. Data.csv contains the data for your graph. The lib folder contains javascript libraries used.
27 |
28 | ## Plain beeswarm
29 |
30 | This template uses force layout to calculate position, which isn't accurate to the data values. If you are looking for that try the [accurate plain beeswarm](#accurateplain) template.
31 |
32 | ### Data file
33 | Save your data as a `.csv` file in the following format
34 |
35 | | unique | value |
36 | | ------- | ----- |
37 | | Germany | 12 |
38 | | France | 23 |
39 | | Italy | 15 |
40 |
41 | ### Config
42 |
43 | Edit the `config.json` with your favourite text editor.
44 |
45 | #### essentials
46 |
47 | These contain the main variables which the chart will need and will possibly need changing for each new chart.
48 |
49 | ```"graphic_data_url": "data.csv"```
50 |
51 | Tells the chart the filename for the data.
52 |
53 | ```"colour_palette": "#008080"```
54 |
55 | Sets the colour for all the dots
56 |
57 | ```"sourceText":["Statistics"]```
58 |
59 | Sets the text at the bottom of the chart
60 |
61 | ```"xAxisLabel":"% hrte"```
62 |
63 | Sets the label for the x-axis
64 |
65 | ```"xAxisScale":[0,100] ```
66 |
67 | Sets the scale for the x-axis. This can be set to `auto` to automatically find the highest or lowest numbers in the data or set manually with an array, e.g. `[0,100]`.
68 |
69 | ```"svgheight":200```
70 |
71 | Sets the height of the svg. This is important as the beeswarm uses force layout to calculate the position of the dots. If the dots are outside of the svg, it can't handle the calculations so will break and display nothing. This is the first thing you should adjust if you see nothing. Also beware that in mobile view that the dots will cluster closer together so will be higher and may be outside the svg.
72 |
73 | #### optional
74 |
75 | ```"mobileBreakpoint" : 610 ```
76 |
77 | Set the width for the mobile breakpoint. This only affect the number of ticks displayed.
78 |
79 | ```"x_num_ticks_sm_md" : [6,10]```
80 |
81 | Set the preference for number of ticks on x-axis. This can be overridden by D3.
82 |
83 | ## Group beeswarm
84 |
85 | ### Data file
86 | Save your data as a `.csv` file in the following format. The id field refers to the group for that value. All values for that group will be coloured in a separate colour.
87 |
88 | | id | unique | value |
89 | | ------- | ------- | ----- |
90 | | Europe1 | Germany | 12 |
91 | | Europe2 | France | 23 |
92 | | Europe2 | Italy | 15 |
93 |
94 | ### Config
95 |
96 | Edit the `config.json` with your favourite text editor.
97 |
98 | #### essentials
99 |
100 | These contain the main variables which the chart will need and will possibly need changing for each new chart.
101 |
102 | ```"graphic_data_url": "data.csv"```
103 |
104 | Tells the chart the filename for the data.
105 |
106 | ```"colour_palette": ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f"]```
107 |
108 | Sets the colour for each group of dots. You need as many colours as the groups in your data.
109 |
110 | ```"sourceText":["Statistics"]```
111 |
112 | Sets the text at the bottom of the chart
113 |
114 | ```"xAxisLabel":"% hrte"```
115 |
116 | Sets the label for the x-axis
117 |
118 | ```"xAxisScale":[0,100] ```
119 |
120 | Sets the scale for the x-axis. This can be set to `auto` to automatically find the highest or lowest numbers in the data or set manually with an array, e.g. `[0,100]`.
121 |
122 | ```"svgheight":200```
123 |
124 | Sets the height of the svg. This is important as the beeswarm uses force layout to calculate the position of the dots. If the dots are outside of the svg, it can't handle the calculations so will break and display nothing. This is the first thing you should adjust if you see nothing. Also beware that in mobile view that the dots will cluster closer together so will be higher and may be outside the svg.
125 |
126 | #### optional
127 |
128 | ```"mobileBreakpoint" : 610 ```
129 |
130 | Set the width for the mobile breakpoint. This only affect the number of ticks displayed.
131 |
132 | ```"x_num_ticks_sm_md" : [6,10]```
133 |
134 | Set the preference for number of ticks on x-axis. This can be overridden by D3.
135 |
136 | ## Multiple beeswarm
137 |
138 | ### Data file
139 | Save your data as a `.csv` file in the following format. The id field refers to the group for that value. All values of a certain group will appear together.
140 |
141 | | id | unique | value |
142 | | ------- | ------- | ----- |
143 | | Europe1 | Germany | 12 |
144 | | Europe2 | France | 23 |
145 | | Europe2 | Italy | 15 |
146 |
147 | ### Config
148 |
149 | Edit the `config.json` with your favourite text editor.
150 |
151 | #### essentials
152 |
153 | These contain the main variables which the chart will need and will possibly need changing for each new chart.
154 |
155 | ```"graphic_data_url": "data.csv"```
156 |
157 | Tells the chart the filename for the data.
158 |
159 | ```"colour_palette": ["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f"]```
160 |
161 | Sets the colour for each group of dots. You need as many colours as the groups in your data.
162 |
163 | ```"sourceText":["Statistics"]```
164 |
165 | Sets the text at the bottom of the chart
166 |
167 | ```"xAxisLabel":"% hrte"```
168 |
169 | Sets the label for the x-axis
170 |
171 | ```"xAxisScale":[0,100] ```
172 |
173 | Sets the scale for the x-axis. This can be set to `auto` to automatically find the highest or lowest numbers in the data or set manually with an array, e.g. `[0,100]`.
174 |
175 | ```"heightperstrip":55,```
176 | Sets the height of each strip of dots. This is important as the beeswarm uses force layout to calculate the position of the dots. If the dots are outside of the svg, it can't handle the calculations so will break and display nothing. This is the first thing you should adjust if you see nothing. Also beware that in mobile view that the dots will cluster closer together so will be higher and may be outside the svg.
177 |
178 | ```"dotradius":3```
179 | Sets the size of the dots.
180 |
181 | #### optional
182 |
183 | ```"mobileBreakpoint" : 610 ```
184 |
185 | Set the width for the mobile breakpoint. This only affect the number of ticks displayed.
186 |
187 | ```"x_num_ticks_sm_md" : [6,10]```
188 |
189 | Set the preference for number of ticks on x-axis. This can be overridden by D3.
190 |
191 | ## Accurate plain beeswarm
192 |
193 | Use this template if you need your dots to be accurate to the data values, for example dots above a certain value are coloured a different colour.
194 |
195 | ### Data file
196 | Save your data as a `.csv` file in the following format
197 |
198 | | unique | value |
199 | | ------- | ----- |
200 | | Germany | 12 |
201 | | France | 23 |
202 | | Italy | 15 |
203 |
204 | ### Config
205 |
206 | Edit the `config.json` with your favourite text editor.
207 |
208 | #### essentials
209 |
210 | These contain the main variables which the chart will need and will possibly need changing for each new chart.
211 |
212 | ```"graphic_data_url": "data.csv"```
213 |
214 | Tells the chart the filename for the data.
215 |
216 | ```"colour_palette": "#008080"```
217 |
218 | Sets the colour for all the dots
219 |
220 | ```"sourceText":["Statistics"]```
221 |
222 | Sets the text at the bottom of the chart
223 |
224 | ```"xAxisLabel":"% hrte"```
225 |
226 | Sets the label for the x-axis
227 |
228 | ```"xAxisScale":[0,100] ```
229 |
230 | Sets the scale for the x-axis. This can be set to `auto` to automatically find the highest or lowest numbers in the data or set manually with an array, e.g. `[0,100]`.
231 |
232 | ```"svgheight":200```
233 |
234 | Sets the height of the svg. This is important as the beeswarm uses an algorithmto calculate the position of the dots. If the dots are outside of the svg, it can't handle the calculations so will break and display nothing. This is the first thing you should adjust if you see nothing. Also beware that in mobile view that the dots will cluster closer together so will be higher and may be outside the svg.
235 |
236 | #### optional
237 |
238 | ```"mobileBreakpoint" : 610 ```
239 |
240 | Set the width for the mobile breakpoint. This only affect the number of ticks displayed.
241 |
242 | ```"x_num_ticks_sm_md" : [6,10]```
243 |
244 | Set the preference for number of ticks on x-axis. This can be overridden by D3.
245 |
--------------------------------------------------------------------------------
/lib/saveSvgAsPng.js:
--------------------------------------------------------------------------------
1 | (function() {
2 | var out$ = typeof exports != 'undefined' && exports || typeof define != 'undefined' && {} || this;
3 |
4 | var doctype = '';
5 |
6 | function isElement(obj) {
7 | return obj instanceof HTMLElement || obj instanceof SVGElement;
8 | }
9 |
10 | function requireDomNode(el) {
11 | if (!isElement(el)) {
12 | throw new Error('an HTMLElement or SVGElement is required; got ' + el);
13 | }
14 | }
15 |
16 | function isExternal(url) {
17 | return url && url.lastIndexOf('http',0) == 0 && url.lastIndexOf(window.location.host) == -1;
18 | }
19 |
20 | function inlineImages(el, callback) {
21 | requireDomNode(el);
22 |
23 | var images = el.querySelectorAll('image'),
24 | left = images.length,
25 | checkDone = function() {
26 | if (left === 0) {
27 | callback();
28 | }
29 | };
30 |
31 | checkDone();
32 | for (var i = 0; i < images.length; i++) {
33 | (function(image) {
34 | var href = image.getAttributeNS("http://www.w3.org/1999/xlink", "href");
35 | if (href) {
36 | if (isExternal(href.value)) {
37 | console.warn("Cannot render embedded images linking to external hosts: "+href.value);
38 | return;
39 | }
40 | }
41 | var canvas = document.createElement('canvas');
42 | var ctx = canvas.getContext('2d');
43 | var img = new Image();
44 | href = href || image.getAttribute('href');
45 | if (href) {
46 | img.src = href;
47 | img.onload = function() {
48 | canvas.width = img.width;
49 | canvas.height = img.height;
50 | ctx.drawImage(img, 0, 0);
51 | image.setAttributeNS("http://www.w3.org/1999/xlink", "href", canvas.toDataURL('image/png'));
52 | left--;
53 | checkDone();
54 | }
55 | img.onerror = function() {
56 | console.log("Could not load "+href);
57 | left--;
58 | checkDone();
59 | }
60 | } else {
61 | left--;
62 | checkDone();
63 | }
64 | })(images[i]);
65 | }
66 | }
67 |
68 | function styles(el, selectorRemap) {
69 | var css = "";
70 | var sheets = document.styleSheets;
71 | for (var i = 0; i < sheets.length; i++) {
72 | try {
73 | var rules = sheets[i].cssRules;
74 | } catch (e) {
75 | console.warn("Stylesheet could not be loaded: "+sheets[i].href);
76 | continue;
77 | }
78 |
79 | if (rules != null) {
80 | for (var j = 0; j < rules.length; j++) {
81 | var rule = rules[j];
82 | if (typeof(rule.style) != "undefined") {
83 | var match, selectorText;
84 |
85 | try {
86 | selectorText = rule.selectorText;
87 | } catch(err) {
88 | console.warn('The following CSS rule has an invalid selector: "' + rule + '"', err);
89 | }
90 |
91 | try {
92 | if (selectorText) {
93 | match = el.querySelector(selectorText);
94 | }
95 | } catch(err) {
96 | console.warn('Invalid CSS selector "' + selectorText + '"', err);
97 | }
98 |
99 | if (match) {
100 | var selector = selectorRemap ? selectorRemap(rule.selectorText) : rule.selectorText;
101 | css += selector + " { " + rule.style.cssText + " }\n";
102 | } else if(rule.cssText.match(/^@font-face/)) {
103 | css += rule.cssText + '\n';
104 | }
105 | }
106 | }
107 | }
108 | }
109 | return css;
110 | }
111 |
112 | function getDimension(el, clone, dim) {
113 | var v = (el.viewBox && el.viewBox.baseVal && el.viewBox.baseVal[dim]) ||
114 | (clone.getAttribute(dim) !== null && !clone.getAttribute(dim).match(/%$/) && parseInt(clone.getAttribute(dim))) ||
115 | el.getBoundingClientRect()[dim] ||
116 | parseInt(clone.style[dim]) ||
117 | parseInt(window.getComputedStyle(el).getPropertyValue(dim));
118 | return (typeof v === 'undefined' || v === null || isNaN(parseFloat(v))) ? 0 : v;
119 | }
120 |
121 | function reEncode(data) {
122 | data = encodeURIComponent(data);
123 | data = data.replace(/%([0-9A-F]{2})/g, function(match, p1) {
124 | var c = String.fromCharCode('0x'+p1);
125 | return c === '%' ? '%25' : c;
126 | });
127 | return decodeURIComponent(data);
128 | }
129 |
130 | out$.svgAsDataUri = function(el, options, cb) {
131 | requireDomNode(el);
132 |
133 | options = options || {};
134 | options.scale = options.scale || 1;
135 | options.responsive = options.responsive || false;
136 | var xmlns = "http://www.w3.org/2000/xmlns/";
137 |
138 | inlineImages(el, function() {
139 | var outer = document.createElement("div");
140 | var clone = el.cloneNode(true);
141 | var width, height;
142 | if(el.tagName == 'svg') {
143 | width = options.width || getDimension(el, clone, 'width');
144 | height = options.height || getDimension(el, clone, 'height');
145 | } else if(el.getBBox) {
146 | var box = el.getBBox();
147 | width = box.x + box.width;
148 | height = box.y + box.height;
149 | clone.setAttribute('transform', clone.getAttribute('transform').replace(/translate\(.*?\)/, ''));
150 |
151 | var svg = document.createElementNS('http://www.w3.org/2000/svg','svg')
152 | svg.appendChild(clone)
153 | clone = svg;
154 | } else {
155 | console.error('Attempted to render non-SVG element', el);
156 | return;
157 | }
158 |
159 | clone.setAttribute("version", "1.1");
160 | if (!clone.getAttribute('xmlns')) {
161 | clone.setAttributeNS(xmlns, "xmlns", "http://www.w3.org/2000/svg");
162 | }
163 | if (!clone.getAttribute('xmlns:xlink')) {
164 | clone.setAttributeNS(xmlns, "xmlns:xlink", "http://www.w3.org/1999/xlink");
165 | }
166 |
167 | if (options.responsive) {
168 | clone.removeAttribute('width');
169 | clone.removeAttribute('height');
170 | clone.setAttribute('preserveAspectRatio', 'xMinYMin meet');
171 | } else {
172 | clone.setAttribute("width", width * options.scale);
173 | clone.setAttribute("height", height * options.scale);
174 | }
175 |
176 | clone.setAttribute("viewBox", [
177 | options.left || 0,
178 | options.top || 0,
179 | width,
180 | height
181 | ].join(" "));
182 |
183 | var fos = clone.querySelectorAll('foreignObject > *');
184 | for (var i = 0; i < fos.length; i++) {
185 | if (!fos[i].getAttributeNS('xml', 'xmlns')) {
186 | fos[i].setAttributeNS(xmlns, "xmlns", "http://www.w3.org/1999/xhtml");
187 | }
188 | }
189 |
190 | outer.appendChild(clone);
191 |
192 | var css = styles(el, options.selectorRemap);
193 | var s = document.createElement('style');
194 | s.setAttribute('type', 'text/css');
195 | s.innerHTML = "";
196 | var defs = document.createElement('defs');
197 | defs.appendChild(s);
198 | clone.insertBefore(defs, clone.firstChild);
199 |
200 | var svg = doctype + outer.innerHTML;
201 | var uri = 'data:image/svg+xml;base64,' + window.btoa(reEncode(svg));
202 | if (cb) {
203 | cb(uri);
204 | }
205 | });
206 | }
207 |
208 | out$.svgAsPngUri = function(el, options, cb) {
209 | requireDomNode(el);
210 |
211 | out$.svgAsDataUri(el, options, function(uri) {
212 | var image = new Image();
213 | image.onload = function() {
214 | var canvas = document.createElement('canvas');
215 | canvas.width = image.width;
216 | canvas.height = image.height;
217 | var context = canvas.getContext('2d');
218 | if(options && options.backgroundColor){
219 | context.fillStyle = options.backgroundColor;
220 | context.fillRect(0, 0, canvas.width, canvas.height);
221 | }
222 | context.drawImage(image, 0, 0);
223 | var a = document.createElement('a'), png;
224 | try {
225 | png = canvas.toDataURL('image/png');
226 | } catch (e) {
227 | if ((typeof SecurityError !== 'undefined' && e instanceof SecurityError) || e.name == "SecurityError") {
228 | console.error("Rendered SVG images cannot be downloaded in this browser.");
229 | return;
230 | } else {
231 | throw e;
232 | }
233 | }
234 | cb(png);
235 | }
236 | image.onerror = function() {
237 | console.error(
238 | 'There was an error loading the data URI as an image on the following SVG\n',
239 | window.atob(uri.slice(26)), '\n',
240 | "Open the following link to see browser's diagnosis\n",
241 | uri);
242 | }
243 | image.src = uri;
244 | });
245 | }
246 |
247 | function download(name, uri) {
248 | var a = document.createElement('a');
249 | a.download = name;
250 | a.href = uri;
251 | document.body.appendChild(a);
252 | a.addEventListener("click", function(e) {
253 | a.parentNode.removeChild(a);
254 | });
255 | a.click();
256 | }
257 |
258 | out$.saveSvg = function(el, name, options) {
259 | requireDomNode(el);
260 |
261 | options = options || {};
262 | out$.svgAsDataUri(el, options, function(uri) {
263 | download(name, uri);
264 | });
265 | }
266 |
267 | out$.saveSvgAsPng = function(el, name, options) {
268 | requireDomNode(el);
269 |
270 | options = options || {};
271 | out$.svgAsPngUri(el, options, function(uri) {
272 | download(name, uri);
273 | });
274 | }
275 |
276 | // if define is defined create as an AMD module
277 | if (typeof define !== 'undefined') {
278 | define(function() {
279 | return out$;
280 | });
281 | }
282 | })();
283 |
--------------------------------------------------------------------------------
/population-profiles/deprivation.csv:
--------------------------------------------------------------------------------
1 | AREACD,AREANM,Average score
2 | E06000047,County Durham,26.793
3 | E06000005,Darlington,25.657
4 | E06000001,Hartlepool,35.037
5 | E06000002,Middlesbrough,40.46
6 | E06000057,Northumberland,22.079
7 | E06000003,Redcar and Cleveland,29.792
8 | E06000004,Stockton-on-Tees,25.79
9 | E08000037,Gateshead,28.217
10 | E08000021,Newcastle upon Tyne,29.79
11 | E08000022,North Tyneside,22.279
12 | E08000023,South Tyneside,31.509
13 | E08000024,Sunderland,30.586
14 | E06000008,Blackburn with Darwen,36.013
15 | E06000009,Blackpool,45.039
16 | E06000049,Cheshire East,14.475
17 | E06000050,Cheshire West and Chester,18.083
18 | E06000006,Halton,32.325
19 | E06000007,Warrington,18.942
20 | E07000026,Allerdale,22.938
21 | E07000027,Barrow-in-Furness,31.117
22 | E07000028,Carlisle,21.997
23 | E07000029,Copeland,25.012
24 | E07000030,Eden,16.328
25 | E07000031,South Lakeland,12.501
26 | E08000001,Bolton,30.691
27 | E08000002,Bury,23.682
28 | E08000003,Manchester,40.005
29 | E08000004,Oldham,33.155
30 | E08000005,Rochdale,34.415
31 | E08000006,Salford,34.21
32 | E08000007,Stockport,20.826
33 | E08000008,Tameside,31.374
34 | E08000009,Trafford,16.088
35 | E08000010,Wigan,25.713
36 | E07000117,Burnley,37.793
37 | E07000118,Chorley,16.863
38 | E07000119,Fylde,15.875
39 | E07000120,Hyndburn,34.333
40 | E07000121,Lancaster,24.165
41 | E07000122,Pendle,30.723
42 | E07000123,Preston,29.531
43 | E07000124,Ribble Valley,10.594
44 | E07000125,Rossendale,24.062
45 | E07000126,South Ribble,15.33
46 | E07000127,West Lancashire,18.645
47 | E07000128,Wyre,20.858
48 | E08000011,Knowsley,43.006
49 | E08000012,Liverpool,42.412
50 | E08000014,Sefton,27.035
51 | E08000013,St. Helens,31.518
52 | E08000015,Wirral,29.589
53 | E06000011,East Riding of Yorkshire,15.605
54 | E06000010,"Kingston upon Hull, City of",40.564
55 | E06000012,North East Lincolnshire,31.335
56 | E06000013,North Lincolnshire,22.096
57 | E06000014,York,11.727
58 | E07000163,Craven,12.76
59 | E07000164,Hambleton,11.987
60 | E07000165,Harrogate,10.897
61 | E07000166,Richmondshire,12.135
62 | E07000167,Ryedale,15.665
63 | E07000168,Scarborough,26.28
64 | E07000169,Selby,12.73
65 | E08000016,Barnsley,29.933
66 | E08000017,Doncaster,30.289
67 | E08000018,Rotherham,29.55
68 | E08000019,Sheffield,27.06
69 | E08000032,Bradford,34.666
70 | E08000033,Calderdale,26.351
71 | E08000034,Kirklees,25.151
72 | E08000035,Leeds,27.301
73 | E08000036,Wakefield,27.306
74 | E06000015,Derby,26.323
75 | E06000016,Leicester,30.877
76 | E06000018,Nottingham,34.891
77 | E06000017,Rutland,8.381
78 | E07000032,Amber Valley,17.97
79 | E07000033,Bolsover,25.047
80 | E07000034,Chesterfield,24.926
81 | E07000035,Derbyshire Dales,11.895
82 | E07000036,Erewash,18.818
83 | E07000037,High Peak,15.642
84 | E07000038,North East Derbyshire,17.399
85 | E07000039,South Derbyshire,14.494
86 | E07000129,Blaby,10.629
87 | E07000130,Charnwood,13.238
88 | E07000131,Harborough,8.015
89 | E07000132,Hinckley and Bosworth,13.461
90 | E07000133,Melton,12.532
91 | E07000134,North West Leicestershire,14.573
92 | E07000135,Oadby and Wigston,12.958
93 | E07000136,Boston,22.967
94 | E07000137,East Lindsey,29.892
95 | E07000138,Lincoln,26.889
96 | E07000139,North Kesteven,11.553
97 | E07000140,South Holland,17.896
98 | E07000141,South Kesteven,13.499
99 | E07000142,West Lindsey,20.355
100 | E07000150,Corby,25.706
101 | E07000151,Daventry,13.184
102 | E07000152,East Northamptonshire,13.897
103 | E07000153,Kettering,19.23
104 | E07000154,Northampton,23.358
105 | E07000155,South Northamptonshire,7.652
106 | E07000156,Wellingborough,21.676
107 | E07000170,Ashfield,26.308
108 | E07000171,Bassetlaw,22.588
109 | E07000172,Broxtowe,14.238
110 | E07000173,Gedling,14.894
111 | E07000174,Mansfield,28.503
112 | E07000175,Newark and Sherwood,19.227
113 | E07000176,Rushcliffe,7.18
114 | E06000019,"Herefordshire, County of",18.89
115 | E06000051,Shropshire,17.153
116 | E06000021,Stoke-on-Trent,34.504
117 | E06000020,Telford and Wrekin,24.988
118 | E07000192,Cannock Chase,20.426
119 | E07000193,East Staffordshire,19.028
120 | E07000194,Lichfield,12.566
121 | E07000195,Newcastle-under-Lyme,18.929
122 | E07000196,South Staffordshire,13.124
123 | E07000197,Stafford,13.678
124 | E07000198,Staffordshire Moorlands,15.04
125 | E07000199,Tamworth,21.061
126 | E07000218,North Warwickshire,17.907
127 | E07000219,Nuneaton and Bedworth,23.54
128 | E07000220,Rugby,14.119
129 | E07000221,Stratford-on-Avon,11.728
130 | E07000222,Warwick,12.005
131 | E08000025,Birmingham,38.067
132 | E08000026,Coventry,25.613
133 | E08000027,Dudley,24.103
134 | E08000028,Sandwell,34.884
135 | E08000029,Solihull,17.37
136 | E08000030,Walsall,31.555
137 | E08000031,Wolverhampton,32.102
138 | E07000234,Bromsgrove,11.697
139 | E07000235,Malvern Hills,16.066
140 | E07000236,Redditch,22.524
141 | E07000237,Worcester,20.414
142 | E07000238,Wychavon,15.766
143 | E07000239,Wyre Forest,22.437
144 | E06000055,Bedford,18.932
145 | E06000056,Central Bedfordshire,12.152
146 | E06000032,Luton,25.908
147 | E06000031,Peterborough,27.821
148 | E06000033,Southend-on-Sea,22.375
149 | E06000034,Thurrock,20.928
150 | E07000008,Cambridge,14.855
151 | E07000009,East Cambridgeshire,11.507
152 | E07000010,Fenland,25.426
153 | E07000011,Huntingdonshire,12.55
154 | E07000012,South Cambridgeshire,8.496
155 | E07000066,Basildon,23.243
156 | E07000067,Braintree,14.723
157 | E07000068,Brentwood,10.007
158 | E07000069,Castle Point,16.842
159 | E07000070,Chelmsford,12.221
160 | E07000071,Colchester,16.778
161 | E07000072,Epping Forest,15.068
162 | E07000073,Harlow,21.413
163 | E07000074,Maldon,14.169
164 | E07000075,Rochford,10.449
165 | E07000076,Tendring,30.484
166 | E07000077,Uttlesford,9.258
167 | E07000095,Broxbourne,17.989
168 | E07000096,Dacorum,13.004
169 | E07000242,East Hertfordshire,8.188
170 | E07000098,Hertsmere,13.938
171 | E07000099,North Hertfordshire,11.627
172 | E07000240,St Albans,8.339
173 | E07000243,Stevenage,19.695
174 | E07000102,Three Rivers,9.871
175 | E07000103,Watford,15.41
176 | E07000241,Welwyn Hatfield,14.215
177 | E07000143,Breckland,19.614
178 | E07000144,Broadland,11.817
179 | E07000145,Great Yarmouth,33.097
180 | E07000146,King's Lynn and West Norfolk,23.72
181 | E07000147,North Norfolk,21.058
182 | E07000148,Norwich,27.599
183 | E07000149,South Norfolk,13.318
184 | E07000200,Babergh,14.267
185 | E07000244,East Suffolk,19.56
186 | E07000202,Ipswich,25.89
187 | E07000203,Mid Suffolk,13.225
188 | E07000245,West Suffolk,16.245
189 | E09000007,Camden,20.131
190 | E09000001,City of London,14.72
191 | E09000012,Hackney,32.526
192 | E09000013,Hammersmith and Fulham,22.27
193 | E09000014,Haringey,27.956
194 | E09000019,Islington,27.535
195 | E09000020,Kensington and Chelsea,21.526
196 | E09000022,Lambeth,25.422
197 | E09000023,Lewisham,26.661
198 | E09000025,Newham,29.577
199 | E09000028,Southwark,25.811
200 | E09000030,Tower Hamlets,27.913
201 | E09000032,Wandsworth,16.611
202 | E09000033,Westminster,20.339
203 | E09000002,Barking and Dagenham,32.768
204 | E09000003,Barnet,16.148
205 | E09000004,Bexley,16.273
206 | E09000005,Brent,25.558
207 | E09000006,Bromley,14.163
208 | E09000008,Croydon,22.477
209 | E09000009,Ealing,22.71
210 | E09000010,Enfield,25.781
211 | E09000011,Greenwich,24.464
212 | E09000015,Harrow,15.031
213 | E09000016,Havering,16.789
214 | E09000017,Hillingdon,18.223
215 | E09000018,Hounslow,21.487
216 | E09000021,Kingston upon Thames,11.381
217 | E09000024,Merton,14.649
218 | E09000026,Redbridge,17.203
219 | E09000027,Richmond upon Thames,9.425
220 | E09000029,Sutton,13.987
221 | E09000031,Waltham Forest,25.209
222 | E06000036,Bracknell Forest,10.241
223 | E06000043,Brighton and Hove,20.761
224 | E06000046,Isle of Wight,23.294
225 | E06000035,Medway,23.936
226 | E06000042,Milton Keynes,17.98
227 | E06000044,Portsmouth,26.899
228 | E06000038,Reading,19.619
229 | E06000039,Slough,22.965
230 | E06000045,Southampton,26.876
231 | E06000037,West Berkshire,9.952
232 | E06000040,Windsor and Maidenhead,8.376
233 | E06000041,Wokingham,5.846
234 | E06000060,Buckinghamshire,#N/A
235 | E07000061,Eastbourne,22.11
236 | E07000062,Hastings,34.281
237 | E07000063,Lewes,15.758
238 | E07000064,Rother,19.768
239 | E07000065,Wealden,12.311
240 | E07000084,Basingstoke and Deane,12.823
241 | E07000085,East Hampshire,10.284
242 | E07000086,Eastleigh,10.192
243 | E07000087,Fareham,9.019
244 | E07000088,Gosport,20.541
245 | E07000089,Hart,5.544
246 | E07000090,Havant,21.806
247 | E07000091,New Forest,13.015
248 | E07000092,Rushmoor,15.903
249 | E07000093,Test Valley,11.931
250 | E07000094,Winchester,9.615
251 | E07000105,Ashford,18.546
252 | E07000106,Canterbury,16.798
253 | E07000107,Dartford,18.812
254 | E07000108,Dover,22.161
255 | E07000112,Folkestone and Hythe,24.149
256 | E07000109,Gravesham,21.414
257 | E07000110,Maidstone,16.503
258 | E07000111,Sevenoaks,12.437
259 | E07000113,Swale,27.076
260 | E07000114,Thanet,31.314
261 | E07000115,Tonbridge and Malling,13.333
262 | E07000116,Tunbridge Wells,11.31
263 | E07000177,Cherwell,14.41
264 | E07000178,Oxford,16.707
265 | E07000179,South Oxfordshire,8.459
266 | E07000180,Vale of White Horse,8.358
267 | E07000181,West Oxfordshire,8.684
268 | E07000207,Elmbridge,7.944
269 | E07000208,Epsom and Ewell,8.833
270 | E07000209,Guildford,9.395
271 | E07000210,Mole Valley,9.511
272 | E07000211,Reigate and Banstead,11.276
273 | E07000212,Runnymede,12.012
274 | E07000213,Spelthorne,14.943
275 | E07000214,Surrey Heath,8.066
276 | E07000215,Tandridge,11.896
277 | E07000216,Waverley,7.494
278 | E07000217,Woking,10.804
279 | E07000223,Adur,17.594
280 | E07000224,Arun,18.638
281 | E07000225,Chichester,14.085
282 | E07000226,Crawley,18.94
283 | E07000227,Horsham,9.89
284 | E07000228,Mid Sussex,7.747
285 | E07000229,Worthing,17.012
286 | E06000022,Bath and North East Somerset,11.745
287 | E06000058,"Bournemouth, Christchurch and Poole",18.173
288 | E06000023,"Bristol, City of",26.363
289 | E06000052,Cornwall,23.072
290 | E06000059,Dorset,15.735
291 | E06000053,Isles of Scilly,12.005
292 | E06000024,North Somerset,15.825
293 | E06000026,Plymouth,26.619
294 | E06000025,South Gloucestershire,11.66
295 | E06000030,Swindon,18.622
296 | E06000027,Torbay,28.104
297 | E06000054,Wiltshire,13.447
298 | E07000040,East Devon,12.764
299 | E07000041,Exeter,16.215
300 | E07000042,Mid Devon,16.928
301 | E07000043,North Devon,20.559
302 | E07000044,South Hams,13.724
303 | E07000045,Teignbridge,15.893
304 | E07000046,Torridge,23.269
305 | E07000047,West Devon,18.052
306 | E07000078,Cheltenham,14.26
307 | E07000079,Cotswold,11.061
308 | E07000080,Forest of Dean,18.013
309 | E07000081,Gloucester,21.807
310 | E07000082,Stroud,10.797
311 | E07000083,Tewkesbury,12.142
312 | E07000187,Mendip,16.6
313 | E07000188,Sedgemoor,21.306
314 | E07000246,Somerset West and Taunton,19.142
315 | E07000189,South Somerset,17.347
316 | A,Average,19.74486901
--------------------------------------------------------------------------------
/population-profiles/age.csv:
--------------------------------------------------------------------------------
1 | AREACD,AREANM,Median age,Population density
2 | E06000047,County Durham,43.4,238
3 | E06000005,Darlington,43.2,541
4 | E06000001,Hartlepool,41.7,999
5 | E06000002,Middlesbrough,36.3,2616
6 | E06000057,Northumberland,48.4,64
7 | E06000003,Redcar and Cleveland,45.2,560
8 | E06000004,Stockton-on-Tees,40.7,963
9 | E08000037,Gateshead,41.5,1419
10 | E08000021,Newcastle upon Tyne,32.3,2669
11 | E08000022,North Tyneside,43.3,2526
12 | E08000023,South Tyneside,43.4,2343
13 | E08000024,Sunderland,42.2,2021
14 | E06000008,Blackburn with Darwen,36.5,1092
15 | E06000009,Blackpool,43.4,3999
16 | E06000049,Cheshire East,46.4,329
17 | E06000050,Cheshire West and Chester,44.5,373
18 | E06000006,Halton,40.9,1636
19 | E06000007,Warrington,42.3,1163
20 | E07000026,Allerdale,48.3,79
21 | E07000027,Barrow-in-Furness,45,861
22 | E07000028,Carlisle,45.1,105
23 | E07000029,Copeland,47.1,93
24 | E07000030,Eden,50.8,25
25 | E07000031,South Lakeland,51.3,68
26 | E08000001,Bolton,38.9,2057
27 | E08000002,Bury,40.3,1920
28 | E08000003,Manchester,30.1,4781
29 | E08000004,Oldham,37.1,1666
30 | E08000005,Rochdale,38.1,1407
31 | E08000006,Salford,34.8,2663
32 | E08000007,Stockport,42.4,2328
33 | E08000008,Tameside,40.1,2196
34 | E08000009,Trafford,40.7,2238
35 | E08000010,Wigan,42.1,1747
36 | E07000117,Burnley,40,803
37 | E07000118,Chorley,43.5,583
38 | E07000119,Fylde,50.5,488
39 | E07000120,Hyndburn,39.8,1110
40 | E07000121,Lancaster,39.5,258
41 | E07000122,Pendle,39.7,544
42 | E07000123,Preston,35.3,1006
43 | E07000124,Ribble Valley,48.1,104
44 | E07000125,Rossendale,42.5,518
45 | E07000126,South Ribble,44.6,979
46 | E07000127,West Lancashire,44.6,330
47 | E07000128,Wyre,49.9,397
48 | E08000011,Knowsley,39.5,1744
49 | E08000012,Liverpool,34.8,4453
50 | E08000014,Sefton,46.5,1765
51 | E08000013,St. Helens,43,1324
52 | E08000015,Wirral,44.4,2013
53 | E06000011,East Riding of Yorkshire,49.2,142
54 | E06000010,"Kingston upon Hull, City of",35.8,3629
55 | E06000012,North East Lincolnshire,42.6,828
56 | E06000013,North Lincolnshire,44.3,204
57 | E06000014,York,37.7,775
58 | E07000163,Craven,50.6,49
59 | E07000164,Hambleton,49.9,70
60 | E07000165,Harrogate,47.5,123
61 | E07000166,Richmondshire,44,41
62 | E07000167,Ryedale,50.4,37
63 | E07000168,Scarborough,50.1,133
64 | E07000169,Selby,44.5,151
65 | E08000016,Barnsley,42.4,750
66 | E08000017,Doncaster,41.2,549
67 | E08000018,Rotherham,41.9,926
68 | E08000019,Sheffield,35.4,1590
69 | E08000032,Bradford,36.5,1473
70 | E08000033,Calderdale,42.2,581
71 | E08000034,Kirklees,39.7,1076
72 | E08000035,Leeds,35.3,1438
73 | E08000036,Wakefield,41.6,1029
74 | E06000015,Derby,37,3297
75 | E06000016,Leicester,31.6,4830
76 | E06000018,Nottingham,29.7,4462
77 | E06000017,Rutland,47.6,105
78 | E07000032,Amber Valley,46.1,483
79 | E07000033,Bolsover,44,502
80 | E07000034,Chesterfield,44.6,1589
81 | E07000035,Derbyshire Dales,51.1,91
82 | E07000036,Erewash,43.9,1052
83 | E07000037,High Peak,46.1,172
84 | E07000038,North East Derbyshire,47.9,368
85 | E07000039,South Derbyshire,42,317
86 | E07000129,Blaby,42.9,778
87 | E07000130,Charnwood,38.4,666
88 | E07000131,Harborough,46.2,159
89 | E07000132,Hinckley and Bosworth,45.1,380
90 | E07000133,Melton,47.6,106
91 | E07000134,North West Leicestershire,43.9,371
92 | E07000135,Oadby and Wigston,42.6,2423
93 | E07000136,Boston,41.9,192
94 | E07000137,East Lindsey,52.4,80
95 | E07000138,Lincoln,33.4,2782
96 | E07000139,North Kesteven,46.3,127
97 | E07000140,South Holland,46.4,127
98 | E07000141,South Kesteven,46.5,151
99 | E07000142,West Lindsey,48.2,83
100 | E07000150,Corby,37.5,900
101 | E07000151,Daventry,45,130
102 | E07000152,East Northamptonshire,44.8,185
103 | E07000153,Kettering,41.2,436
104 | E07000154,Northampton,37.6,2781
105 | E07000155,South Northamptonshire,45.1,149
106 | E07000156,Wellingborough,42,489
107 | E07000170,Ashfield,41.9,1168
108 | E07000171,Bassetlaw,45.7,184
109 | E07000172,Broxtowe,43.1,1424
110 | E07000173,Gedling,44.1,983
111 | E07000174,Mansfield,42.1,1425
112 | E07000175,Newark and Sherwood,45.4,188
113 | E07000176,Rushcliffe,43.9,291
114 | E06000019,"Herefordshire, County of",47.4,88
115 | E06000051,Shropshire,47.8,101
116 | E06000021,Stoke-on-Trent,37.8,2743
117 | E06000020,Telford and Wrekin,39.5,620
118 | E07000192,Cannock Chase,42.6,1277
119 | E07000193,East Staffordshire,41.9,309
120 | E07000194,Lichfield,46.6,316
121 | E07000195,Newcastle-under-Lyme,41.9,614
122 | E07000196,South Staffordshire,48,276
123 | E07000197,Stafford,45.4,229
124 | E07000198,Staffordshire Moorlands,48.6,171
125 | E07000199,Tamworth,41.3,2486
126 | E07000218,North Warwickshire,45.6,230
127 | E07000219,Nuneaton and Bedworth,41.3,1645
128 | E07000220,Rugby,41.2,310
129 | E07000221,Stratford-on-Avon,48.2,133
130 | E07000222,Warwick,39.7,508
131 | E08000025,Birmingham,32.6,4264
132 | E08000026,Coventry,32.1,3766
133 | E08000027,Dudley,42,3283
134 | E08000028,Sandwell,36.7,3839
135 | E08000029,Solihull,43.1,1214
136 | E08000030,Walsall,38.2,2746
137 | E08000031,Wolverhampton,37.8,3793
138 | E07000234,Bromsgrove,45.5,460
139 | E07000235,Malvern Hills,50.8,136
140 | E07000236,Redditch,40.2,1572
141 | E07000237,Worcester,38.7,3042
142 | E07000238,Wychavon,48.2,195
143 | E07000239,Wyre Forest,46.8,518
144 | E06000055,Bedford,40.5,364
145 | E06000056,Central Bedfordshire,41.1,403
146 | E06000032,Luton,34.6,4914
147 | E06000031,Peterborough,36.7,589
148 | E06000033,Southend-on-Sea,41.8,4394
149 | E06000034,Thurrock,36.9,1064
150 | E07000008,Cambridge,30.3,3066
151 | E07000009,East Cambridgeshire,43.4,138
152 | E07000010,Fenland,45,186
153 | E07000011,Huntingdonshire,43.5,196
154 | E07000012,South Cambridgeshire,43.1,176
155 | E07000066,Basildon,39.3,1702
156 | E07000067,Braintree,43.6,249
157 | E07000068,Brentwood,43.3,503
158 | E07000069,Castle Point,46.9,2023
159 | E07000070,Chelmsford,41.6,527
160 | E07000071,Colchester,37.8,593
161 | E07000072,Epping Forest,42.7,388
162 | E07000073,Harlow,37.5,2851
163 | E07000074,Maldon,49.2,181
164 | E07000075,Rochford,46.2,522
165 | E07000076,Tendring,50.8,436
166 | E07000077,Uttlesford,43.9,142
167 | E07000095,Broxbourne,40.2,1891
168 | E07000096,Dacorum,40.7,728
169 | E07000242,East Hertfordshire,42.7,315
170 | E07000098,Hertsmere,40.9,1037
171 | E07000099,North Hertfordshire,42.2,356
172 | E07000240,St Albans,41.1,921
173 | E07000243,Stevenage,38.3,3383
174 | E07000102,Three Rivers,41.8,1051
175 | E07000103,Watford,37,4507
176 | E07000241,Welwyn Hatfield,35.7,950
177 | E07000143,Breckland,46.8,107
178 | E07000144,Broadland,48.1,237
179 | E07000145,Great Yarmouth,45.9,570
180 | E07000146,King's Lynn and West Norfolk,47.9,105
181 | E07000147,North Norfolk,54.3,109
182 | E07000148,Norwich,33.5,3602
183 | E07000149,South Norfolk,46.2,155
184 | E07000200,Babergh,48.8,155
185 | E07000244,East Suffolk,49.3,198
186 | E07000202,Ipswich,38.2,3465
187 | E07000203,Mid Suffolk,47.8,119
188 | E07000245,West Suffolk,41.3,173
189 | E09000007,Camden,34,12393
190 | E09000001,City of London,38.5,3361
191 | E09000012,Hackney,33.3,14758
192 | E09000013,Hammersmith and Fulham,35,11287
193 | E09000014,Haringey,35.8,9076
194 | E09000019,Islington,31.9,16321
195 | E09000020,Kensington and Chelsea,39.9,12876
196 | E09000022,Lambeth,33.3,12156
197 | E09000023,Lewisham,35.2,8702
198 | E09000025,Newham,32.3,9756
199 | E09000028,Southwark,33.6,11045
200 | E09000030,Tower Hamlets,31.6,16427
201 | E09000032,Wandsworth,34,9624
202 | E09000033,Westminster,36.3,12167
203 | E09000002,Barking and Dagenham,32.5,5898
204 | E09000003,Barnet,37.4,4563
205 | E09000004,Bexley,38.9,4099
206 | E09000005,Brent,35.7,7628
207 | E09000006,Bromley,40.9,2214
208 | E09000008,Croydon,37.7,4471
209 | E09000009,Ealing,37.1,6154
210 | E09000010,Enfield,36.4,4130
211 | E09000011,Greenwich,35,6086
212 | E09000015,Harrow,38.3,4977
213 | E09000016,Havering,39.2,2310
214 | E09000017,Hillingdon,36.3,2652
215 | E09000018,Hounslow,36.4,4851
216 | E09000021,Kingston upon Thames,37.4,4764
217 | E09000024,Merton,37.4,5490
218 | E09000026,Redbridge,35.8,5411
219 | E09000027,Richmond upon Thames,41.1,3450
220 | E09000029,Sutton,39.5,4706
221 | E09000031,Waltham Forest,35.2,7137
222 | E06000036,Bracknell Forest,39.3,1120
223 | E06000043,Brighton and Hove,35.3,3512
224 | E06000046,Isle of Wight,50.6,373
225 | E06000035,Medway,38.2,1438
226 | E06000042,Milton Keynes,38,873
227 | E06000044,Portsmouth,34.1,5321
228 | E06000038,Reading,34.8,4005
229 | E06000039,Slough,35,4595
230 | E06000045,Southampton,32.3,5062
231 | E06000037,West Berkshire,43.5,225
232 | E06000040,Windsor and Maidenhead,42.3,771
233 | E06000041,Wokingham,41.6,956
234 | E06000060,Buckinghamshire,42.2,348
235 | E07000061,Eastbourne,45.8,2349
236 | E07000062,Hastings,43.4,3110
237 | E07000063,Lewes,48,354
238 | E07000064,Rother,53.1,189
239 | E07000065,Wealden,49,194
240 | E07000084,Basingstoke and Deane,41.3,279
241 | E07000085,East Hampshire,47.1,238
242 | E07000086,Eastleigh,42.1,1677
243 | E07000087,Fareham,46.7,1565
244 | E07000088,Gosport,42.7,3344
245 | E07000089,Hart,43.7,451
246 | E07000090,Havant,45.9,2264
247 | E07000091,New Forest,50.8,239
248 | E07000092,Rushmoor,38.8,2423
249 | E07000093,Test Valley,45,201
250 | E07000094,Winchester,43.7,189
251 | E07000105,Ashford,42,224
252 | E07000106,Canterbury,38.2,536
253 | E07000107,Dartford,37.3,1548
254 | E07000108,Dover,46.6,375
255 | E07000112,Folkestone and Hythe,47.3,317
256 | E07000109,Gravesham,39.7,1080
257 | E07000110,Maidstone,41.4,437
258 | E07000111,Sevenoaks,44.3,327
259 | E07000113,Swale,41.1,402
260 | E07000114,Thanet,45.1,1370
261 | E07000115,Tonbridge and Malling,42.2,550
262 | E07000116,Tunbridge Wells,43.2,358
263 | E07000177,Cherwell,41.2,256
264 | E07000178,Oxford,28.9,3343
265 | E07000179,South Oxfordshire,44.4,209
266 | E07000180,Vale of White Horse,42.5,235
267 | E07000181,West Oxfordshire,44.7,155
268 | E07000207,Elmbridge,43,1439
269 | E07000208,Epsom and Ewell,41.5,2366
270 | E07000209,Guildford,37.4,550
271 | E07000210,Mole Valley,47.5,338
272 | E07000211,Reigate and Banstead,41.5,1152
273 | E07000212,Runnymede,37.7,1146
274 | E07000213,Spelthorne,41.8,2224
275 | E07000214,Surrey Heath,43.9,939
276 | E07000215,Tandridge,44.3,355
277 | E07000216,Waverley,45,366
278 | E07000217,Woking,41.1,1585
279 | E07000223,Adur,45.7,1529
280 | E07000224,Arun,49.7,727
281 | E07000225,Chichester,49.3,154
282 | E07000226,Crawley,37.5,2500
283 | E07000227,Horsham,46.3,271
284 | E07000228,Mid Sussex,43.8,452
285 | E07000229,Worthing,45.2,3400
286 | E06000022,Bath and North East Somerset,38.2,559
287 | E06000058,"Bournemouth, Christchurch and Poole",42.7,2439
288 | E06000023,"Bristol, City of",32.4,4224
289 | E06000052,Cornwall,47.6,161
290 | E06000059,Dorset,51,152
291 | E06000053,Isles of Scilly,48.2,136
292 | E06000024,North Somerset,46,575
293 | E06000026,Plymouth,38.6,3282
294 | E06000025,South Gloucestershire,40.6,574
295 | E06000030,Swindon,40.1,966
296 | E06000027,Torbay,49.1,2167
297 | E06000054,Wiltshire,44.9,154
298 | E07000040,East Devon,51.2,180
299 | E07000041,Exeter,33.6,2794
300 | E07000042,Mid Devon,46.7,90
301 | E07000043,North Devon,48,89
302 | E07000044,South Hams,51.5,98
303 | E07000045,Teignbridge,49.4,199
304 | E07000046,Torridge,50.7,69
305 | E07000047,West Devon,51.3,48
306 | E07000078,Cheltenham,40.7,2496
307 | E07000079,Cotswold,49.1,77
308 | E07000080,Forest of Dean,48.2,165
309 | E07000081,Gloucester,39.2,3184
310 | E07000082,Stroud,46.7,260
311 | E07000083,Tewkesbury,44.5,229
312 | E07000187,Mendip,47,156
313 | E07000188,Sedgemoor,46.9,218
314 | E07000246,Somerset West and Taunton,47.9,131
315 | E07000189,South Somerset,47.7,176
316 | A,Average,42.21242038,1811.200637
--------------------------------------------------------------------------------
/population-profiles/employment.csv:
--------------------------------------------------------------------------------
1 | AREACD,AREANM,Unemployed,Employees,Self-employed
2 | E06000047,County Durham,5.1,86.2,13.8
3 | E06000005,Darlington,6.1,90,9.7
4 | E06000001,Hartlepool,7.2,90.2,9.8
5 | E06000002,Middlesbrough,6.9,88.9,10.7
6 | E06000057,Northumberland,4.4,85.2,14.3
7 | E06000003,Redcar and Cleveland,5.6,88.4,11.6
8 | E06000004,Stockton-on-Tees,5.5,87.4,12.4
9 | E08000037,Gateshead,5.1,88.8,10.9
10 | E08000021,Newcastle upon Tyne,6,89.8,9.8
11 | E08000022,North Tyneside,4.3,89.6,9.4
12 | E08000023,South Tyneside,6.9,91.2,8.5
13 | E08000024,Sunderland,5.9,89.2,10.7
14 | E06000008,Blackburn with Darwen,5.2,88.1,11.7
15 | E06000009,Blackpool,4.7,86.9,12.6
16 | E06000049,Cheshire East,2.7,87.6,12.4
17 | E06000050,Cheshire West and Chester,3.2,86.7,13
18 | E06000006,Halton,3.9,91.2,7.9
19 | E06000007,Warrington,2.9,85.6,14
20 | E07000026,Allerdale,3,81.3,18.7
21 | E07000027,Barrow-in-Furness,4.2,96.3,3.7
22 | E07000028,Carlisle,2.6,83.5,16
23 | E07000029,Copeland,3.3,86.9,13.1
24 | E07000030,Eden,1.7,80.5,19.5
25 | E07000031,South Lakeland,1.9,72.9,27.1
26 | E08000001,Bolton,5.5,82.8,16.6
27 | E08000002,Bury,3.7,85.5,14.4
28 | E08000003,Manchester,6.1,88.6,11.1
29 | E08000004,Oldham,4.4,88.6,11.4
30 | E08000005,Rochdale,4.4,84.5,15.3
31 | E08000006,Salford,4.5,90.6,9.4
32 | E08000007,Stockport,3.2,85.9,12.7
33 | E08000008,Tameside,4.3,86.5,13.5
34 | E08000009,Trafford,3.3,81.7,17.8
35 | E08000010,Wigan,4,85.1,14.7
36 | E07000117,Burnley,5,85,13.8
37 | E07000118,Chorley,2.8,87.5,12.5
38 | E07000119,Fylde,2.6,84.3,15.7
39 | E07000120,Hyndburn,4.3,84.7,15.3
40 | E07000121,Lancaster,3.8,84.5,15.5
41 | E07000122,Pendle,4,79.9,20.1
42 | E07000123,Preston,3.5,87.3,12.7
43 | E07000124,Ribble Valley,1.9,82.3,17.7
44 | E07000125,Rossendale,3.3,84,16
45 | E07000126,South Ribble,2.5,88.6,11.4
46 | E07000127,West Lancashire,3.4,79.9,20.1
47 | E07000128,Wyre,3.2,87.4,12.6
48 | E08000011,Knowsley,3.4,89.5,10.5
49 | E08000012,Liverpool,3.8,90.2,9.7
50 | E08000014,Sefton,3,88.3,11.7
51 | E08000013,St. Helens,3.7,90.4,9
52 | E08000015,Wirral,3.4,88.1,11.7
53 | E06000011,East Riding of Yorkshire,2.8,83.7,15.9
54 | E06000010,"Kingston upon Hull, City of",4.5,90.4,9
55 | E06000012,North East Lincolnshire,4.4,88.9,10.6
56 | E06000013,North Lincolnshire,4.1,85.9,14.1
57 | E06000014,York,2.3,85.5,14.4
58 | E07000163,Craven,2,77.5,20.7
59 | E07000164,Hambleton,2.3,88.7,11.3
60 | E07000165,Harrogate,2.1,88.3,10.7
61 | E07000166,Richmondshire,2.4,81.7,18.3
62 | E07000167,Ryedale,2.1,91.7,8.3
63 | E07000168,Scarborough,2.8,87.8,12.2
64 | E07000169,Selby,2.5,84.2,15.8
65 | E08000016,Barnsley,4.1,89.1,10.8
66 | E08000017,Doncaster,4.3,88,11.5
67 | E08000018,Rotherham,4.2,85.9,13.8
68 | E08000019,Sheffield,3.6,89.5,10.5
69 | E08000032,Bradford,5.4,85.7,14.1
70 | E08000033,Calderdale,3.6,86.6,13.2
71 | E08000034,Kirklees,3.2,85.7,13.9
72 | E08000035,Leeds,3.5,86.7,13.3
73 | E08000036,Wakefield,4,88.8,11.1
74 | E06000015,Derby,4.6,88.7,11.2
75 | E06000016,Leicester,4.9,90.6,9.1
76 | E06000018,Nottingham,6.3,87.8,12.2
77 | E06000017,Rutland,2.8,81.7,18.3
78 | E07000032,Amber Valley,3.5,91.2,8.8
79 | E07000033,Bolsover,3.9,95.1,#N/A
80 | E07000034,Chesterfield,4.9,87.5,12.5
81 | E07000035,Derbyshire Dales,2.6,65.6,29.6
82 | E07000036,Erewash,3.3,85.4,14.6
83 | E07000037,High Peak,3.8,77,23
84 | E07000038,North East Derbyshire,3.6,86.8,11.4
85 | E07000039,South Derbyshire,2.4,90.4,8.7
86 | E07000129,Blaby,2.9,90.8,9.2
87 | E07000130,Charnwood,2.8,83.5,16.5
88 | E07000131,Harborough,2.6,83.6,16.4
89 | E07000132,Hinckley and Bosworth,3.4,90.1,9
90 | E07000133,Melton,3.1,88.1,10
91 | E07000134,North West Leicestershire,3.6,90,10
92 | E07000135,Oadby and Wigston,2.8,94.6,5.4
93 | E07000136,Boston,3.5,88.7,11.3
94 | E07000137,East Lindsey,4.8,78.6,21.4
95 | E07000138,Lincoln,6.1,87.4,12.6
96 | E07000139,North Kesteven,3.1,83.4,16.6
97 | E07000140,South Holland,3.7,86.7,13.3
98 | E07000141,South Kesteven,3.6,79.6,20.4
99 | E07000142,West Lindsey,4.1,88.9,9.9
100 | E07000150,Corby,3.9,89.8,10.2
101 | E07000151,Daventry,3.3,77.9,22.1
102 | E07000152,East Northamptonshire,2.8,78,22
103 | E07000153,Kettering,3.1,86.6,13.4
104 | E07000154,Northampton,4.5,87.3,12
105 | E07000155,South Northamptonshire,2.2,82.3,16.6
106 | E07000156,Wellingborough,3.1,88.6,11.4
107 | E07000170,Ashfield,4.1,88.1,11.9
108 | E07000171,Bassetlaw,3.9,81.9,18.1
109 | E07000172,Broxtowe,3.3,87.6,12.4
110 | E07000173,Gedling,3.5,85.9,13.6
111 | E07000174,Mansfield,4.2,92.6,6.8
112 | E07000175,Newark and Sherwood,4.1,82.1,17.9
113 | E07000176,Rushcliffe,2.6,77.9,22.1
114 | E06000019,"Herefordshire, County of",2.8,78.3,21
115 | E06000051,Shropshire,2.9,81.4,18.4
116 | E06000021,Stoke-on-Trent,4.7,89.8,10.2
117 | E06000020,Telford and Wrekin,4.7,89,10.9
118 | E07000192,Cannock Chase,3.3,87.3,12.7
119 | E07000193,East Staffordshire,3.2,90,10
120 | E07000194,Lichfield,3,87.9,12.1
121 | E07000195,Newcastle-under-Lyme,4.1,91.8,8.2
122 | E07000196,South Staffordshire,2.9,87.8,10.9
123 | E07000197,Stafford,2.7,87.7,12.3
124 | E07000198,Staffordshire Moorlands,2.5,71.8,27.1
125 | E07000199,Tamworth,3.9,93.1,6.9
126 | E07000218,North Warwickshire,3.4,87.1,12.9
127 | E07000219,Nuneaton and Bedworth,3.9,84.3,15.7
128 | E07000220,Rugby,3.2,86.5,13.5
129 | E07000221,Stratford-on-Avon,2.2,82.2,17.4
130 | E07000222,Warwick,2.4,84.5,15.5
131 | E08000025,Birmingham,8,84.3,15.7
132 | E08000026,Coventry,5.2,89.3,10.7
133 | E08000027,Dudley,5,88.9,10.9
134 | E08000028,Sandwell,5.2,90.4,9.6
135 | E08000029,Solihull,3.8,88,11.4
136 | E08000030,Walsall,5.5,87,12.8
137 | E08000031,Wolverhampton,5.8,88.4,11.3
138 | E07000234,Bromsgrove,3.2,93.3,6.7
139 | E07000235,Malvern Hills,3,74.9,25.1
140 | E07000236,Redditch,3.7,90.8,6.8
141 | E07000237,Worcester,3.2,83.6,16.4
142 | E07000238,Wychavon,2.5,82.1,17.9
143 | E07000239,Wyre Forest,3.9,86.4,13.6
144 | E06000055,Bedford,3.6,87.3,12.3
145 | E06000056,Central Bedfordshire,2.6,88,11.4
146 | E06000032,Luton,3.9,86.4,13.4
147 | E06000031,Peterborough,4.9,88.9,11.1
148 | E06000033,Southend-on-Sea,4.1,82.1,17.7
149 | E06000034,Thurrock,4.8,86.5,13.5
150 | E07000008,Cambridge,3.1,91,9
151 | E07000009,East Cambridgeshire,2.5,90,9.4
152 | E07000010,Fenland,3.7,88.8,11.2
153 | E07000011,Huntingdonshire,3.2,85.7,14.3
154 | E07000012,South Cambridgeshire,2.3,86.7,13.3
155 | E07000066,Basildon,4.4,86.9,13.1
156 | E07000067,Braintree,3.1,86.5,13.5
157 | E07000068,Brentwood,2.7,73.7,26.3
158 | E07000069,Castle Point,3.1,84,16
159 | E07000070,Chelmsford,2.7,90.2,9.8
160 | E07000071,Colchester,4.2,91.4,7.5
161 | E07000072,Epping Forest,3.1,75.8,23.4
162 | E07000073,Harlow,5,89.6,10.4
163 | E07000074,Maldon,3.4,75.2,24.8
164 | E07000075,Rochford,2.6,83.6,16.4
165 | E07000076,Tendring,5.3,85.8,14.2
166 | E07000077,Uttlesford,2.4,71.6,26.9
167 | E07000095,Broxbourne,3.5,84.2,15.8
168 | E07000096,Dacorum,3.2,81.4,18.6
169 | E07000242,East Hertfordshire,2.5,86.4,13.6
170 | E07000098,Hertsmere,3,79.7,20.3
171 | E07000099,North Hertfordshire,3.2,87.7,12.3
172 | E07000240,St Albans,2.8,87,12
173 | E07000243,Stevenage,3.5,88.8,11.2
174 | E07000102,Three Rivers,3.1,71.5,28.5
175 | E07000103,Watford,3.7,89.9,10.1
176 | E07000241,Welwyn Hatfield,3.3,89.2,8.9
177 | E07000143,Breckland,3.5,96.7,3.3
178 | E07000144,Broadland,2.5,85.5,14.5
179 | E07000145,Great Yarmouth,5.9,88.3,11.7
180 | E07000146,King's Lynn and West Norfolk,3.3,86.2,12.8
181 | E07000147,North Norfolk,3.6,67.8,32.2
182 | E07000148,Norwich,4.4,85.6,13.3
183 | E07000149,South Norfolk,2.3,90.3,9.7
184 | E07000200,Babergh,2.8,80.2,19.8
185 | E07000244,East Suffolk,3.3,81.9,18.1
186 | E07000202,Ipswich,4.6,91.4,8.6
187 | E07000203,Mid Suffolk,2.7,81,19
188 | E07000245,West Suffolk,2.7,88.6,11.4
189 | E09000007,Camden,4.1,79.9,19.8
190 | E09000001,City of London,#N/A,100,#N/A
191 | E09000012,Hackney,5.5,83.3,16
192 | E09000013,Hammersmith and Fulham,4.7,80.1,19
193 | E09000014,Haringey,4.7,76.8,22.2
194 | E09000019,Islington,4.5,86.4,13
195 | E09000020,Kensington and Chelsea,4.3,80.6,19
196 | E09000022,Lambeth,5.5,83.3,15.6
197 | E09000023,Lewisham,4.8,85.2,14.8
198 | E09000025,Newham,5.6,80.9,18.5
199 | E09000028,Southwark,5.1,83.3,16.5
200 | E09000030,Tower Hamlets,4.8,83.8,15.7
201 | E09000032,Wandsworth,3.3,80.5,18.7
202 | E09000033,Westminster,4.3,83.4,16.1
203 | E09000002,Barking and Dagenham,6.8,83.5,16.5
204 | E09000003,Barnet,3.9,80.4,18.4
205 | E09000004,Bexley,4.1,84.9,13.7
206 | E09000005,Brent,5.8,77.6,21.8
207 | E09000006,Bromley,3.7,84.2,15.1
208 | E09000008,Croydon,4.4,84.4,14.6
209 | E09000009,Ealing,5.1,84.2,15.8
210 | E09000010,Enfield,5.3,80.8,18.5
211 | E09000011,Greenwich,4.9,81.9,18.1
212 | E09000015,Harrow,4,82.1,17.9
213 | E09000016,Havering,4.6,89.8,10.2
214 | E09000017,Hillingdon,4.6,89.3,10.7
215 | E09000018,Hounslow,4.5,86,14
216 | E09000021,Kingston upon Thames,3.7,83.8,15.3
217 | E09000024,Merton,4.3,80.7,18.4
218 | E09000026,Redbridge,4.1,73.4,26.6
219 | E09000027,Richmond upon Thames,2.9,82.7,16.8
220 | E09000029,Sutton,4.2,81.3,18.7
221 | E09000031,Waltham Forest,5.1,81.6,18.4
222 | E06000036,Bracknell Forest,3,87.2,12.8
223 | E06000043,Brighton and Hove,5.1,82.9,16.9
224 | E06000046,Isle of Wight,3.9,83.1,16.9
225 | E06000035,Medway,4.7,89.1,10.9
226 | E06000042,Milton Keynes,3.3,88.2,11.7
227 | E06000044,Portsmouth,4.9,87.5,12.1
228 | E06000038,Reading,3.5,87.5,12.3
229 | E06000039,Slough,4,86.6,13.4
230 | E06000045,Southampton,4.9,87.9,11.6
231 | E06000037,West Berkshire,2.7,84.7,15.1
232 | E06000040,Windsor and Maidenhead,2.5,83,16.3
233 | E06000041,Wokingham,2.3,88.2,11.6
234 | E06000060,Buckinghamshire,3.1,83.4,16
235 | E07000061,Eastbourne,4.4,87.2,12.8
236 | E07000062,Hastings,4.6,79.6,20.4
237 | E07000063,Lewes,3.6,76.6,23.4
238 | E07000064,Rother,3.4,87.7,12.3
239 | E07000065,Wealden,2.8,79.3,19.2
240 | E07000084,Basingstoke and Deane,2.9,85,15
241 | E07000085,East Hampshire,2.6,87.2,12.8
242 | E07000086,Eastleigh,2.9,94.6,5.4
243 | E07000087,Fareham,2.3,87.2,11.9
244 | E07000088,Gosport,4.1,85.2,14.8
245 | E07000089,Hart,2.3,88.9,11.1
246 | E07000090,Havant,4.4,81.5,18.5
247 | E07000091,New Forest,2.6,86.3,13.4
248 | E07000092,Rushmoor,3.5,93.9,6.1
249 | E07000093,Test Valley,2.8,87.8,12.2
250 | E07000094,Winchester,3,80.8,18.3
251 | E07000105,Ashford,3.3,88.1,11.9
252 | E07000106,Canterbury,3.9,80.1,19.1
253 | E07000107,Dartford,2.9,82.5,17.5
254 | E07000108,Dover,5.2,79.9,19.3
255 | E07000112,Folkestone and Hythe,3.6,74.6,24.4
256 | E07000109,Gravesham,4.6,90,10
257 | E07000110,Maidstone,3.5,87.7,12.3
258 | E07000111,Sevenoaks,3.8,78.6,21.4
259 | E07000113,Swale,4.9,85,14
260 | E07000114,Thanet,5.9,82,18
261 | E07000115,Tonbridge and Malling,3,78.8,21.2
262 | E07000116,Tunbridge Wells,2.9,79,21
263 | E07000177,Cherwell,2.6,89.6,10.4
264 | E07000178,Oxford,3.3,81.4,18.6
265 | E07000179,South Oxfordshire,2.1,82.2,17.8
266 | E07000180,Vale of White Horse,2.5,83.7,16.3
267 | E07000181,West Oxfordshire,2.8,87.8,11.5
268 | E07000207,Elmbridge,2.5,80.7,19.3
269 | E07000208,Epsom and Ewell,2.6,83.5,16.5
270 | E07000209,Guildford,2.2,85.8,14.2
271 | E07000210,Mole Valley,2.3,86.2,13.8
272 | E07000211,Reigate and Banstead,2.3,84.1,15.9
273 | E07000212,Runnymede,2.5,74.5,22.6
274 | E07000213,Spelthorne,3,81.5,16
275 | E07000214,Surrey Heath,2.8,100,#N/A
276 | E07000215,Tandridge,2.8,78.8,21.2
277 | E07000216,Waverley,2.4,84.9,15.1
278 | E07000217,Woking,2.7,89.3,10.7
279 | E07000223,Adur,3.2,84.8,15.2
280 | E07000224,Arun,3.8,82,16.8
281 | E07000225,Chichester,3,72.6,24.6
282 | E07000226,Crawley,4.1,90.6,9.4
283 | E07000227,Horsham,2.5,79.3,18.6
284 | E07000228,Mid Sussex,2.3,88.3,9.7
285 | E07000229,Worthing,3.4,83.4,16.6
286 | E06000022,Bath and North East Somerset,3.2,84,15.8
287 | E06000058,"Bournemouth, Christchurch and Poole",3.3,86.9,12.5
288 | E06000023,"Bristol, City of",4.1,87.3,11.9
289 | E06000052,Cornwall,3.2,79,20.8
290 | E06000059,Dorset,2.8,79.5,20.5
291 | E06000053,Isles of Scilly,#N/A,#N/A,#N/A
292 | E06000024,North Somerset,3,83.9,16
293 | E06000026,Plymouth,4.7,89.1,10.6
294 | E06000025,South Gloucestershire,2.6,87.1,12.9
295 | E06000030,Swindon,3.2,90.5,9.3
296 | E06000027,Torbay,4.4,86.5,13.5
297 | E06000054,Wiltshire,2.6,81.5,18.2
298 | E07000040,East Devon,2.6,79.6,20.4
299 | E07000041,Exeter,3.2,89.2,10.8
300 | E07000042,Mid Devon,2.6,78.2,21.8
301 | E07000043,North Devon,2.4,81.3,18.7
302 | E07000044,South Hams,2.3,76.9,23.1
303 | E07000045,Teignbridge,2.9,77.5,21.1
304 | E07000046,Torridge,2.8,60.8,34.2
305 | E07000047,West Devon,2.5,70.7,29.3
306 | E07000078,Cheltenham,2.7,83.6,15.5
307 | E07000079,Cotswold,2.1,81.7,17.3
308 | E07000080,Forest of Dean,3,88.1,11.9
309 | E07000081,Gloucester,3.8,87.7,12.3
310 | E07000082,Stroud,2.4,88.8,11.2
311 | E07000083,Tewkesbury,2.6,86.6,13.4
312 | E07000187,Mendip,3.1,82.8,16.6
313 | E07000188,Sedgemoor,3.3,87.3,12.2
314 | E07000246,Somerset West and Taunton,3.3,82.8,17.2
315 | E07000189,South Somerset,2.8,87.2,12.8
316 | A,Average,3.649679487,85.08402556,14.71322581
--------------------------------------------------------------------------------
/lib/style-chosen.css:
--------------------------------------------------------------------------------
1 |
2 | .chosen-container {
3 | position: relative;
4 | left:2px;
5 | top:5px;
6 | right:5px;
7 | display: inline-block;
8 | vertical-align: middle;
9 | font-size: 16px;
10 | zoom: 1;
11 | *display: inline;
12 | -webkit-user-select: none;
13 | -moz-user-select: none;
14 | user-select: none;
15 | font-weight:400;
16 | }
17 | .chosen-container .chosen-drop {
18 | position: absolute;
19 | top: 100%;
20 | left: -9999px;
21 | z-index: 1010;
22 | -webkit-box-sizing: border-box;
23 | -moz-box-sizing: border-box;
24 | box-sizing: border-box;
25 | width: 100%;
26 | border: 1px solid #aaa;
27 | border-top: 0;
28 | background: #fff;
29 | /*box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);*/
30 | }
31 | .chosen-container.chosen-with-drop .chosen-drop {
32 | left: 0;
33 | }
34 | .chosen-container a {
35 | cursor: pointer;
36 | }
37 |
38 | /* @end */
39 | /* @group Single Chosen */
40 | .chosen-container-single .chosen-single {
41 | position: relative;
42 | display: block;
43 | overflow: hidden;
44 | padding: 0 0 0 8px;
45 | height: 27px;
46 | border: 1px solid #aaa;
47 | background-color: #fff;
48 | background: #fff;
49 | /*box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);*/
50 | color: #666;
51 | text-decoration: none;
52 | white-space: nowrap;
53 | line-height: 24px;
54 | }
55 | .chosen-container-single .chosen-default {
56 | color: #666;
57 | }
58 | .chosen-container-single .chosen-single span {
59 | display: block;
60 | overflow: hidden;
61 | margin-right: 26px;
62 | text-overflow: ellipsis;
63 | white-space: nowrap;
64 | }
65 | .chosen-container-single .chosen-single-with-deselect span {
66 | margin-right: 38px;
67 | }
68 | .chosen-container-single .chosen-single abbr {
69 | position: absolute;
70 | top: 6px;
71 | right: 26px;
72 | display: block;
73 | width: 12px;
74 | height: 12px;
75 | background: url('../images/chosen-sprite.png') -42px 1px no-repeat;
76 | font-size: 1px;
77 | }
78 | .chosen-container-single .chosen-single abbr:hover {
79 | background-position: -42px -10px;
80 | }
81 | .chosen-container-single.chosen-disabled .chosen-single abbr:hover {
82 | background-position: -42px -10px;
83 | }
84 | .chosen-container-single .chosen-single div {
85 | position: absolute;
86 | top: 0;
87 | right: 0;
88 | display: block;
89 | width: 18px;
90 | height: 100%;
91 | }
92 | .chosen-container-single .chosen-single div b {
93 | display: block;
94 | width: 100%;
95 | height: 100%;
96 | background: url('../images/chosen-sprite.png') no-repeat 0px 2px;
97 | }
98 | .chosen-container-single .chosen-search {
99 | position: relative;
100 | z-index: 1010;
101 | margin: 0;
102 | padding: 3px 4px;
103 | white-space: nowrap;
104 | }
105 | .chosen-container-single .chosen-search input[type="text"] {
106 | -webkit-box-sizing: border-box;
107 | -moz-box-sizing: border-box;
108 | box-sizing: border-box;
109 | margin: 1px 0;
110 | padding: 4px 20px 4px 5px;
111 | width: 100% !important;
112 | height: auto;
113 | outline: 0;
114 | border: 1px solid #aaa;
115 | background: white url('../images/chosen-sprite.png') no-repeat 100% -20px;
116 | /*background: url('chosen-sprite.png') no-repeat 100% -20px;*/
117 | font-size: 1em;
118 | line-height: normal;
119 | }
120 | .chosen-container-single .chosen-drop {
121 | margin-top: -1px;
122 | background-clip: padding-box;
123 | }
124 | .chosen-container-single.chosen-container-single-nosearch .chosen-search {
125 | position: absolute;
126 | left: -9999px;
127 | }
128 |
129 | /* @end */
130 | /* @group Results */
131 | .chosen-container .chosen-results {
132 | position: relative;
133 | overflow-x: hidden;
134 | overflow-y: auto;
135 | margin: 0 4px 4px 0;
136 | padding: 0 0 0 4px;
137 | max-height: 240px;
138 | -webkit-overflow-scrolling: touch;
139 | }
140 | .chosen-container .chosen-results li {
141 | display: none;
142 | margin: 0;
143 | padding: 5px 6px;
144 | list-style: none;
145 | line-height: 15px;
146 | -webkit-touch-callout: none;
147 | }
148 | .chosen-container .chosen-results li.active-result {
149 | display: list-item;
150 | cursor: pointer;
151 | color:#666;
152 | }
153 | .chosen-container .chosen-results li.disabled-result {
154 | display: list-item;
155 | color: #ccc;
156 | cursor: default;
157 | }
158 | .chosen-container .chosen-results li.highlighted {
159 | background-color: rgba(255,255,255,0.2);
160 | color:#00ace6;
161 | }
162 | .chosen-container .chosen-results li.no-results {
163 | display: list-item;
164 | background: #f4f4f4;
165 | }
166 | .chosen-container .chosen-results li.group-result {
167 | display: list-item;
168 | font-weight: bold;
169 | cursor: default;
170 | }
171 | .chosen-container .chosen-results li.group-option {
172 | padding-left: 15px;
173 | }
174 | .chosen-container .chosen-results li em {
175 | font-style: normal;
176 | text-decoration: underline;
177 | }
178 |
179 | /* @end */
180 | /* @group Multi Chosen */
181 | .chosen-container-multi .chosen-choices {
182 | position: relative;
183 | overflow: hidden;
184 | -webkit-box-sizing: border-box;
185 | -moz-box-sizing: border-box;
186 | box-sizing: border-box;
187 | margin: 0;
188 | padding: 0;
189 | width: 100%;
190 | height: auto !important;
191 | border: 1px solid #aaa;
192 | background-color: #fff;
193 | /*background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
194 | background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
195 | background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
196 | background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
197 | background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);*/
198 | cursor: text;
199 | }
200 | .chosen-container-multi .chosen-choices li {
201 | float: left;
202 | list-style: none;
203 | }
204 | .chosen-container-multi .chosen-choices li.search-field {
205 | margin: 0;
206 | padding: 0;
207 | white-space: nowrap;
208 | }
209 | .chosen-container-multi .chosen-choices li.search-field input[type="text"] {
210 | margin: 1px 0;
211 | padding: 5px;
212 | height: 30px;
213 | /* width: 100% !important;*/
214 | outline: 0;
215 | border: 0 !important;
216 | background: transparent !important;
217 | box-shadow: none;
218 | color: #666;
219 | font-size: 100%;
220 | line-height: normal;
221 | }
222 |
223 | .chosen-choices {
224 | min-height:36px !important;
225 | }
226 | .chosen-container-multi .chosen-choices li.search-field .default {
227 | color: #666;
228 | }
229 | .chosen-container-multi .chosen-choices li.search-choice {
230 | position: relative;
231 | margin: 3px 3px 3px 5px;
232 | padding: 3px 20px 3px 5px;
233 |
234 | background-color: #EAEAEA;
235 | /* background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
236 | background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
237 | background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
238 | background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
239 | background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);*/
240 | background-clip: padding-box;
241 | /*box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);*/
242 | color: #666;
243 | line-height: 20px;
244 | cursor: default;
245 | }
246 | .chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
247 | position: absolute;
248 | top: 4px;
249 | right: 3px;
250 | display: block;
251 | width: 12px;
252 | height: 12px;
253 | background: url('../images/chosen-sprite.png') -42px 2px no-repeat;
254 | font-size: 1px;
255 | }
256 | .chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
257 | background-position: -42px -10px;
258 | }
259 | .chosen-container-multi .chosen-choices li.search-choice-disabled {
260 | padding-right: 5px;
261 | border: 1px solid #ccc;
262 | background-color: #e4e4e4;
263 | /*background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
264 | background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
265 | background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
266 | background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
267 | background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);*/
268 | color: #666;
269 | }
270 | .chosen-container-multi .chosen-choices li.search-choice-focus {
271 | background: #d4d4d4;
272 | }
273 | .chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
274 | background-position: -42px -10px;
275 | }
276 | .chosen-container-multi .chosen-results {
277 | margin: 0;
278 | padding: 0;
279 | }
280 | .chosen-container-multi .chosen-drop .result-selected {
281 | display: list-item;
282 | color: #ccc;
283 | cursor: default;
284 | }
285 |
286 | /* @end */
287 | /* @group Active */
288 | .chosen-container-active .chosen-single {
289 | /*border: 1px solid #5897fb;*/
290 | /*box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);*/
291 | }
292 | .chosen-container-active.chosen-with-drop .chosen-single {
293 | /*border: 1px solid #aaa;*/
294 | -moz-border-radius-bottomright: 0;
295 | border-bottom-right-radius: 0;
296 | -moz-border-radius-bottomleft: 0;
297 | border-bottom-left-radius: 0;
298 | /*box-shadow: 0 1px 0 #fff inset;*/
299 | }
300 | .chosen-container-active.chosen-with-drop .chosen-single div {
301 | border-left: none;
302 | background: transparent;
303 | }
304 | .chosen-container-active.chosen-with-drop .chosen-single div b {
305 | background-position: -18px 2px;
306 | }
307 | .chosen-container-active .chosen-choices {
308 | /*border: 1px solid #5897fb;*/
309 | /*box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);*/
310 | }
311 | .chosen-container-active .chosen-choices li.search-field input[type="text"] {
312 | color: #111 !important;
313 | }
314 |
315 | /* @end */
316 | /* @group Disabled Support */
317 | .chosen-disabled {
318 | opacity: 0.5 !important;
319 | cursor: default;
320 | }
321 | .chosen-disabled .chosen-single {
322 | cursor: default;
323 | }
324 | .chosen-disabled .chosen-choices .search-choice .search-choice-close {
325 | cursor: default;
326 | }
327 |
328 | /* @end */
329 | /* @group Right to Left */
330 | .chosen-rtl {
331 | text-align: right;
332 | }
333 | .chosen-rtl .chosen-single {
334 | overflow: visible;
335 | padding: 0 8px 0 0;
336 | }
337 | .chosen-rtl .chosen-single span {
338 | margin-right: 0;
339 | margin-left: 26px;
340 | direction: rtl;
341 | }
342 | .chosen-rtl .chosen-single-with-deselect span {
343 | margin-left: 38px;
344 | }
345 | .chosen-rtl .chosen-single div {
346 | right: auto;
347 | left: 3px;
348 | }
349 | .chosen-rtl .chosen-single abbr {
350 | right: auto;
351 | left: 26px;
352 | }
353 | .chosen-rtl .chosen-choices li {
354 | float: right;
355 | }
356 | .chosen-rtl .chosen-choices li.search-field input[type="text"] {
357 | direction: rtl;
358 | }
359 | .chosen-rtl .chosen-choices li.search-choice {
360 | margin: 3px 5px 3px 0;
361 | padding: 3px 5px 3px 19px;
362 | }
363 | .chosen-rtl .chosen-choices li.search-choice .search-choice-close {
364 | right: auto;
365 | left: 4px;
366 | }
367 | .chosen-rtl.chosen-container-single-nosearch .chosen-search,
368 | .chosen-rtl .chosen-drop {
369 | left: 9999px;
370 | }
371 | .chosen-rtl.chosen-container-single .chosen-results {
372 | margin: 0 0 4px 4px;
373 | padding: 0 4px 0 0;
374 | }
375 | .chosen-rtl .chosen-results li.group-option {
376 | padding-right: 15px;
377 | padding-left: 0;
378 | }
379 | .chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
380 | border-right: none;
381 | }
382 | .chosen-rtl .chosen-search input[type="text"] {
383 | padding: 4px 5px 4px 20px;
384 | background: white url('../images/chosen-sprite.png') no-repeat -30px -20px;
385 | /*background: url('chosen-sprite.png') no-repeat -30px -20px;*/
386 | direction: rtl;
387 | }
388 | .chosen-rtl.chosen-container-single .chosen-single div b {
389 | background-position: 6px 2px;
390 | }
391 | .chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
392 | background-position: -12px 2px;
393 | }
394 |
395 | /* @end */
396 | /* @group Retina compatibility */
397 | @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) {
398 | .chosen-rtl .chosen-search input[type="text"],
399 | .chosen-container-single .chosen-single abbr,
400 | .chosen-container-single .chosen-single div b,
401 | .chosen-container-single .chosen-search input[type="text"],
402 | .chosen-container-multi .chosen-choices .search-choice .search-choice-close,
403 | .chosen-container .chosen-results-scroll-down span,
404 | .chosen-container .chosen-results-scroll-up span {
405 | background-image: url('../images/chosen-sprite@2x.png') !important;
406 | background-size: 52px 37px !important;
407 | background-repeat: no-repeat !important;
408 | }
409 | }
410 | /* @end */
411 |
--------------------------------------------------------------------------------
/lib/styles.css:
--------------------------------------------------------------------------------
1 | .row {
2 | /* margin-left: -15px;*/
3 | /* margin-right: -15px;*/
4 | }
5 | .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
6 | position: relative;
7 | min-height: 1px;
8 | /*padding-left: 15px;*/
9 | /*padding-right: 15px;*/
10 | }
11 | .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
12 | float: left;
13 | }
14 | .col-xs-12 {
15 | width: 100%;
16 | }
17 | .col-xs-11 {
18 | width: 91.66666667%;
19 | }
20 | .col-xs-10 {
21 | width: 83.33333333%;
22 | }
23 | .col-xs-9 {
24 | width: 75%;
25 | }
26 | .col-xs-8 {
27 | width: 66.66666667%;
28 | }
29 | .col-xs-7 {
30 | width: 58.33333333%;
31 | }
32 | .col-xs-6 {
33 | width: 50%;
34 | }
35 | .col-xs-5 {
36 | width: 41.66666667%;
37 | }
38 | .col-xs-4 {
39 | width: 33.33333333%;
40 | }
41 | .col-xs-3 {
42 | width: 25%;
43 | }
44 | .col-xs-2 {
45 | width: 16.66666667%;
46 | }
47 | .col-xs-1 {
48 | width: 8.33333333%;
49 | }
50 | .col-xs-pull-12 {
51 | right: 100%;
52 | }
53 | .col-xs-pull-11 {
54 | right: 91.66666667%;
55 | }
56 | .col-xs-pull-10 {
57 | right: 83.33333333%;
58 | }
59 | .col-xs-pull-9 {
60 | right: 75%;
61 | }
62 | .col-xs-pull-8 {
63 | right: 66.66666667%;
64 | }
65 | .col-xs-pull-7 {
66 | right: 58.33333333%;
67 | }
68 | .col-xs-pull-6 {
69 | right: 50%;
70 | }
71 | .col-xs-pull-5 {
72 | right: 41.66666667%;
73 | }
74 | .col-xs-pull-4 {
75 | right: 33.33333333%;
76 | }
77 | .col-xs-pull-3 {
78 | right: 25%;
79 | }
80 | .col-xs-pull-2 {
81 | right: 16.66666667%;
82 | }
83 | .col-xs-pull-1 {
84 | right: 8.33333333%;
85 | }
86 | .col-xs-pull-0 {
87 | right: auto;
88 | }
89 | .col-xs-push-12 {
90 | left: 100%;
91 | }
92 | .col-xs-push-11 {
93 | left: 91.66666667%;
94 | }
95 | .col-xs-push-10 {
96 | left: 83.33333333%;
97 | }
98 | .col-xs-push-9 {
99 | left: 75%;
100 | }
101 | .col-xs-push-8 {
102 | left: 66.66666667%;
103 | }
104 | .col-xs-push-7 {
105 | left: 58.33333333%;
106 | }
107 | .col-xs-push-6 {
108 | left: 50%;
109 | }
110 | .col-xs-push-5 {
111 | left: 41.66666667%;
112 | }
113 | .col-xs-push-4 {
114 | left: 33.33333333%;
115 | }
116 | .col-xs-push-3 {
117 | left: 25%;
118 | }
119 | .col-xs-push-2 {
120 | left: 16.66666667%;
121 | }
122 | .col-xs-push-1 {
123 | left: 8.33333333%;
124 | }
125 | .col-xs-push-0 {
126 | left: auto;
127 | }
128 | .col-xs-offset-12 {
129 | margin-left: 100%;
130 | }
131 | .col-xs-offset-11 {
132 | margin-left: 91.66666667%;
133 | }
134 | .col-xs-offset-10 {
135 | margin-left: 83.33333333%;
136 | }
137 | .col-xs-offset-9 {
138 | margin-left: 75%;
139 | }
140 | .col-xs-offset-8 {
141 | margin-left: 66.66666667%;
142 | }
143 | .col-xs-offset-7 {
144 | margin-left: 58.33333333%;
145 | }
146 | .col-xs-offset-6 {
147 | margin-left: 50%;
148 | }
149 | .col-xs-offset-5 {
150 | margin-left: 41.66666667%;
151 | }
152 | .col-xs-offset-4 {
153 | margin-left: 33.33333333%;
154 | }
155 | .col-xs-offset-3 {
156 | margin-left: 25%;
157 | }
158 | .col-xs-offset-2 {
159 | margin-left: 16.66666667%;
160 | }
161 | .col-xs-offset-1 {
162 | margin-left: 8.33333333%;
163 | }
164 | .col-xs-offset-0 {
165 | margin-left: 0%;
166 | }
167 | @media (min-width: 768px) {
168 | .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
169 | float: left;
170 | }
171 | .col-sm-12 {
172 | width: 100%;
173 | }
174 | .col-sm-11 {
175 | width: 91.66666667%;
176 | }
177 | .col-sm-10 {
178 | width: 83.33333333%;
179 | }
180 | .col-sm-9 {
181 | width: 75%;
182 | }
183 | .col-sm-8 {
184 | width: 66.66666667%;
185 | }
186 | .col-sm-7 {
187 | width: 58.33333333%;
188 | }
189 | .col-sm-6 {
190 | width: 50%;
191 | }
192 | .col-sm-5 {
193 | width: 41.66666667%;
194 | }
195 | .col-sm-4 {
196 | width: 33.33333333%;
197 | }
198 | .col-sm-3 {
199 | width: 25%;
200 | }
201 | .col-sm-2 {
202 | width: 16.66666667%;
203 | }
204 | .col-sm-1 {
205 | width: 8.33333333%;
206 | }
207 | .col-sm-pull-12 {
208 | right: 100%;
209 | }
210 | .col-sm-pull-11 {
211 | right: 91.66666667%;
212 | }
213 | .col-sm-pull-10 {
214 | right: 83.33333333%;
215 | }
216 | .col-sm-pull-9 {
217 | right: 75%;
218 | }
219 | .col-sm-pull-8 {
220 | right: 66.66666667%;
221 | }
222 | .col-sm-pull-7 {
223 | right: 58.33333333%;
224 | }
225 | .col-sm-pull-6 {
226 | right: 50%;
227 | }
228 | .col-sm-pull-5 {
229 | right: 41.66666667%;
230 | }
231 | .col-sm-pull-4 {
232 | right: 33.33333333%;
233 | }
234 | .col-sm-pull-3 {
235 | right: 25%;
236 | }
237 | .col-sm-pull-2 {
238 | right: 16.66666667%;
239 | }
240 | .col-sm-pull-1 {
241 | right: 8.33333333%;
242 | }
243 | .col-sm-pull-0 {
244 | right: auto;
245 | }
246 | .col-sm-push-12 {
247 | left: 100%;
248 | }
249 | .col-sm-push-11 {
250 | left: 91.66666667%;
251 | }
252 | .col-sm-push-10 {
253 | left: 83.33333333%;
254 | }
255 | .col-sm-push-9 {
256 | left: 75%;
257 | }
258 | .col-sm-push-8 {
259 | left: 66.66666667%;
260 | }
261 | .col-sm-push-7 {
262 | left: 58.33333333%;
263 | }
264 | .col-sm-push-6 {
265 | left: 50%;
266 | }
267 | .col-sm-push-5 {
268 | left: 41.66666667%;
269 | }
270 | .col-sm-push-4 {
271 | left: 33.33333333%;
272 | }
273 | .col-sm-push-3 {
274 | left: 25%;
275 | }
276 | .col-sm-push-2 {
277 | left: 16.66666667%;
278 | }
279 | .col-sm-push-1 {
280 | left: 8.33333333%;
281 | }
282 | .col-sm-push-0 {
283 | left: auto;
284 | }
285 | .col-sm-offset-12 {
286 | margin-left: 100%;
287 | }
288 | .col-sm-offset-11 {
289 | margin-left: 91.66666667%;
290 | }
291 | .col-sm-offset-10 {
292 | margin-left: 83.33333333%;
293 | }
294 | .col-sm-offset-9 {
295 | margin-left: 75%;
296 | }
297 | .col-sm-offset-8 {
298 | margin-left: 66.66666667%;
299 | }
300 | .col-sm-offset-7 {
301 | margin-left: 58.33333333%;
302 | }
303 | .col-sm-offset-6 {
304 | margin-left: 50%;
305 | }
306 | .col-sm-offset-5 {
307 | margin-left: 41.66666667%;
308 | }
309 | .col-sm-offset-4 {
310 | margin-left: 33.33333333%;
311 | }
312 | .col-sm-offset-3 {
313 | margin-left: 25%;
314 | }
315 | .col-sm-offset-2 {
316 | margin-left: 16.66666667%;
317 | }
318 | .col-sm-offset-1 {
319 | margin-left: 8.33333333%;
320 | }
321 | .col-sm-offset-0 {
322 | margin-left: 0%;
323 | }
324 | }
325 | @media (min-width: 939px) {
326 | .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
327 | float: left;
328 | }
329 | .col-md-12 {
330 | width: 100%;
331 | }
332 | .col-md-11 {
333 | width: 91.66666667%;
334 | }
335 | .col-md-10 {
336 | width: 83.33333333%;
337 | }
338 | .col-md-9 {
339 | width: 75%;
340 | }
341 | .col-md-8 {
342 | width: 66.66666667%;
343 | }
344 | .col-md-7 {
345 | width: 58.33333333%;
346 | }
347 | .col-md-6 {
348 | width: 50%;
349 | }
350 | .col-md-5 {
351 | width: 41.66666667%;
352 | }
353 | .col-md-4 {
354 | width: 33.33333333%;
355 | }
356 | .col-md-3 {
357 | width: 25%;
358 | }
359 | .col-md-2 {
360 | width: 16.66666667%;
361 | }
362 | .col-md-1 {
363 | width: 8.33333333%;
364 | }
365 | .col-md-pull-12 {
366 | right: 100%;
367 | }
368 | .col-md-pull-11 {
369 | right: 91.66666667%;
370 | }
371 | .col-md-pull-10 {
372 | right: 83.33333333%;
373 | }
374 | .col-md-pull-9 {
375 | right: 75%;
376 | }
377 | .col-md-pull-8 {
378 | right: 66.66666667%;
379 | }
380 | .col-md-pull-7 {
381 | right: 58.33333333%;
382 | }
383 | .col-md-pull-6 {
384 | right: 50%;
385 | }
386 | .col-md-pull-5 {
387 | right: 41.66666667%;
388 | }
389 | .col-md-pull-4 {
390 | right: 33.33333333%;
391 | }
392 | .col-md-pull-3 {
393 | right: 25%;
394 | }
395 | .col-md-pull-2 {
396 | right: 16.66666667%;
397 | }
398 | .col-md-pull-1 {
399 | right: 8.33333333%;
400 | }
401 | .col-md-pull-0 {
402 | right: auto;
403 | }
404 | .col-md-push-12 {
405 | left: 100%;
406 | }
407 | .col-md-push-11 {
408 | left: 91.66666667%;
409 | }
410 | .col-md-push-10 {
411 | left: 83.33333333%;
412 | }
413 | .col-md-push-9 {
414 | left: 75%;
415 | }
416 | .col-md-push-8 {
417 | left: 66.66666667%;
418 | }
419 | .col-md-push-7 {
420 | left: 58.33333333%;
421 | }
422 | .col-md-push-6 {
423 | left: 50%;
424 | }
425 | .col-md-push-5 {
426 | left: 41.66666667%;
427 | }
428 | .col-md-push-4 {
429 | left: 33.33333333%;
430 | }
431 | .col-md-push-3 {
432 | left: 25%;
433 | }
434 | .col-md-push-2 {
435 | left: 16.66666667%;
436 | }
437 | .col-md-push-1 {
438 | left: 8.33333333%;
439 | }
440 | .col-md-push-0 {
441 | left: auto;
442 | }
443 | .col-md-offset-12 {
444 | margin-left: 100%;
445 | }
446 | .col-md-offset-11 {
447 | margin-left: 91.66666667%;
448 | }
449 | .col-md-offset-10 {
450 | margin-left: 83.33333333%;
451 | }
452 | .col-md-offset-9 {
453 | margin-left: 75%;
454 | }
455 | .col-md-offset-8 {
456 | margin-left: 66.66666667%;
457 | }
458 | .col-md-offset-7 {
459 | margin-left: 58.33333333%;
460 | }
461 | .col-md-offset-6 {
462 | margin-left: 50%;
463 | }
464 | .col-md-offset-5 {
465 | margin-left: 41.66666667%;
466 | }
467 | .col-md-offset-4 {
468 | margin-left: 33.33333333%;
469 | }
470 | .col-md-offset-3 {
471 | margin-left: 25%;
472 | }
473 | .col-md-offset-2 {
474 | margin-left: 16.66666667%;
475 | }
476 | .col-md-offset-1 {
477 | margin-left: 8.33333333%;
478 | }
479 | .col-md-offset-0 {
480 | margin-left: 0%;
481 | }
482 | }
483 | @media (min-width: 1200px) {
484 | .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
485 | float: left;
486 | }
487 | .col-lg-12 {
488 | width: 100%;
489 | }
490 | .col-lg-11 {
491 | width: 91.66666667%;
492 | }
493 | .col-lg-10 {
494 | width: 83.33333333%;
495 | }
496 | .col-lg-9 {
497 | width: 75%;
498 | }
499 | .col-lg-8 {
500 | width: 66.66666667%;
501 | }
502 | .col-lg-7 {
503 | width: 58.33333333%;
504 | }
505 | .col-lg-6 {
506 | width: 50%;
507 | }
508 | .col-lg-5 {
509 | width: 41.66666667%;
510 | }
511 | .col-lg-4 {
512 | width: 33.33333333%;
513 | }
514 | .col-lg-3 {
515 | width: 25%;
516 | }
517 | .col-lg-2 {
518 | width: 16.66666667%;
519 | }
520 | .col-lg-1 {
521 | width: 8.33333333%;
522 | }
523 | .col-lg-pull-12 {
524 | right: 100%;
525 | }
526 | .col-lg-pull-11 {
527 | right: 91.66666667%;
528 | }
529 | .col-lg-pull-10 {
530 | right: 83.33333333%;
531 | }
532 | .col-lg-pull-9 {
533 | right: 75%;
534 | }
535 | .col-lg-pull-8 {
536 | right: 66.66666667%;
537 | }
538 | .col-lg-pull-7 {
539 | right: 58.33333333%;
540 | }
541 | .col-lg-pull-6 {
542 | right: 50%;
543 | }
544 | .col-lg-pull-5 {
545 | right: 41.66666667%;
546 | }
547 | .col-lg-pull-4 {
548 | right: 33.33333333%;
549 | }
550 | .col-lg-pull-3 {
551 | right: 25%;
552 | }
553 | .col-lg-pull-2 {
554 | right: 16.66666667%;
555 | }
556 | .col-lg-pull-1 {
557 | right: 8.33333333%;
558 | }
559 | .col-lg-pull-0 {
560 | right: auto;
561 | }
562 | .col-lg-push-12 {
563 | left: 100%;
564 | }
565 | .col-lg-push-11 {
566 | left: 91.66666667%;
567 | }
568 | .col-lg-push-10 {
569 | left: 83.33333333%;
570 | }
571 | .col-lg-push-9 {
572 | left: 75%;
573 | }
574 | .col-lg-push-8 {
575 | left: 66.66666667%;
576 | }
577 | .col-lg-push-7 {
578 | left: 58.33333333%;
579 | }
580 | .col-lg-push-6 {
581 | left: 50%;
582 | }
583 | .col-lg-push-5 {
584 | left: 41.66666667%;
585 | }
586 | .col-lg-push-4 {
587 | left: 33.33333333%;
588 | }
589 | .col-lg-push-3 {
590 | left: 25%;
591 | }
592 | .col-lg-push-2 {
593 | left: 16.66666667%;
594 | }
595 | .col-lg-push-1 {
596 | left: 8.33333333%;
597 | }
598 | .col-lg-push-0 {
599 | left: auto;
600 | }
601 | .col-lg-offset-12 {
602 | margin-left: 100%;
603 | }
604 | .col-lg-offset-11 {
605 | margin-left: 91.66666667%;
606 | }
607 | .col-lg-offset-10 {
608 | margin-left: 83.33333333%;
609 | }
610 | .col-lg-offset-9 {
611 | margin-left: 75%;
612 | }
613 | .col-lg-offset-8 {
614 | margin-left: 66.66666667%;
615 | }
616 | .col-lg-offset-7 {
617 | margin-left: 58.33333333%;
618 | }
619 | .col-lg-offset-6 {
620 | margin-left: 50%;
621 | }
622 | .col-lg-offset-5 {
623 | margin-left: 41.66666667%;
624 | }
625 | .col-lg-offset-4 {
626 | margin-left: 33.33333333%;
627 | }
628 | .col-lg-offset-3 {
629 | margin-left: 25%;
630 | }
631 | .col-lg-offset-2 {
632 | margin-left: 16.66666667%;
633 | }
634 | .col-lg-offset-1 {
635 | margin-left: 8.33333333%;
636 | }
637 | .col-lg-offset-0 {
638 | margin-left: 0%;
639 | }
640 | }
641 |
--------------------------------------------------------------------------------
/multiple-beeswarms-alternative/menTidy.csv:
--------------------------------------------------------------------------------
1 | id,group,unique,value
2 | Prostate,East of England,East of England,97.1
3 | Prostate,Wessex,Wessex,97.1
4 | Prostate,West Midlands,West Midlands,97
5 | Prostate,North East and Cumbria,North East and Cumbria,96.8
6 | Prostate,"Somerset, Wiltshire, Avon and Gloucestershire","Somerset, Wiltshire, Avon and Gloucestershire",96.7
7 | Prostate,Thames Valley,Thames Valley,96.7
8 | Prostate,"Humber, Coast and Vale","Humber, Coast and Vale",96.4
9 | Prostate,Peninsula,Peninsula,96.4
10 | Prostate,East Midlands,East Midlands,96.3
11 | Prostate,Surrey and Sussex,Surrey and Sussex,96.3
12 | Prostate,Kent and Medway,Kent and Medway,96.1
13 | Prostate,Lancashire and South Cumbria,Lancashire and South Cumbria,96.1
14 | Prostate,North Central and North East London,North Central and North East London,96.1
15 | Prostate,North West and South West London,North West and South West London,96.1
16 | Prostate,South East London,South East London,96.1
17 | Prostate,West Yorkshire and Harrogate,West Yorkshire and Harrogate,96.1
18 | Prostate,Cheshire and Merseyside,Cheshire and Merseyside,96
19 | Prostate,Greater Manchester,Greater Manchester,95.7
20 | Prostate,"South Yorkshire, Bassetlaw, North Derbyshire and Hardwick","South Yorkshire, Bassetlaw, North Derbyshire and Hardwick",95.4
21 | Myeloma,North West and South West London,North West and South West London,86.2
22 | Rectal,Peninsula,Peninsula,86.1
23 | Rectal,Thames Valley,Thames Valley,86.1
24 | Rectal,Wessex,Wessex,86.1
25 | Rectal,"Humber, Coast and Vale","Humber, Coast and Vale",85.8
26 | Myeloma,East Midlands,East Midlands,85.7
27 | Myeloma,"South Yorkshire, Bassetlaw, North Derbyshire and Hardwick","South Yorkshire, Bassetlaw, North Derbyshire and Hardwick",85.1
28 | Rectal,"Somerset, Wiltshire, Avon and Gloucestershire","Somerset, Wiltshire, Avon and Gloucestershire",84.8
29 | Rectal,Surrey and Sussex,Surrey and Sussex,84.8
30 | Myeloma,Surrey and Sussex,Surrey and Sussex,84.6
31 | Rectal,East of England,East of England,84.3
32 | Kidney & Urinary Tract,North West and South West London,North West and South West London,84.2
33 | Myeloma,Cheshire and Merseyside,Cheshire and Merseyside,83.8
34 | Myeloma,South East London,South East London,83.8
35 | Rectal,North West and South West London,North West and South West London,83.7
36 | Rectal,South East London,South East London,83.5
37 | Rectal,North East and Cumbria,North East and Cumbria,83.4
38 | Myeloma,North Central and North East London,North Central and North East London,83
39 | Rectal,North Central and North East London,North Central and North East London,83
40 | Myeloma,"Somerset, Wiltshire, Avon and Gloucestershire","Somerset, Wiltshire, Avon and Gloucestershire",82.9
41 | Rectal,West Midlands,West Midlands,82.9
42 | Rectal,Greater Manchester,Greater Manchester,82.8
43 | Rectal,Kent and Medway,Kent and Medway,82.8
44 | Rectal,West Yorkshire and Harrogate,West Yorkshire and Harrogate,82.8
45 | Rectal,Cheshire and Merseyside,Cheshire and Merseyside,82.7
46 | Myeloma,"Humber, Coast and Vale","Humber, Coast and Vale",82.5
47 | Myeloma,Peninsula,Peninsula,82.5
48 | Myeloma,Thames Valley,Thames Valley,82.5
49 | Myeloma,Greater Manchester,Greater Manchester,82.2
50 | Rectal,Lancashire and South Cumbria,Lancashire and South Cumbria,82
51 | Myeloma,Wessex,Wessex,82
52 | Myeloma,West Midlands,West Midlands,82
53 | Rectal,East Midlands,East Midlands,81.8
54 | Colorectal,Surrey and Sussex,Surrey and Sussex,81.4
55 | Colorectal,Wessex,Wessex,81.4
56 | Bladder,"Humber, Coast and Vale","Humber, Coast and Vale",81.3
57 | Colorectal,North West and South West London,North West and South West London,81.3
58 | Non-Hodgkin Lymphoma,"Somerset, Wiltshire, Avon and Gloucestershire","Somerset, Wiltshire, Avon and Gloucestershire",81.2
59 | Kidney & Urinary Tract,North Central and North East London,North Central and North East London,81.1
60 | Colorectal,Thames Valley,Thames Valley,81.1
61 | Non-Hodgkin Lymphoma,North West and South West London,North West and South West London,80.9
62 | Kidney & Urinary Tract,South East London,South East London,80.7
63 | Colorectal,Peninsula,Peninsula,80.6
64 | Rectal,"South Yorkshire, Bassetlaw, North Derbyshire and Hardwick","South Yorkshire, Bassetlaw, North Derbyshire and Hardwick",80.6
65 | Non-Hodgkin Lymphoma,Peninsula,Peninsula,80.5
66 | Bladder,Cheshire and Merseyside,Cheshire and Merseyside,80
67 | Bladder,Kent and Medway,Kent and Medway,80
68 | Colorectal,"Humber, Coast and Vale","Humber, Coast and Vale",79.9
69 | Bladder,Peninsula,Peninsula,79.9
70 | Kidney & Urinary Tract,Thames Valley,Thames Valley,79.9
71 | Myeloma,East of England,East of England,79.7
72 | Colon,North West and South West London,North West and South West London,79.7
73 | Colorectal,East of England,East of England,79.6
74 | Colorectal,South East London,South East London,79.6
75 | Non-Hodgkin Lymphoma,Wessex,Wessex,79.6
76 | Myeloma,Lancashire and South Cumbria,Lancashire and South Cumbria,79.5
77 | Colorectal,North Central and North East London,North Central and North East London,79.5
78 | Colorectal,"Somerset, Wiltshire, Avon and Gloucestershire","Somerset, Wiltshire, Avon and Gloucestershire",79.5
79 | Colorectal,Cheshire and Merseyside,Cheshire and Merseyside,79.3
80 | Kidney & Urinary Tract,"Somerset, Wiltshire, Avon and Gloucestershire","Somerset, Wiltshire, Avon and Gloucestershire",79.3
81 | Colorectal,West Yorkshire and Harrogate,West Yorkshire and Harrogate,79.3
82 | Colon,Surrey and Sussex,Surrey and Sussex,79.2
83 | Kidney & Urinary Tract,Surrey and Sussex,Surrey and Sussex,79.1
84 | Colorectal,West Midlands,West Midlands,79.1
85 | Myeloma,West Yorkshire and Harrogate,West Yorkshire and Harrogate,79.1
86 | Non-Hodgkin Lymphoma,East of England,East of England,79
87 | Bladder,Lancashire and South Cumbria,Lancashire and South Cumbria,79
88 | Colorectal,Kent and Medway,Kent and Medway,78.9
89 | Bladder,East of England,East of England,78.8
90 | Colorectal,Lancashire and South Cumbria,Lancashire and South Cumbria,78.7
91 | Bladder,North East and Cumbria,North East and Cumbria,78.7
92 | Colorectal,North East and Cumbria,North East and Cumbria,78.7
93 | Bladder,Surrey and Sussex,Surrey and Sussex,78.7
94 | Colorectal,East Midlands,East Midlands,78.6
95 | Non-Hodgkin Lymphoma,East Midlands,East Midlands,78.6
96 | Kidney & Urinary Tract,"Humber, Coast and Vale","Humber, Coast and Vale",78.6
97 | Colon,Wessex,Wessex,78.6
98 | Colorectal,Greater Manchester,Greater Manchester,78.5
99 | Bladder,North West and South West London,North West and South West London,78.5
100 | Non-Hodgkin Lymphoma,North Central and North East London,North Central and North East London,78.3
101 | Colon,Thames Valley,Thames Valley,78.3
102 | Non-Hodgkin Lymphoma,Thames Valley,Thames Valley,78.3
103 | Non-Hodgkin Lymphoma,West Yorkshire and Harrogate,West Yorkshire and Harrogate,78.3
104 | Bladder,West Yorkshire and Harrogate,West Yorkshire and Harrogate,78.2
105 | Bladder,East Midlands,East Midlands,78.1
106 | Myeloma,North East and Cumbria,North East and Cumbria,78
107 | Kidney & Urinary Tract,Peninsula,Peninsula,78
108 | Non-Hodgkin Lymphoma,Surrey and Sussex,Surrey and Sussex,78
109 | Bladder,Thames Valley,Thames Valley,78
110 | Non-Hodgkin Lymphoma,West Midlands,West Midlands,78
111 | Kidney & Urinary Tract,West Yorkshire and Harrogate,West Yorkshire and Harrogate,78
112 | Non-Hodgkin Lymphoma,Kent and Medway,Kent and Medway,77.9
113 | Kidney & Urinary Tract,Wessex,Wessex,77.9
114 | Kidney & Urinary Tract,Cheshire and Merseyside,Cheshire and Merseyside,77.8
115 | Bladder,North Central and North East London,North Central and North East London,77.8
116 | Myeloma,Kent and Medway,Kent and Medway,77.7
117 | Kidney & Urinary Tract,"South Yorkshire, Bassetlaw, North Derbyshire and Hardwick","South Yorkshire, Bassetlaw, North Derbyshire and Hardwick",77.7
118 | Bladder,West Midlands,West Midlands,77.7
119 | Colon,North Central and North East London,North Central and North East London,77.6
120 | Kidney & Urinary Tract,North East and Cumbria,North East and Cumbria,77.6
121 | Bladder,South East London,South East London,77.6
122 | Kidney & Urinary Tract,Greater Manchester,Greater Manchester,77.5
123 | Kidney & Urinary Tract,West Midlands,West Midlands,77.5
124 | Colon,Cheshire and Merseyside,Cheshire and Merseyside,77.3
125 | Colon,South East London,South East London,77.3
126 | Bladder,Greater Manchester,Greater Manchester,77.2
127 | Non-Hodgkin Lymphoma,Greater Manchester,Greater Manchester,77.2
128 | Colon,Peninsula,Peninsula,77.2
129 | Colon,West Yorkshire and Harrogate,West Yorkshire and Harrogate,77
130 | Colon,East of England,East of England,76.9
131 | Kidney & Urinary Tract,Lancashire and South Cumbria,Lancashire and South Cumbria,76.9
132 | Colon,East Midlands,East Midlands,76.8
133 | Colon,Lancashire and South Cumbria,Lancashire and South Cumbria,76.8
134 | Bladder,Wessex,Wessex,76.8
135 | Colon,West Midlands,West Midlands,76.8
136 | Colorectal,"South Yorkshire, Bassetlaw, North Derbyshire and Hardwick","South Yorkshire, Bassetlaw, North Derbyshire and Hardwick",76.5
137 | Colon,Kent and Medway,Kent and Medway,76.4
138 | Bladder,"Somerset, Wiltshire, Avon and Gloucestershire","Somerset, Wiltshire, Avon and Gloucestershire",76.4
139 | Colon,"Somerset, Wiltshire, Avon and Gloucestershire","Somerset, Wiltshire, Avon and Gloucestershire",76.3
140 | Colon,"Humber, Coast and Vale","Humber, Coast and Vale",76.1
141 | Colon,Greater Manchester,Greater Manchester,76
142 | Colon,North East and Cumbria,North East and Cumbria,75.9
143 | Non-Hodgkin Lymphoma,Cheshire and Merseyside,Cheshire and Merseyside,75.8
144 | Kidney & Urinary Tract,East of England,East of England,75.8
145 | Non-Hodgkin Lymphoma,South East London,South East London,75.5
146 | Non-Hodgkin Lymphoma,Lancashire and South Cumbria,Lancashire and South Cumbria,75.4
147 | Bladder,"South Yorkshire, Bassetlaw, North Derbyshire and Hardwick","South Yorkshire, Bassetlaw, North Derbyshire and Hardwick",75.4
148 | Kidney & Urinary Tract,Kent and Medway,Kent and Medway,75.1
149 | Non-Hodgkin Lymphoma,"Humber, Coast and Vale","Humber, Coast and Vale",75
150 | Non-Hodgkin Lymphoma,North East and Cumbria,North East and Cumbria,74.5
151 | Non-Hodgkin Lymphoma,"South Yorkshire, Bassetlaw, North Derbyshire and Hardwick","South Yorkshire, Bassetlaw, North Derbyshire and Hardwick",74.2
152 | Colon,"South Yorkshire, Bassetlaw, North Derbyshire and Hardwick","South Yorkshire, Bassetlaw, North Derbyshire and Hardwick",73.9
153 | Kidney & Urinary Tract,East Midlands,East Midlands,73.4
154 | Stomach,South East London,South East London,53.9
155 | Stomach,North Central and North East London,North Central and North East London,51.4
156 | Stomach,North West and South West London,North West and South West London,51.4
157 | Oesophagus,Peninsula,Peninsula,51
158 | Oesophagus,"Humber, Coast and Vale","Humber, Coast and Vale",50.4
159 | Stomach,Peninsula,Peninsula,50.4
160 | Stomach,Wessex,Wessex,50.3
161 | Stomach,North East and Cumbria,North East and Cumbria,50.1
162 | Oesophagus,Wessex,Wessex,49.3
163 | Oesophagus,Thames Valley,Thames Valley,49.2
164 | Stomach,West Yorkshire and Harrogate,West Yorkshire and Harrogate,48.7
165 | Oesophagus,South East London,South East London,48.6
166 | Stomach,Surrey and Sussex,Surrey and Sussex,48.4
167 | Oesophagus,Surrey and Sussex,Surrey and Sussex,47.5
168 | Oesophagus,West Yorkshire and Harrogate,West Yorkshire and Harrogate,47.4
169 | Oesophagus,East Midlands,East Midlands,47.3
170 | Oesophagus,East of England,East of England,47.2
171 | Stomach,East Midlands,East Midlands,47
172 | Oesophagus,North East and Cumbria,North East and Cumbria,46.9
173 | Stomach,Thames Valley,Thames Valley,46.9
174 | Oesophagus,Lancashire and South Cumbria,Lancashire and South Cumbria,46.7
175 | Stomach,Greater Manchester,Greater Manchester,46.4
176 | Stomach,East of England,East of England,46.2
177 | Stomach,Lancashire and South Cumbria,Lancashire and South Cumbria,46.1
178 | Stomach,Cheshire and Merseyside,Cheshire and Merseyside,46
179 | Oesophagus,North Central and North East London,North Central and North East London,45.8
180 | Oesophagus,North West and South West London,North West and South West London,45.3
181 | Stomach,West Midlands,West Midlands,45.3
182 | Oesophagus,Greater Manchester,Greater Manchester,45.2
183 | Oesophagus,"Somerset, Wiltshire, Avon and Gloucestershire","Somerset, Wiltshire, Avon and Gloucestershire",45
184 | Oesophagus,West Midlands,West Midlands,44.3
185 | Oesophagus,Cheshire and Merseyside,Cheshire and Merseyside,44
186 | Stomach,"Humber, Coast and Vale","Humber, Coast and Vale",43.8
187 | Stomach,"South Yorkshire, Bassetlaw, North Derbyshire and Hardwick","South Yorkshire, Bassetlaw, North Derbyshire and Hardwick",43.3
188 | Stomach,"Somerset, Wiltshire, Avon and Gloucestershire","Somerset, Wiltshire, Avon and Gloucestershire",43.2
189 | Oesophagus,"South Yorkshire, Bassetlaw, North Derbyshire and Hardwick","South Yorkshire, Bassetlaw, North Derbyshire and Hardwick",42.9
190 | Stomach,Kent and Medway,Kent and Medway,42.4
191 | Oesophagus,Kent and Medway,Kent and Medway,41.1
192 | Lung,North West and South West London,North West and South West London,39.9
193 | Lung,South East London,South East London,38.7
194 | Lung,North Central and North East London,North Central and North East London,38.6
195 | Lung,Thames Valley,Thames Valley,37.7
196 | Lung,West Yorkshire and Harrogate,West Yorkshire and Harrogate,37.7
197 | Lung,Cheshire and Merseyside,Cheshire and Merseyside,37.5
198 | Lung,"Somerset, Wiltshire, Avon and Gloucestershire","Somerset, Wiltshire, Avon and Gloucestershire",37.4
199 | Lung,Wessex,Wessex,37
200 | Lung,Greater Manchester,Greater Manchester,36.8
201 | Lung,Peninsula,Peninsula,36.3
202 | Lung,Surrey and Sussex,Surrey and Sussex,36
203 | Lung,East of England,East of England,35.9
204 | Lung,"Humber, Coast and Vale","Humber, Coast and Vale",35.7
205 | Lung,East Midlands,East Midlands,35.6
206 | Lung,North East and Cumbria,North East and Cumbria,35.5
207 | Lung,"South Yorkshire, Bassetlaw, North Derbyshire and Hardwick","South Yorkshire, Bassetlaw, North Derbyshire and Hardwick",35.2
208 | Lung,West Midlands,West Midlands,34.1
209 | Lung,Kent and Medway,Kent and Medway,33.5
210 | Lung,Lancashire and South Cumbria,Lancashire and South Cumbria,32.9
211 |
--------------------------------------------------------------------------------