├── .editorconfig ├── .gitignore ├── LICENSE ├── README.md ├── angular.json ├── e2e ├── protractor.conf.js └── tsconfig.e2e.json ├── package-lock.json ├── package.json ├── resources └── screenshot.png ├── src ├── app │ ├── 01_line_chart │ │ ├── line-chart.component.css │ │ ├── line-chart.component.html │ │ └── line-chart.component.ts │ ├── 02_multi_series_line_chart │ │ ├── multi-series.component.css │ │ ├── multi-series.component.html │ │ └── multi-series.component.ts │ ├── 03_bar_chart │ │ ├── bar-chart.component.css │ │ ├── bar-chart.component.html │ │ └── bar-chart.component.ts │ ├── 04_stacked_bar_chart │ │ ├── stacked-bar-chart.component.css │ │ ├── stacked-bar-chart.component.html │ │ └── stacked-bar-chart.component.ts │ ├── 05_brush_zoom │ │ ├── brush-zoom.component.css │ │ ├── brush-zoom.component.html │ │ └── brush-zoom.component.ts │ ├── 06_pie_chart │ │ ├── pie-chart.component.css │ │ ├── pie-chart.component.html │ │ └── pie-chart.component.ts │ ├── 07_donut_chart │ │ ├── donut-chart.component.css │ │ ├── donut-chart.component.html │ │ └── donut-chart.component.ts │ ├── app.component.css │ ├── app.component.html │ ├── app.component.ts │ ├── app.module.ts │ └── shared │ │ ├── data04.ts │ │ ├── index.ts │ │ ├── population.ts │ │ ├── sp500.ts │ │ ├── statistics.ts │ │ ├── stocks.ts │ │ └── temperatures.ts ├── assets │ └── .gitkeep ├── browserslist ├── environments │ ├── environment.prod.ts │ └── environment.ts ├── favicon.ico ├── index.html ├── karma.conf.js ├── main.ts ├── polyfills.ts ├── styles.css ├── test.ts ├── tsconfig.app.json ├── tsconfig.spec.json └── tslint.json ├── tsconfig.json └── tslint.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 4 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /dist 5 | /tmp 6 | /out-tsc 7 | 8 | # dependencies 9 | /node_modules 10 | 11 | # IDEs and editors 12 | /.idea 13 | .project 14 | .classpath 15 | .c9/ 16 | *.launch 17 | .settings/ 18 | *.sublime-workspace 19 | 20 | # IDE - VSCode 21 | .vscode/* 22 | !.vscode/settings.json 23 | !.vscode/tasks.json 24 | !.vscode/launch.json 25 | !.vscode/extensions.json 26 | 27 | # misc 28 | /.sass-cache 29 | /connect.lock 30 | /coverage 31 | /libpeerconnection.log 32 | npm-debug.log 33 | yarn-error.log 34 | testem.log 35 | /typings 36 | 37 | # System Files 38 | .DS_Store 39 | Thumbs.db 40 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2016 David Atencia 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # D3.js with Angular Examples 2 | 3 | This project shows how to integrate D3.js with Angular. 4 | 5 | > It was generated with [Angular CLI](https://github.com/angular/angular-cli) version 6.0.8. 6 | 7 | We'll implement a few D3.js examples described in [bl.ocks.org](http://bl.ocks.org/) 8 | in Angular. 9 | 10 | ![Examples](./resources/screenshot.png "Examples") 11 | 12 | ## Examples Summary 13 | 14 | - [Line Chart 4.0](http://bl.ocks.org/mbostock/02d893e3486c70c4475f) 15 | - [Multi-Series Line Chart](http://bl.ocks.org/mbostock/3884955) 16 | - [Bar Chart](http://bl.ocks.org/mbostock/3885304) 17 | - [Stacked Bar Chart](https://bl.ocks.org/mbostock/3886208) 18 | - [Brush & Zoom](https://bl.ocks.org/mbostock/34f08d5e11952a80609169b7917d4172) 19 | - [Pie Chart](http://bl.ocks.org/mbostock/3887235) 20 | - [Donut Chart](https://bl.ocks.org/mbostock/3887193) 21 | 22 | ## Prerequisites 23 | 24 | To follow these examples you need to install [Node.js and npm](https://nodejs.org/en/) if they are not already installed on your computer. 25 | 26 | > Verify that you are running at least node v6.x.x and npm 3.x.x by running node -v and npm -v in a terminal / console window. Older versions may produce errors. 27 | 28 | ## Steps 29 | 30 | - Clone this repo into a new project folder. 31 | 32 | ```bash 33 | $ git clone https://github.com/datencia/d3js-angular-examples.git 34 | $ cd d3js-angular-examples 35 | ``` 36 | 37 | - Install the npm packages described in the `package.json`: 38 | 39 | ```bash 40 | $ npm install 41 | ``` 42 | 43 | - Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. 44 | -------------------------------------------------------------------------------- /angular.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json", 3 | "version": 1, 4 | "newProjectRoot": "projects", 5 | "projects": { 6 | "d3js-angular-example": { 7 | "root": "", 8 | "sourceRoot": "src", 9 | "projectType": "application", 10 | "prefix": "app", 11 | "schematics": {}, 12 | "architect": { 13 | "build": { 14 | "builder": "@angular-devkit/build-angular:browser", 15 | "options": { 16 | "outputPath": "dist/d3js-angular-example", 17 | "index": "src/index.html", 18 | "main": "src/main.ts", 19 | "polyfills": "src/polyfills.ts", 20 | "tsConfig": "src/tsconfig.app.json", 21 | "assets": [ 22 | "src/favicon.ico", 23 | "src/assets" 24 | ], 25 | "styles": [ 26 | "src/styles.css" 27 | ], 28 | "scripts": [] 29 | }, 30 | "configurations": { 31 | "production": { 32 | "fileReplacements": [ 33 | { 34 | "replace": "src/environments/environment.ts", 35 | "with": "src/environments/environment.prod.ts" 36 | } 37 | ], 38 | "optimization": true, 39 | "outputHashing": "all", 40 | "sourceMap": false, 41 | "extractCss": true, 42 | "namedChunks": false, 43 | "aot": true, 44 | "extractLicenses": true, 45 | "vendorChunk": false, 46 | "buildOptimizer": true 47 | } 48 | } 49 | }, 50 | "serve": { 51 | "builder": "@angular-devkit/build-angular:dev-server", 52 | "options": { 53 | "browserTarget": "d3js-angular-example:build" 54 | }, 55 | "configurations": { 56 | "production": { 57 | "browserTarget": "d3js-angular-example:build:production" 58 | } 59 | } 60 | }, 61 | "extract-i18n": { 62 | "builder": "@angular-devkit/build-angular:extract-i18n", 63 | "options": { 64 | "browserTarget": "d3js-angular-example:build" 65 | } 66 | }, 67 | "test": { 68 | "builder": "@angular-devkit/build-angular:karma", 69 | "options": { 70 | "main": "src/test.ts", 71 | "polyfills": "src/polyfills.ts", 72 | "tsConfig": "src/tsconfig.spec.json", 73 | "karmaConfig": "src/karma.conf.js", 74 | "styles": [ 75 | "src/styles.css" 76 | ], 77 | "scripts": [], 78 | "assets": [ 79 | "src/favicon.ico", 80 | "src/assets" 81 | ] 82 | } 83 | }, 84 | "lint": { 85 | "builder": "@angular-devkit/build-angular:tslint", 86 | "options": { 87 | "tsConfig": [ 88 | "src/tsconfig.app.json", 89 | "src/tsconfig.spec.json" 90 | ], 91 | "exclude": [ 92 | "**/node_modules/**" 93 | ] 94 | } 95 | } 96 | } 97 | }, 98 | "d3js-angular-example-e2e": { 99 | "root": "e2e/", 100 | "projectType": "application", 101 | "architect": { 102 | "e2e": { 103 | "builder": "@angular-devkit/build-angular:protractor", 104 | "options": { 105 | "protractorConfig": "e2e/protractor.conf.js", 106 | "devServerTarget": "d3js-angular-example:serve" 107 | }, 108 | "configurations": { 109 | "production": { 110 | "devServerTarget": "d3js-angular-example:serve:production" 111 | } 112 | } 113 | }, 114 | "lint": { 115 | "builder": "@angular-devkit/build-angular:tslint", 116 | "options": { 117 | "tsConfig": "e2e/tsconfig.e2e.json", 118 | "exclude": [ 119 | "**/node_modules/**" 120 | ] 121 | } 122 | } 123 | } 124 | } 125 | }, 126 | "defaultProject": "d3js-angular-example" 127 | } 128 | -------------------------------------------------------------------------------- /e2e/protractor.conf.js: -------------------------------------------------------------------------------- 1 | // Protractor configuration file, see link for more information 2 | // https://github.com/angular/protractor/blob/master/lib/config.ts 3 | 4 | const { SpecReporter } = require('jasmine-spec-reporter'); 5 | 6 | exports.config = { 7 | allScriptsTimeout: 11000, 8 | specs: [ 9 | './src/**/*.e2e-spec.ts' 10 | ], 11 | capabilities: { 12 | 'browserName': 'chrome' 13 | }, 14 | directConnect: true, 15 | baseUrl: 'http://localhost:4200/', 16 | framework: 'jasmine', 17 | jasmineNodeOpts: { 18 | showColors: true, 19 | defaultTimeoutInterval: 30000, 20 | print: function() {} 21 | }, 22 | onPrepare() { 23 | require('ts-node').register({ 24 | project: require('path').join(__dirname, './tsconfig.e2e.json') 25 | }); 26 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); 27 | } 28 | }; 29 | -------------------------------------------------------------------------------- /e2e/tsconfig.e2e.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "commonjs", 6 | "target": "es5", 7 | "types": [ 8 | "jasmine", 9 | "jasminewd2", 10 | "node" 11 | ] 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "d3js-angular-example", 3 | "version": "0.0.0", 4 | "scripts": { 5 | "ng": "ng", 6 | "start": "ng serve", 7 | "build": "ng build", 8 | "test": "ng test", 9 | "lint": "ng lint", 10 | "e2e": "ng e2e" 11 | }, 12 | "private": true, 13 | "dependencies": { 14 | "@angular/animations": "6.0.3", 15 | "@angular/cdk": "6.2.1", 16 | "@angular/common": "6.0.3", 17 | "@angular/compiler": "6.0.3", 18 | "@angular/core": "6.0.3", 19 | "@angular/forms": "6.0.3", 20 | "@angular/http": "6.0.3", 21 | "@angular/material": "6.2.1", 22 | "@angular/platform-browser": "6.0.3", 23 | "@angular/platform-browser-dynamic": "6.0.3", 24 | "@angular/router": "6.0.3", 25 | "core-js": "2.5.4", 26 | "d3": "5.4.0", 27 | "rxjs": "6.0.0", 28 | "zone.js": "0.8.26" 29 | }, 30 | "devDependencies": { 31 | "@angular-devkit/build-angular": "0.6.8", 32 | "@angular/cli": "6.0.8", 33 | "@angular/compiler-cli": "6.0.3", 34 | "@angular/language-service": "6.0.3", 35 | "@types/d3-array": "1.2.1", 36 | "@types/d3-axis": "1.0.10", 37 | "@types/d3-brush": "1.0.8", 38 | "@types/d3-color": "1.2.1", 39 | "@types/d3-scale": "2.0.1", 40 | "@types/d3-scale-chromatic": "1.2.0", 41 | "@types/d3-selection": "1.3.1", 42 | "@types/d3-shape": "1.2.3", 43 | "@types/d3-time-format": "2.1.0", 44 | "@types/d3-zoom": "1.7.1", 45 | "@types/jasmine": "2.8.6", 46 | "@types/jasminewd2": "2.0.3", 47 | "@types/node": "8.9.4", 48 | "codelyzer": "4.2.1", 49 | "jasmine-core": "2.99.1", 50 | "jasmine-spec-reporter": "4.2.1", 51 | "karma": "1.7.1", 52 | "karma-chrome-launcher": "2.2.0", 53 | "karma-coverage-istanbul-reporter": "2.0.0", 54 | "karma-jasmine": "1.1.1", 55 | "karma-jasmine-html-reporter": "0.2.2", 56 | "protractor": "5.3.0", 57 | "ts-node": "5.0.1", 58 | "tslint": "5.9.1", 59 | "typescript": "2.7.2" 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /resources/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datencia/d3js-angular-examples/15fb9bfac99246a8f8985f8e464fc1bebeb3823d/resources/screenshot.png -------------------------------------------------------------------------------- /src/app/01_line_chart/line-chart.component.css: -------------------------------------------------------------------------------- 1 | .axis { 2 | font: 10px sans-serif; 3 | } 4 | 5 | .axis path, 6 | .axis line { 7 | fill: none; 8 | stroke: #000; 9 | shape-rendering: crispEdges; 10 | } 11 | 12 | .axis-title { 13 | fill: none; 14 | stroke: black; 15 | stroke-width: 0.5px; 16 | } 17 | 18 | 19 | .axis--x path { 20 | /*display: none;*/ 21 | } 22 | 23 | .line { 24 | fill: none; 25 | stroke: steelblue; 26 | stroke-width: 1.5px; 27 | } 28 | -------------------------------------------------------------------------------- /src/app/01_line_chart/line-chart.component.html: -------------------------------------------------------------------------------- 1 |

{{ title }}

2 | 3 | -------------------------------------------------------------------------------- /src/app/01_line_chart/line-chart.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core'; 2 | 3 | import * as d3 from 'd3-selection'; 4 | import * as d3Scale from 'd3-scale'; 5 | import * as d3Shape from 'd3-shape'; 6 | import * as d3Array from 'd3-array'; 7 | import * as d3Axis from 'd3-axis'; 8 | 9 | import { STOCKS } from '../shared'; 10 | 11 | @Component({ 12 | selector: 'app-line-chart', 13 | encapsulation: ViewEncapsulation.None, 14 | templateUrl: './line-chart.component.html', 15 | styleUrls: ['./line-chart.component.css'] 16 | }) 17 | export class LineChartComponent implements OnInit { 18 | 19 | title = 'Line Chart'; 20 | 21 | private margin = {top: 20, right: 20, bottom: 30, left: 50}; 22 | private width: number; 23 | private height: number; 24 | private x: any; 25 | private y: any; 26 | private svg: any; 27 | private line: d3Shape.Line<[number, number]>; 28 | 29 | constructor() { 30 | this.width = 900 - this.margin.left - this.margin.right; 31 | this.height = 500 - this.margin.top - this.margin.bottom; 32 | } 33 | 34 | ngOnInit() { 35 | this.initSvg(); 36 | this.initAxis(); 37 | this.drawAxis(); 38 | this.drawLine(); 39 | } 40 | 41 | private initSvg() { 42 | this.svg = d3.select('svg') 43 | .append('g') 44 | .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')'); 45 | } 46 | 47 | private initAxis() { 48 | this.x = d3Scale.scaleTime().range([0, this.width]); 49 | this.y = d3Scale.scaleLinear().range([this.height, 0]); 50 | this.x.domain(d3Array.extent(STOCKS, (d) => d.date )); 51 | this.y.domain(d3Array.extent(STOCKS, (d) => d.value )); 52 | } 53 | 54 | private drawAxis() { 55 | 56 | this.svg.append('g') 57 | .attr('class', 'axis axis--x') 58 | .attr('transform', 'translate(0,' + this.height + ')') 59 | .call(d3Axis.axisBottom(this.x)); 60 | 61 | this.svg.append('g') 62 | .attr('class', 'axis axis--y') 63 | .call(d3Axis.axisLeft(this.y)) 64 | .append('text') 65 | .attr('class', 'axis-title') 66 | .attr('transform', 'rotate(-90)') 67 | .attr('y', 6) 68 | .attr('dy', '.71em') 69 | .style('text-anchor', 'end') 70 | .text('Price ($)'); 71 | } 72 | 73 | private drawLine() { 74 | this.line = d3Shape.line() 75 | .x( (d: any) => this.x(d.date) ) 76 | .y( (d: any) => this.y(d.value) ); 77 | 78 | this.svg.append('path') 79 | .datum(STOCKS) 80 | .attr('class', 'line') 81 | .attr('d', this.line); 82 | } 83 | 84 | } 85 | -------------------------------------------------------------------------------- /src/app/02_multi_series_line_chart/multi-series.component.css: -------------------------------------------------------------------------------- 1 | .axis--x path { 2 | //display: none; 3 | } 4 | 5 | .line { 6 | fill: none; 7 | stroke: steelblue; 8 | stroke-width: 1.5px; 9 | } 10 | -------------------------------------------------------------------------------- /src/app/02_multi_series_line_chart/multi-series.component.html: -------------------------------------------------------------------------------- 1 |

{{ title }}

2 | 3 | -------------------------------------------------------------------------------- /src/app/02_multi_series_line_chart/multi-series.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core'; 2 | 3 | import * as d3 from 'd3-selection'; 4 | import * as d3Scale from 'd3-scale'; 5 | import * as d3ScaleChromatic from 'd3-scale-chromatic'; 6 | import * as d3Shape from 'd3-shape'; 7 | import * as d3Array from 'd3-array'; 8 | import * as d3Axis from 'd3-axis'; 9 | 10 | import { TEMPERATURES } from '../shared'; 11 | 12 | @Component({ 13 | selector: 'app-multi-series-line-chart', 14 | encapsulation: ViewEncapsulation.None, 15 | templateUrl: './multi-series.component.html', 16 | styleUrls: ['./multi-series.component.css'] 17 | }) 18 | export class MultiSeriesComponent implements OnInit { 19 | 20 | title = 'Multi-Series Line Chart'; 21 | 22 | data: any; 23 | 24 | svg: any; 25 | margin = {top: 20, right: 80, bottom: 30, left: 50}; 26 | g: any; 27 | width: number; 28 | height: number; 29 | x; 30 | y; 31 | z; 32 | line; 33 | 34 | constructor() { 35 | 36 | } 37 | 38 | ngOnInit() { 39 | 40 | this.data = TEMPERATURES.map((v) => v.values.map((v) => v.date ))[0]; 41 | //.reduce((a, b) => a.concat(b), []); 42 | 43 | this.initChart(); 44 | this.drawAxis(); 45 | this.drawPath(); 46 | } 47 | 48 | private initChart(): void { 49 | this.svg = d3.select('svg'); 50 | 51 | this.width = this.svg.attr('width') - this.margin.left - this.margin.right; 52 | this.height = this.svg.attr('height') - this.margin.top - this.margin.bottom; 53 | 54 | this.g = this.svg.append('g').attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')'); 55 | 56 | this.x = d3Scale.scaleTime().range([0, this.width]); 57 | this.y = d3Scale.scaleLinear().range([this.height, 0]); 58 | this.z = d3Scale.scaleOrdinal(d3ScaleChromatic.schemeCategory10); 59 | 60 | this.line = d3Shape.line() 61 | .curve(d3Shape.curveBasis) 62 | .x( (d: any) => this.x(d.date) ) 63 | .y( (d: any) => this.y(d.temperature) ); 64 | 65 | this.x.domain(d3Array.extent(this.data, (d: Date) => d )); 66 | 67 | this.y.domain([ 68 | d3Array.min(TEMPERATURES, function(c) { return d3Array.min(c.values, function(d) { return d.temperature; }); }), 69 | d3Array.max(TEMPERATURES, function(c) { return d3Array.max(c.values, function(d) { return d.temperature; }); }) 70 | ]); 71 | 72 | this.z.domain(TEMPERATURES.map(function(c) { return c.id; })); 73 | } 74 | 75 | private drawAxis(): void { 76 | this.g.append('g') 77 | .attr('class', 'axis axis--x') 78 | .attr('transform', 'translate(0,' + this.height + ')') 79 | .call(d3Axis.axisBottom(this.x)); 80 | 81 | this.g.append('g') 82 | .attr('class', 'axis axis--y') 83 | .call(d3Axis.axisLeft(this.y)) 84 | .append('text') 85 | .attr('transform', 'rotate(-90)') 86 | .attr('y', 6) 87 | .attr('dy', '0.71em') 88 | .attr('fill', '#000') 89 | .text('Temperature, ºF'); 90 | } 91 | 92 | private drawPath(): void { 93 | let city = this.g.selectAll('.city') 94 | .data(TEMPERATURES) 95 | .enter().append('g') 96 | .attr('class', 'city'); 97 | 98 | city.append('path') 99 | .attr('class', 'line') 100 | .attr('d', (d) => this.line(d.values) ) 101 | .style('stroke', (d) => this.z(d.id) ); 102 | 103 | city.append('text') 104 | .datum(function(d) { return {id: d.id, value: d.values[d.values.length - 1]}; }) 105 | .attr('transform', (d) => 'translate(' + this.x(d.value.date) + ',' + this.y(d.value.temperature) + ')' ) 106 | .attr('x', 3) 107 | .attr('dy', '0.35em') 108 | .style('font', '10px sans-serif') 109 | .text(function(d) { return d.id; }); 110 | } 111 | 112 | } 113 | -------------------------------------------------------------------------------- /src/app/03_bar_chart/bar-chart.component.css: -------------------------------------------------------------------------------- 1 | .bar { 2 | fill: steelblue; 3 | } 4 | 5 | .bar:hover { 6 | fill: brown; 7 | } 8 | 9 | .axis-title { 10 | fill: none; 11 | stroke: black; 12 | stroke-width: 0.5px; 13 | } 14 | -------------------------------------------------------------------------------- /src/app/03_bar_chart/bar-chart.component.html: -------------------------------------------------------------------------------- 1 |

{{ title }}

2 | 3 | -------------------------------------------------------------------------------- /src/app/03_bar_chart/bar-chart.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core'; 2 | 3 | import * as d3 from 'd3-selection'; 4 | import * as d3Scale from 'd3-scale'; 5 | import * as d3Array from 'd3-array'; 6 | import * as d3Axis from 'd3-axis'; 7 | 8 | import { STATISTICS } from '../shared'; 9 | 10 | @Component({ 11 | selector: 'app-bar-chart', 12 | encapsulation: ViewEncapsulation.None, 13 | templateUrl: './bar-chart.component.html', 14 | styleUrls: ['./bar-chart.component.css'] 15 | }) 16 | export class BarChartComponent implements OnInit { 17 | 18 | title = 'Bar Chart'; 19 | 20 | private width: number; 21 | private height: number; 22 | private margin = {top: 20, right: 20, bottom: 30, left: 40}; 23 | 24 | private x: any; 25 | private y: any; 26 | private svg: any; 27 | private g: any; 28 | 29 | constructor() {} 30 | 31 | ngOnInit() { 32 | this.initSvg(); 33 | this.initAxis(); 34 | this.drawAxis(); 35 | this.drawBars(); 36 | } 37 | 38 | private initSvg() { 39 | this.svg = d3.select('svg'); 40 | this.width = +this.svg.attr('width') - this.margin.left - this.margin.right; 41 | this.height = +this.svg.attr('height') - this.margin.top - this.margin.bottom; 42 | this.g = this.svg.append('g') 43 | .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')'); 44 | } 45 | 46 | private initAxis() { 47 | this.x = d3Scale.scaleBand().rangeRound([0, this.width]).padding(0.1); 48 | this.y = d3Scale.scaleLinear().rangeRound([this.height, 0]); 49 | this.x.domain(STATISTICS.map((d) => d.letter)); 50 | this.y.domain([0, d3Array.max(STATISTICS, (d) => d.frequency)]); 51 | } 52 | 53 | private drawAxis() { 54 | this.g.append('g') 55 | .attr('class', 'axis axis--x') 56 | .attr('transform', 'translate(0,' + this.height + ')') 57 | .call(d3Axis.axisBottom(this.x)); 58 | this.g.append('g') 59 | .attr('class', 'axis axis--y') 60 | .call(d3Axis.axisLeft(this.y).ticks(10, '%')) 61 | .append('text') 62 | .attr('class', 'axis-title') 63 | .attr('transform', 'rotate(-90)') 64 | .attr('y', 6) 65 | .attr('dy', '0.71em') 66 | .attr('text-anchor', 'end') 67 | .text('Frequency'); 68 | } 69 | 70 | private drawBars() { 71 | this.g.selectAll('.bar') 72 | .data(STATISTICS) 73 | .enter().append('rect') 74 | .attr('class', 'bar') 75 | .attr('x', (d) => this.x(d.letter) ) 76 | .attr('y', (d) => this.y(d.frequency) ) 77 | .attr('width', this.x.bandwidth()) 78 | .attr('height', (d) => this.height - this.y(d.frequency) ); 79 | } 80 | 81 | } 82 | -------------------------------------------------------------------------------- /src/app/04_stacked_bar_chart/stacked-bar-chart.component.css: -------------------------------------------------------------------------------- 1 | .axis .domain { 2 | display: none; 3 | } 4 | -------------------------------------------------------------------------------- /src/app/04_stacked_bar_chart/stacked-bar-chart.component.html: -------------------------------------------------------------------------------- 1 |

{{ title }}

2 | 3 | -------------------------------------------------------------------------------- /src/app/04_stacked_bar_chart/stacked-bar-chart.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core'; 2 | 3 | import * as d3 from 'd3-selection'; 4 | import * as d3Scale from 'd3-scale'; 5 | import * as d3Shape from 'd3-shape'; 6 | import * as d3Axis from 'd3-axis'; 7 | import * as d3Array from 'd3-array'; 8 | 9 | import { SAMPLE_DATA } from '../shared/data04'; 10 | 11 | export interface Margin { 12 | top: number; 13 | right: number; 14 | bottom: number; 15 | left: number; 16 | } 17 | 18 | @Component({ 19 | selector: 'app-stacked-bar-chart', 20 | encapsulation: ViewEncapsulation.None, 21 | templateUrl: './stacked-bar-chart.component.html', 22 | styleUrls: ['./stacked-bar-chart.component.css'] 23 | }) 24 | export class StackedBarChartComponent implements OnInit { 25 | 26 | title = 'Stacked Bar Chart'; 27 | 28 | private margin: Margin; 29 | 30 | private width: number; 31 | private height: number; 32 | 33 | private svg: any; // TODO replace all `any` by the right type 34 | 35 | private x: any; 36 | private y: any; 37 | private z: any; 38 | private g: any; 39 | 40 | constructor() {} 41 | 42 | ngOnInit() { 43 | this.initMargins(); 44 | this.initSvg(); 45 | this.drawChart(SAMPLE_DATA); 46 | } 47 | 48 | private initMargins() { 49 | this.margin = {top: 20, right: 20, bottom: 30, left: 40}; 50 | } 51 | 52 | private initSvg() { 53 | this.svg = d3.select('svg'); 54 | 55 | this.width = +this.svg.attr('width') - this.margin.left - this.margin.right; 56 | this.height = +this.svg.attr('height') - this.margin.top - this.margin.bottom; 57 | this.g = this.svg.append('g').attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')'); 58 | 59 | this.x = d3Scale.scaleBand() 60 | .rangeRound([0, this.width]) 61 | .paddingInner(0.05) 62 | .align(0.1); 63 | this.y = d3Scale.scaleLinear() 64 | .rangeRound([this.height, 0]); 65 | this.z = d3Scale.scaleOrdinal() 66 | .range(['#98abc5', '#8a89a6', '#7b6888', '#6b486b', '#a05d56', '#d0743c', '#ff8c00']); 67 | } 68 | 69 | private drawChart(data: any[]) { 70 | 71 | let keys = Object.getOwnPropertyNames(data[0]).slice(1); 72 | 73 | data = data.map(v => { 74 | v.total = keys.map(key => v[key]).reduce((a, b) => a + b, 0); 75 | return v; 76 | }); 77 | data.sort((a: any, b: any) => b.total - a.total); 78 | 79 | this.x.domain(data.map((d: any) => d.State)); 80 | this.y.domain([0, d3Array.max(data, (d: any) => d.total)]).nice(); 81 | this.z.domain(keys); 82 | 83 | this.g.append('g') 84 | .selectAll('g') 85 | .data(d3Shape.stack().keys(keys)(data)) 86 | .enter().append('g') 87 | .attr('fill', d => this.z(d.key)) 88 | .selectAll('rect') 89 | .data(d => d) 90 | .enter().append('rect') 91 | .attr('x', d => this.x(d.data.State)) 92 | .attr('y', d => this.y(d[1])) 93 | .attr('height', d => this.y(d[0]) - this.y(d[1])) 94 | .attr('width', this.x.bandwidth()); 95 | 96 | this.g.append('g') 97 | .attr('class', 'axis') 98 | .attr('transform', 'translate(0,' + this.height + ')') 99 | .call(d3Axis.axisBottom(this.x)); 100 | 101 | this.g.append('g') 102 | .attr('class', 'axis') 103 | .call(d3Axis.axisLeft(this.y).ticks(null, 's')) 104 | .append('text') 105 | .attr('x', 2) 106 | .attr('y', this.y(this.y.ticks().pop()) + 0.5) 107 | .attr('dy', '0.32em') 108 | .attr('fill', '#000') 109 | .attr('font-weight', 'bold') 110 | .attr('text-anchor', 'start') 111 | .text('Population'); 112 | 113 | let legend = this.g.append('g') 114 | .attr('font-family', 'sans-serif') 115 | .attr('font-size', 10) 116 | .attr('text-anchor', 'end') 117 | .selectAll('g') 118 | .data(keys.slice().reverse()) 119 | .enter().append('g') 120 | .attr('transform', (d, i) => 'translate(0,' + i * 20 + ')'); 121 | 122 | legend.append('rect') 123 | .attr('x', this.width - 19) 124 | .attr('width', 19) 125 | .attr('height', 19) 126 | .attr('fill', this.z); 127 | 128 | legend.append('text') 129 | .attr('x', this.width - 24) 130 | .attr('y', 9.5) 131 | .attr('dy', '0.32em') 132 | .text(d => d); 133 | } 134 | 135 | } 136 | -------------------------------------------------------------------------------- /src/app/05_brush_zoom/brush-zoom.component.css: -------------------------------------------------------------------------------- 1 | .area { 2 | fill: steelblue; 3 | clip-path: url(#clip); 4 | } 5 | 6 | .zoom { 7 | cursor: move; 8 | fill: none; 9 | pointer-events: all; 10 | } 11 | -------------------------------------------------------------------------------- /src/app/05_brush_zoom/brush-zoom.component.html: -------------------------------------------------------------------------------- 1 |

{{ title }}

2 | 3 | -------------------------------------------------------------------------------- /src/app/05_brush_zoom/brush-zoom.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core'; 2 | 3 | import * as d3 from 'd3-selection'; 4 | import * as d3Scale from 'd3-scale'; 5 | import * as d3Shape from 'd3-shape'; 6 | import * as d3Axis from 'd3-axis'; 7 | import * as d3Zoom from 'd3-zoom'; 8 | import * as d3Brush from 'd3-brush'; 9 | import * as d3Array from 'd3-array'; 10 | import * as d3TimeFormat from 'd3-time-format'; 11 | 12 | import { SP500 } from '../shared'; 13 | 14 | export interface Margin { 15 | top: number; 16 | right: number; 17 | bottom: number; 18 | left: number; 19 | } 20 | 21 | interface Stock { 22 | date: Date; 23 | price: number; 24 | } 25 | 26 | @Component({ 27 | selector: 'app-brush-zoom', 28 | encapsulation: ViewEncapsulation.None, 29 | templateUrl: './brush-zoom.component.html', 30 | styleUrls: ['./brush-zoom.component.css'] 31 | }) 32 | export class BrushZoomComponent implements OnInit { 33 | 34 | title = 'Brush & Zoom'; 35 | 36 | private margin: Margin; 37 | private margin2: Margin; 38 | 39 | private width: number; 40 | private height: number; 41 | private height2: number; 42 | 43 | private svg: any; // TODO replace all `any` by the right type 44 | 45 | private x: any; 46 | private x2: any; 47 | private y: any; 48 | private y2: any; 49 | 50 | private xAxis: any; 51 | private xAxis2: any; 52 | private yAxis: any; 53 | 54 | private context: any; 55 | private brush: any; 56 | private zoom: any; 57 | private area: any; 58 | private area2: any; 59 | private focus: any; 60 | 61 | private parseDate = d3TimeFormat.timeParse('%b %Y'); 62 | 63 | constructor() { 64 | } 65 | 66 | ngOnInit() { 67 | this.initMargins(); 68 | this.initSvg(); 69 | this.drawChart(this.parseData(SP500)); 70 | } 71 | 72 | private initMargins() { 73 | this.margin = {top: 20, right: 20, bottom: 110, left: 40}; 74 | this.margin2 = {top: 430, right: 20, bottom: 30, left: 40}; 75 | } 76 | 77 | private parseData(data: any[]): Stock[] { 78 | return data.map(v => {date: this.parseDate(v.date), price: v.price}); 79 | } 80 | 81 | private initSvg() { 82 | this.svg = d3.select('svg'); 83 | 84 | this.width = +this.svg.attr('width') - this.margin.left - this.margin.right; 85 | this.height = +this.svg.attr('height') - this.margin.top - this.margin.bottom; 86 | this.height2 = +this.svg.attr('height') - this.margin2.top - this.margin2.bottom; 87 | 88 | this.x = d3Scale.scaleTime().range([0, this.width]); 89 | this.x2 = d3Scale.scaleTime().range([0, this.width]); 90 | this.y = d3Scale.scaleLinear().range([this.height, 0]); 91 | this.y2 = d3Scale.scaleLinear().range([this.height2, 0]); 92 | 93 | this.xAxis = d3Axis.axisBottom(this.x); 94 | this.xAxis2 = d3Axis.axisBottom(this.x2); 95 | this.yAxis = d3Axis.axisLeft(this.y); 96 | 97 | this.brush = d3Brush.brushX() 98 | .extent([[0, 0], [this.width, this.height2]]) 99 | .on('brush end', this.brushed.bind(this)); 100 | 101 | this.zoom = d3Zoom.zoom() 102 | .scaleExtent([1, Infinity]) 103 | .translateExtent([[0, 0], [this.width, this.height]]) 104 | .extent([[0, 0], [this.width, this.height]]) 105 | .on('zoom', this.zoomed.bind(this)); 106 | 107 | this.area = d3Shape.area() 108 | .curve(d3Shape.curveMonotoneX) 109 | .x((d: any) => this.x(d.date)) 110 | .y0(this.height) 111 | .y1((d: any) => this.y(d.price)); 112 | 113 | this.area2 = d3Shape.area() 114 | .curve(d3Shape.curveMonotoneX) 115 | .x((d: any) => this.x2(d.date)) 116 | .y0(this.height2) 117 | .y1((d: any) => this.y2(d.price)); 118 | 119 | this.svg.append('defs').append('clipPath') 120 | .attr('id', 'clip') 121 | .append('rect') 122 | .attr('width', this.width) 123 | .attr('height', this.height); 124 | 125 | this.focus = this.svg.append('g') 126 | .attr('class', 'focus') 127 | .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')'); 128 | 129 | this.context = this.svg.append('g') 130 | .attr('class', 'context') 131 | .attr('transform', 'translate(' + this.margin2.left + ',' + this.margin2.top + ')'); 132 | } 133 | 134 | private brushed() { 135 | if (d3.event.sourceEvent && d3.event.sourceEvent.type === 'zoom') return; // ignore brush-by-zoom 136 | let s = d3.event.selection || this.x2.range(); 137 | this.x.domain(s.map(this.x2.invert, this.x2)); 138 | this.focus.select('.area').attr('d', this.area); 139 | this.focus.select('.axis--x').call(this.xAxis); 140 | this.svg.select('.zoom').call(this.zoom.transform, d3Zoom.zoomIdentity 141 | .scale(this.width / (s[1] - s[0])) 142 | .translate(-s[0], 0)); 143 | } 144 | 145 | private zoomed() { 146 | if (d3.event.sourceEvent && d3.event.sourceEvent.type === 'brush') return; // ignore zoom-by-brush 147 | let t = d3.event.transform; 148 | this.x.domain(t.rescaleX(this.x2).domain()); 149 | this.focus.select('.area').attr('d', this.area); 150 | this.focus.select('.axis--x').call(this.xAxis); 151 | this.context.select('.brush').call(this.brush.move, this.x.range().map(t.invertX, t)); 152 | } 153 | 154 | private drawChart(data: Stock[]) { 155 | 156 | this.x.domain(d3Array.extent(data, (d: Stock) => d.date)); 157 | this.y.domain([0, d3Array.max(data, (d: Stock) => d.price)]); 158 | this.x2.domain(this.x.domain()); 159 | this.y2.domain(this.y.domain()); 160 | 161 | this.focus.append('path') 162 | .datum(data) 163 | .attr('class', 'area') 164 | .attr('d', this.area); 165 | 166 | this.focus.append('g') 167 | .attr('class', 'axis axis--x') 168 | .attr('transform', 'translate(0,' + this.height + ')') 169 | .call(this.xAxis); 170 | 171 | this.focus.append('g') 172 | .attr('class', 'axis axis--y') 173 | .call(this.yAxis); 174 | 175 | this.context.append('path') 176 | .datum(data) 177 | .attr('class', 'area') 178 | .attr('d', this.area2); 179 | 180 | this.context.append('g') 181 | .attr('class', 'axis axis--x') 182 | .attr('transform', 'translate(0,' + this.height2 + ')') 183 | .call(this.xAxis2); 184 | 185 | this.context.append('g') 186 | .attr('class', 'brush') 187 | .call(this.brush) 188 | .call(this.brush.move, this.x.range()); 189 | 190 | this.svg.append('rect') 191 | .attr('class', 'zoom') 192 | .attr('width', this.width) 193 | .attr('height', this.height) 194 | .attr('transform', 'translate(' + this.margin.left + ',' + this.margin.top + ')') 195 | .call(this.zoom); 196 | } 197 | 198 | } 199 | -------------------------------------------------------------------------------- /src/app/06_pie_chart/pie-chart.component.css: -------------------------------------------------------------------------------- 1 | .arc text { 2 | font: 10px sans-serif; 3 | text-anchor: middle; 4 | } 5 | 6 | .arc path { 7 | stroke: #fff; 8 | } 9 | -------------------------------------------------------------------------------- /src/app/06_pie_chart/pie-chart.component.html: -------------------------------------------------------------------------------- 1 |

{{ title }}

2 | 3 | -------------------------------------------------------------------------------- /src/app/06_pie_chart/pie-chart.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core'; 2 | 3 | import * as d3 from 'd3-selection'; 4 | import * as d3Scale from 'd3-scale'; 5 | import * as d3Shape from 'd3-shape'; 6 | 7 | import { POPULATION } from '../shared'; 8 | 9 | @Component({ 10 | selector: 'app-pie-chart', 11 | encapsulation: ViewEncapsulation.None, 12 | templateUrl: './pie-chart.component.html', 13 | styleUrls: ['./pie-chart.component.css'] 14 | }) 15 | export class PieChartComponent implements OnInit { 16 | 17 | title = 'Pie Chart'; 18 | 19 | private margin = {top: 20, right: 20, bottom: 30, left: 50}; 20 | private width: number; 21 | private height: number; 22 | private radius: number; 23 | 24 | private arc: any; 25 | private labelArc: any; 26 | private pie: any; 27 | private color: any; 28 | private svg: any; 29 | 30 | constructor() { 31 | this.width = 900 - this.margin.left - this.margin.right; 32 | this.height = 500 - this.margin.top - this.margin.bottom; 33 | this.radius = Math.min(this.width, this.height) / 2; 34 | } 35 | 36 | ngOnInit() { 37 | this.initSvg(); 38 | this.drawPie(); 39 | } 40 | 41 | private initSvg() { 42 | this.color = d3Scale.scaleOrdinal() 43 | .range(['#98abc5', '#8a89a6', '#7b6888', '#6b486b', '#a05d56', '#d0743c', '#ff8c00']); 44 | this.arc = d3Shape.arc() 45 | .outerRadius(this.radius - 10) 46 | .innerRadius(0); 47 | this.labelArc = d3Shape.arc() 48 | .outerRadius(this.radius - 40) 49 | .innerRadius(this.radius - 40); 50 | this.pie = d3Shape.pie() 51 | .sort(null) 52 | .value((d: any) => d.population); 53 | this.svg = d3.select('svg') 54 | .append('g') 55 | .attr('transform', 'translate(' + this.width / 2 + ',' + this.height / 2 + ')'); 56 | } 57 | 58 | private drawPie() { 59 | let g = this.svg.selectAll('.arc') 60 | .data(this.pie(POPULATION)) 61 | .enter().append('g') 62 | .attr('class', 'arc'); 63 | g.append('path').attr('d', this.arc) 64 | .style('fill', (d: any) => this.color(d.data.age) ); 65 | g.append('text').attr('transform', (d: any) => 'translate(' + this.labelArc.centroid(d) + ')') 66 | .attr('dy', '.35em') 67 | .text((d: any) => d.data.age); 68 | } 69 | 70 | } 71 | -------------------------------------------------------------------------------- /src/app/07_donut_chart/donut-chart.component.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | 3 | .arc text { 4 | font: 10px sans-serif; 5 | text-anchor: middle; 6 | } 7 | 8 | .arc path { 9 | stroke: #fff; 10 | } -------------------------------------------------------------------------------- /src/app/07_donut_chart/donut-chart.component.html: -------------------------------------------------------------------------------- 1 |

{{ title }}

2 | 3 | -------------------------------------------------------------------------------- /src/app/07_donut_chart/donut-chart.component.ts: -------------------------------------------------------------------------------- 1 | import { Component, ViewEncapsulation, OnInit } from '@angular/core'; 2 | 3 | import * as d3 from 'd3-selection'; 4 | import * as d3Scale from 'd3-scale'; 5 | import * as d3Shape from 'd3-shape'; 6 | 7 | import { POPULATION } from '../shared'; 8 | 9 | @Component({ 10 | selector: 'app-donut-chart', 11 | encapsulation: ViewEncapsulation.None, 12 | templateUrl: './donut-chart.component.html', 13 | styleUrls: ['./donut-chart.component.css'] 14 | }) 15 | export class DonutChartComponent implements OnInit { 16 | 17 | title = 'Donut Chart'; 18 | 19 | private width: number; 20 | private height: number; 21 | 22 | private svg: any; // TODO replace all `any` by the right type 23 | 24 | private radius: number; 25 | 26 | private arc: any; 27 | private pie: any; 28 | private color: any; 29 | 30 | private g: any; 31 | 32 | constructor() {} 33 | 34 | ngOnInit() { 35 | this.initSvg(); 36 | this.drawChart(POPULATION); 37 | } 38 | 39 | private initSvg() { 40 | this.svg = d3.select('svg'); 41 | 42 | this.width = +this.svg.attr('width'); 43 | this.height = +this.svg.attr('height'); 44 | this.radius = Math.min(this.width, this.height) / 2; 45 | 46 | this.color = d3Scale.scaleOrdinal() 47 | .range(['#98abc5', '#8a89a6', '#7b6888', '#6b486b', '#a05d56', '#d0743c', '#ff8c00']); 48 | 49 | this.arc = d3Shape.arc() 50 | .outerRadius(this.radius - 10) 51 | .innerRadius(this.radius - 70); 52 | 53 | this.pie = d3Shape.pie() 54 | .sort(null) 55 | .value((d: any) => d.population); 56 | 57 | this.svg = d3.select('svg') 58 | .append('g') 59 | .attr('transform', 'translate(' + this.width / 2 + ',' + this.height / 2 + ')'); 60 | } 61 | 62 | private drawChart(data: any[]) { 63 | let g = this.svg.selectAll('.arc') 64 | .data(this.pie(data)) 65 | .enter().append('g') 66 | .attr('class', 'arc'); 67 | 68 | g.append('path') 69 | .attr('d', this.arc) 70 | .style('fill', d => this.color(d.data.age)); 71 | 72 | g.append('text') 73 | .attr('transform', d => 'translate(' + this.arc.centroid(d) + ')') 74 | .attr('dy', '.35em') 75 | .text(d => d.data.age); 76 | } 77 | 78 | } 79 | -------------------------------------------------------------------------------- /src/app/app.component.css: -------------------------------------------------------------------------------- 1 | h1 { 2 | text-align:center 3 | } 4 | 5 | mat-drawer-content { 6 | padding: 20px; 7 | } 8 | -------------------------------------------------------------------------------- /src/app/app.component.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ item.title }} 5 | 6 | 7 |

{{ title }}

8 | 9 |
10 |
11 | -------------------------------------------------------------------------------- /src/app/app.component.ts: -------------------------------------------------------------------------------- 1 | import { Component } from '@angular/core'; 2 | 3 | @Component({ 4 | selector: 'app-root', 5 | templateUrl: './app.component.html', 6 | styleUrls: ['./app.component.css'] 7 | }) 8 | export class AppComponent { 9 | title = 'D3.js with Angular!'; 10 | 11 | examples = [ 12 | { 13 | title: 'Line Chart', 14 | route: '/line-chart' 15 | }, 16 | { 17 | title: 'Multi Series Line Chart', 18 | route: '/multi-series' 19 | }, 20 | { 21 | title: 'Bar Chart', 22 | route: '/bar-chart' 23 | }, 24 | { 25 | title: 'Stacked Bar Chart', 26 | route: '/stacked-bar-chart' 27 | }, 28 | { 29 | title: 'Brush Zoom', 30 | route: '/brush-zoom' 31 | }, 32 | { 33 | title: 'Pie Chart', 34 | route: '/pie-chart' 35 | }, 36 | { 37 | title: 'Donut chart', 38 | route: '/donut-chart' 39 | }, 40 | ]; 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/app/app.module.ts: -------------------------------------------------------------------------------- 1 | import { BrowserModule } from '@angular/platform-browser'; 2 | import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; 3 | import { NgModule } from '@angular/core'; 4 | import { RouterModule, Routes } from '@angular/router'; 5 | 6 | import { MatMenuModule, MatSidenavModule } from '@angular/material'; 7 | 8 | import { AppComponent } from './app.component'; 9 | import { LineChartComponent } from './01_line_chart/line-chart.component'; 10 | import { MultiSeriesComponent } from './02_multi_series_line_chart/multi-series.component'; 11 | import { BarChartComponent } from './03_bar_chart/bar-chart.component'; 12 | import { StackedBarChartComponent } from './04_stacked_bar_chart/stacked-bar-chart.component'; 13 | import { BrushZoomComponent } from './05_brush_zoom/brush-zoom.component'; 14 | import { PieChartComponent } from './06_pie_chart/pie-chart.component'; 15 | import { DonutChartComponent } from './07_donut_chart/donut-chart.component'; 16 | 17 | const appRoutes: Routes = [ 18 | { path: 'line-chart', component: LineChartComponent }, 19 | { path: 'multi-series', component: MultiSeriesComponent }, 20 | { path: 'bar-chart', component: BarChartComponent }, 21 | { path: 'stacked-bar-chart', component: StackedBarChartComponent }, 22 | { path: 'brush-zoom', component: BrushZoomComponent }, 23 | { path: 'pie-chart', component: PieChartComponent }, 24 | { path: 'donut-chart', component: DonutChartComponent }, 25 | { path: '', 26 | redirectTo: '/line-chart', 27 | pathMatch: 'full' 28 | }, 29 | { path: '**', component: LineChartComponent } 30 | ]; 31 | 32 | @NgModule({ 33 | declarations: [ 34 | AppComponent, 35 | LineChartComponent, 36 | MultiSeriesComponent, 37 | BarChartComponent, 38 | StackedBarChartComponent, 39 | BrushZoomComponent, 40 | PieChartComponent, 41 | DonutChartComponent, 42 | ], 43 | imports: [ 44 | BrowserModule, 45 | BrowserAnimationsModule, 46 | RouterModule.forRoot(appRoutes), 47 | MatMenuModule, 48 | MatSidenavModule, 49 | ], 50 | providers: [], 51 | bootstrap: [AppComponent] 52 | }) 53 | export class AppModule { } 54 | -------------------------------------------------------------------------------- /src/app/shared/data04.ts: -------------------------------------------------------------------------------- 1 | export const SAMPLE_DATA: any[] = [ 2 | {State: 'AL', 'Under 5 Years': 310504, '5 to 13 Years': 552339, '14 to 17 Years': 259034, '18 to 24 Years': 450818, '25 to 44 Years': 1231572, '45 to 64 Years': 1215966, '65 Years and Over': 641667}, 3 | {State: 'AK', 'Under 5 Years': 52083, '5 to 13 Years': 85640, '14 to 17 Years': 42153, '18 to 24 Years': 74257, '25 to 44 Years': 198724, '45 to 64 Years': 183159, '65 Years and Over': 50277}, 4 | {State: 'AZ', 'Under 5 Years': 515910, '5 to 13 Years': 828669, '14 to 17 Years': 362642, '18 to 24 Years': 601943, '25 to 44 Years': 1804762, '45 to 64 Years': 1523681, '65 Years and Over': 862573}, 5 | {State: 'AR', 'Under 5 Years': 202070, '5 to 13 Years': 343207, '14 to 17 Years': 157204, '18 to 24 Years': 264160, '25 to 44 Years': 754420, '45 to 64 Years': 727124, '65 Years and Over': 407205}, 6 | {State: 'CA', 'Under 5 Years': 2704659, '5 to 13 Years': 4499890, '14 to 17 Years': 2159981, '18 to 24 Years': 3853788, '25 to 44 Years': 10604510, '45 to 64 Years': 8819342, '65 Years and Over': 4114496}, 7 | {State: 'CO', 'Under 5 Years': 358280, '5 to 13 Years': 587154, '14 to 17 Years': 261701, '18 to 24 Years': 466194, '25 to 44 Years': 1464939, '45 to 64 Years': 1290094, '65 Years and Over': 511094}, 8 | {State: 'CT', 'Under 5 Years': 211637, '5 to 13 Years': 403658, '14 to 17 Years': 196918, '18 to 24 Years': 325110, '25 to 44 Years': 916955, '45 to 64 Years': 968967, '65 Years and Over': 478007}, 9 | {State: 'DE', 'Under 5 Years': 59319, '5 to 13 Years': 99496, '14 to 17 Years': 47414, '18 to 24 Years': 84464, '25 to 44 Years': 230183, '45 to 64 Years': 230528, '65 Years and Over': 121688}, 10 | {State: 'DC', 'Under 5 Years': 36352, '5 to 13 Years': 50439, '14 to 17 Years': 25225, '18 to 24 Years': 75569, '25 to 44 Years': 193557, '45 to 64 Years': 140043, '65 Years and Over': 70648}, 11 | {State: 'FL', 'Under 5 Years': 1140516, '5 to 13 Years': 1938695, '14 to 17 Years': 925060, '18 to 24 Years': 1607297, '25 to 44 Years': 4782119, '45 to 64 Years': 4746856, '65 Years and Over': 3187797}, 12 | {State: 'GA', 'Under 5 Years': 740521, '5 to 13 Years': 1250460, '14 to 17 Years': 557860, '18 to 24 Years': 919876, '25 to 44 Years': 2846985, '45 to 64 Years': 2389018, '65 Years and Over': 981024}, 13 | {State: 'HI', 'Under 5 Years': 87207, '5 to 13 Years': 134025, '14 to 17 Years': 64011, '18 to 24 Years': 124834, '25 to 44 Years': 356237, '45 to 64 Years': 331817, '65 Years and Over': 190067}, 14 | {State: 'ID', 'Under 5 Years': 121746, '5 to 13 Years': 201192, '14 to 17 Years': 89702, '18 to 24 Years': 147606, '25 to 44 Years': 406247, '45 to 64 Years': 375173, '65 Years and Over': 182150}, 15 | {State: 'IL', 'Under 5 Years': 894368, '5 to 13 Years': 1558919, '14 to 17 Years': 725973, '18 to 24 Years': 1311479, '25 to 44 Years': 3596343, '45 to 64 Years': 3239173, '65 Years and Over': 1575308}, 16 | {State: 'IN', 'Under 5 Years': 443089, '5 to 13 Years': 780199, '14 to 17 Years': 361393, '18 to 24 Years': 605863, '25 to 44 Years': 1724528, '45 to 64 Years': 1647881, '65 Years and Over': 813839}, 17 | {State: 'IA', 'Under 5 Years': 201321, '5 to 13 Years': 345409, '14 to 17 Years': 165883, '18 to 24 Years': 306398, '25 to 44 Years': 750505, '45 to 64 Years': 788485, '65 Years and Over': 444554}, 18 | {State: 'KS', 'Under 5 Years': 202529, '5 to 13 Years': 342134, '14 to 17 Years': 155822, '18 to 24 Years': 293114, '25 to 44 Years': 728166, '45 to 64 Years': 713663, '65 Years and Over': 366706}, 19 | {State: 'KY', 'Under 5 Years': 284601, '5 to 13 Years': 493536, '14 to 17 Years': 229927, '18 to 24 Years': 381394, '25 to 44 Years': 1179637, '45 to 64 Years': 1134283, '65 Years and Over': 565867}, 20 | {State: 'LA', 'Under 5 Years': 310716, '5 to 13 Years': 542341, '14 to 17 Years': 254916, '18 to 24 Years': 471275, '25 to 44 Years': 1162463, '45 to 64 Years': 1128771, '65 Years and Over': 540314}, 21 | {State: 'ME', 'Under 5 Years': 71459, '5 to 13 Years': 133656, '14 to 17 Years': 69752, '18 to 24 Years': 112682, '25 to 44 Years': 331809, '45 to 64 Years': 397911, '65 Years and Over': 199187}, 22 | {State: 'MD', 'Under 5 Years': 371787, '5 to 13 Years': 651923, '14 to 17 Years': 316873, '18 to 24 Years': 543470, '25 to 44 Years': 1556225, '45 to 64 Years': 1513754, '65 Years and Over': 679565}, 23 | {State: 'MA', 'Under 5 Years': 383568, '5 to 13 Years': 701752, '14 to 17 Years': 341713, '18 to 24 Years': 665879, '25 to 44 Years': 1782449, '45 to 64 Years': 1751508, '65 Years and Over': 871098}, 24 | {State: 'MI', 'Under 5 Years': 625526, '5 to 13 Years': 1179503, '14 to 17 Years': 585169, '18 to 24 Years': 974480, '25 to 44 Years': 2628322, '45 to 64 Years': 2706100, '65 Years and Over': 1304322}, 25 | {State: 'MN', 'Under 5 Years': 358471, '5 to 13 Years': 606802, '14 to 17 Years': 289371, '18 to 24 Years': 507289, '25 to 44 Years': 1416063, '45 to 64 Years': 1391878, '65 Years and Over': 650519}, 26 | {State: 'MS', 'Under 5 Years': 220813, '5 to 13 Years': 371502, '14 to 17 Years': 174405, '18 to 24 Years': 305964, '25 to 44 Years': 764203, '45 to 64 Years': 730133, '65 Years and Over': 371598}, 27 | {State: 'MO', 'Under 5 Years': 399450, '5 to 13 Years': 690476, '14 to 17 Years': 331543, '18 to 24 Years': 560463, '25 to 44 Years': 1569626, '45 to 64 Years': 1554812, '65 Years and Over': 805235}, 28 | {State: 'MT', 'Under 5 Years': 61114, '5 to 13 Years': 106088, '14 to 17 Years': 53156, '18 to 24 Years': 95232, '25 to 44 Years': 236297, '45 to 64 Years': 278241, '65 Years and Over': 137312}, 29 | {State: 'NE', 'Under 5 Years': 132092, '5 to 13 Years': 215265, '14 to 17 Years': 99638, '18 to 24 Years': 186657, '25 to 44 Years': 457177, '45 to 64 Years': 451756, '65 Years and Over': 240847}, 30 | {State: 'NV', 'Under 5 Years': 199175, '5 to 13 Years': 325650, '14 to 17 Years': 142976, '18 to 24 Years': 212379, '25 to 44 Years': 769913, '45 to 64 Years': 653357, '65 Years and Over': 296717}, 31 | {State: 'NH', 'Under 5 Years': 75297, '5 to 13 Years': 144235, '14 to 17 Years': 73826, '18 to 24 Years': 119114, '25 to 44 Years': 345109, '45 to 64 Years': 388250, '65 Years and Over': 169978}, 32 | {State: 'NJ', 'Under 5 Years': 557421, '5 to 13 Years': 1011656, '14 to 17 Years': 478505, '18 to 24 Years': 769321, '25 to 44 Years': 2379649, '45 to 64 Years': 2335168, '65 Years and Over': 1150941}, 33 | {State: 'NM', 'Under 5 Years': 148323, '5 to 13 Years': 241326, '14 to 17 Years': 112801, '18 to 24 Years': 203097, '25 to 44 Years': 517154, '45 to 64 Years': 501604, '65 Years and Over': 260051}, 34 | {State: 'NY', 'Under 5 Years': 1208495, '5 to 13 Years': 2141490, '14 to 17 Years': 1058031, '18 to 24 Years': 1999120, '25 to 44 Years': 5355235, '45 to 64 Years': 5120254, '65 Years and Over': 2607672}, 35 | {State: 'NC', 'Under 5 Years': 652823, '5 to 13 Years': 1097890, '14 to 17 Years': 492964, '18 to 24 Years': 883397, '25 to 44 Years': 2575603, '45 to 64 Years': 2380685, '65 Years and Over': 1139052}, 36 | {State: 'ND', 'Under 5 Years': 41896, '5 to 13 Years': 67358, '14 to 17 Years': 33794, '18 to 24 Years': 82629, '25 to 44 Years': 154913, '45 to 64 Years': 166615, '65 Years and Over': 94276}, 37 | {State: 'OH', 'Under 5 Years': 743750, '5 to 13 Years': 1340492, '14 to 17 Years': 646135, '18 to 24 Years': 1081734, '25 to 44 Years': 3019147, '45 to 64 Years': 3083815, '65 Years and Over': 1570837}, 38 | {State: 'OK', 'Under 5 Years': 266547, '5 to 13 Years': 438926, '14 to 17 Years': 200562, '18 to 24 Years': 369916, '25 to 44 Years': 957085, '45 to 64 Years': 918688, '65 Years and Over': 490637}, 39 | {State: 'OR', 'Under 5 Years': 243483, '5 to 13 Years': 424167, '14 to 17 Years': 199925, '18 to 24 Years': 338162, '25 to 44 Years': 1044056, '45 to 64 Years': 1036269, '65 Years and Over': 503998}, 40 | {State: 'PA', 'Under 5 Years': 737462, '5 to 13 Years': 1345341, '14 to 17 Years': 679201, '18 to 24 Years': 1203944, '25 to 44 Years': 3157759, '45 to 64 Years': 3414001, '65 Years and Over': 1910571}, 41 | {State: 'RI', 'Under 5 Years': 60934, '5 to 13 Years': 111408, '14 to 17 Years': 56198, '18 to 24 Years': 114502, '25 to 44 Years': 277779, '45 to 64 Years': 282321, '65 Years and Over': 147646}, 42 | {State: 'SC', 'Under 5 Years': 303024, '5 to 13 Years': 517803, '14 to 17 Years': 245400, '18 to 24 Years': 438147, '25 to 44 Years': 1193112, '45 to 64 Years': 1186019, '65 Years and Over': 596295}, 43 | {State: 'SD', 'Under 5 Years': 58566, '5 to 13 Years': 94438, '14 to 17 Years': 45305, '18 to 24 Years': 82869, '25 to 44 Years': 196738, '45 to 64 Years': 210178, '65 Years and Over': 116100}, 44 | {State: 'TN', 'Under 5 Years': 416334, '5 to 13 Years': 725948, '14 to 17 Years': 336312, '18 to 24 Years': 550612, '25 to 44 Years': 1719433, '45 to 64 Years': 1646623, '65 Years and Over': 819626}, 45 | {State: 'TX', 'Under 5 Years': 2027307, '5 to 13 Years': 3277946, '14 to 17 Years': 1420518, '18 to 24 Years': 2454721, '25 to 44 Years': 7017731, '45 to 64 Years': 5656528, '65 Years and Over': 2472223}, 46 | {State: 'UT', 'Under 5 Years': 268916, '5 to 13 Years': 413034, '14 to 17 Years': 167685, '18 to 24 Years': 329585, '25 to 44 Years': 772024, '45 to 64 Years': 538978, '65 Years and Over': 246202}, 47 | {State: 'VT', 'Under 5 Years': 32635, '5 to 13 Years': 62538, '14 to 17 Years': 33757, '18 to 24 Years': 61679, '25 to 44 Years': 155419, '45 to 64 Years': 188593, '65 Years and Over': 86649}, 48 | {State: 'VA', 'Under 5 Years': 522672, '5 to 13 Years': 887525, '14 to 17 Years': 413004, '18 to 24 Years': 768475, '25 to 44 Years': 2203286, '45 to 64 Years': 2033550, '65 Years and Over': 940577}, 49 | {State: 'WA', 'Under 5 Years': 433119, '5 to 13 Years': 750274, '14 to 17 Years': 357782, '18 to 24 Years': 610378, '25 to 44 Years': 1850983, '45 to 64 Years': 1762811, '65 Years and Over': 783877}, 50 | {State: 'WV', 'Under 5 Years': 105435, '5 to 13 Years': 189649, '14 to 17 Years': 91074, '18 to 24 Years': 157989, '25 to 44 Years': 470749, '45 to 64 Years': 514505, '65 Years and Over': 285067}, 51 | {State: 'WI', 'Under 5 Years': 362277, '5 to 13 Years': 640286, '14 to 17 Years': 311849, '18 to 24 Years': 553914, '25 to 44 Years': 1487457, '45 to 64 Years': 1522038, '65 Years and Over': 750146}, 52 | {State: 'WY', 'Under 5 Years': 38253, '5 to 13 Years': 60890, '14 to 17 Years': 29314, '18 to 24 Years': 53980, '25 to 44 Years': 137338, '45 to 64 Years': 147279, '65 Years and Over': 65614} 53 | ]; 54 | -------------------------------------------------------------------------------- /src/app/shared/index.ts: -------------------------------------------------------------------------------- 1 | export * from './stocks'; 2 | export * from './temperatures'; 3 | export * from './statistics'; 4 | export * from './data04'; 5 | export * from './sp500'; 6 | export * from './population'; 7 | -------------------------------------------------------------------------------- /src/app/shared/population.ts: -------------------------------------------------------------------------------- 1 | export const POPULATION: any[] = [ 2 | {age: '<5', population: 2704659}, 3 | {age: '5-13', population: 4499890}, 4 | {age: '14-17', population: 2159981}, 5 | {age: '18-24', population: 3853788}, 6 | {age: '25-44', population: 14106543}, 7 | {age: '45-64', population: 8819342}, 8 | {age: '≥65', population: 612463} 9 | ]; 10 | -------------------------------------------------------------------------------- /src/app/shared/sp500.ts: -------------------------------------------------------------------------------- 1 | export const SP500: any[] = [ 2 | {date: 'Jan 2000', price: 1394.46}, 3 | {date: 'Feb 2000', price: 1366.42}, 4 | {date: 'Mar 2000', price: 1498.58}, 5 | {date: 'Apr 2000', price: 1452.43}, 6 | {date: 'May 2000', price: 1420.6}, 7 | {date: 'Jun 2000', price: 1454.6}, 8 | {date: 'Jul 2000', price: 1430.83}, 9 | {date: 'Aug 2000', price: 1517.68}, 10 | {date: 'Sep 2000', price: 1436.51}, 11 | {date: 'Oct 2000', price: 1429.4}, 12 | {date: 'Nov 2000', price: 1314.95}, 13 | {date: 'Dec 2000', price: 1320.28}, 14 | {date: 'Jan 2001', price: 1366.01}, 15 | {date: 'Feb 2001', price: 1239.94}, 16 | {date: 'Mar 2001', price: 1160.33}, 17 | {date: 'Apr 2001', price: 1249.46}, 18 | {date: 'May 2001', price: 1255.82}, 19 | {date: 'Jun 2001', price: 1224.38}, 20 | {date: 'Jul 2001', price: 1211.23}, 21 | {date: 'Aug 2001', price: 1133.58}, 22 | {date: 'Sep 2001', price: 1040.94}, 23 | {date: 'Oct 2001', price: 1059.78}, 24 | {date: 'Nov 2001', price: 1139.45}, 25 | {date: 'Dec 2001', price: 1148.08}, 26 | {date: 'Jan 2002', price: 1130.2}, 27 | {date: 'Feb 2002', price: 1106.73}, 28 | {date: 'Mar 2002', price: 1147.39}, 29 | {date: 'Apr 2002', price: 1076.92}, 30 | {date: 'May 2002', price: 1067.14}, 31 | {date: 'Jun 2002', price: 989.82}, 32 | {date: 'Jul 2002', price: 911.62}, 33 | {date: 'Aug 2002', price: 916.07}, 34 | {date: 'Sep 2002', price: 815.28}, 35 | {date: 'Oct 2002', price: 885.76}, 36 | {date: 'Nov 2002', price: 936.31}, 37 | {date: 'Dec 2002', price: 879.82}, 38 | {date: 'Jan 2003', price: 855.7}, 39 | {date: 'Feb 2003', price: 841.15}, 40 | {date: 'Mar 2003', price: 848.18}, 41 | {date: 'Apr 2003', price: 916.92}, 42 | {date: 'May 2003', price: 963.59}, 43 | {date: 'Jun 2003', price: 974.5}, 44 | {date: 'Jul 2003', price: 990.31}, 45 | {date: 'Aug 2003', price: 1008.01}, 46 | {date: 'Sep 2003', price: 995.97}, 47 | {date: 'Oct 2003', price: 1050.71}, 48 | {date: 'Nov 2003', price: 1058.2}, 49 | {date: 'Dec 2003', price: 1111.92}, 50 | {date: 'Jan 2004', price: 1131.13}, 51 | {date: 'Feb 2004', price: 1144.94}, 52 | {date: 'Mar 2004', price: 1126.21}, 53 | {date: 'Apr 2004', price: 1107.3}, 54 | {date: 'May 2004', price: 1120.68}, 55 | {date: 'Jun 2004', price: 1140.84}, 56 | {date: 'Jul 2004', price: 1101.72}, 57 | {date: 'Aug 2004', price: 1104.24}, 58 | {date: 'Sep 2004', price: 1114.58}, 59 | {date: 'Oct 2004', price: 1130.2}, 60 | {date: 'Nov 2004', price: 1173.82}, 61 | {date: 'Dec 2004', price: 1211.92}, 62 | {date: 'Jan 2005', price: 1181.27}, 63 | {date: 'Feb 2005', price: 1203.6}, 64 | {date: 'Mar 2005', price: 1180.59}, 65 | {date: 'Apr 2005', price: 1156.85}, 66 | {date: 'May 2005', price: 1191.5}, 67 | {date: 'Jun 2005', price: 1191.33}, 68 | {date: 'Jul 2005', price: 1234.18}, 69 | {date: 'Aug 2005', price: 1220.33}, 70 | {date: 'Sep 2005', price: 1228.81}, 71 | {date: 'Oct 2005', price: 1207.01}, 72 | {date: 'Nov 2005', price: 1249.48}, 73 | {date: 'Dec 2005', price: 1248.29}, 74 | {date: 'Jan 2006', price: 1280.08}, 75 | {date: 'Feb 2006', price: 1280.66}, 76 | {date: 'Mar 2006', price: 1294.87}, 77 | {date: 'Apr 2006', price: 1310.61}, 78 | {date: 'May 2006', price: 1270.09}, 79 | {date: 'Jun 2006', price: 1270.2}, 80 | {date: 'Jul 2006', price: 1276.66}, 81 | {date: 'Aug 2006', price: 1303.82}, 82 | {date: 'Sep 2006', price: 1335.85}, 83 | {date: 'Oct 2006', price: 1377.94}, 84 | {date: 'Nov 2006', price: 1400.63}, 85 | {date: 'Dec 2006', price: 1418.3}, 86 | {date: 'Jan 2007', price: 1438.24}, 87 | {date: 'Feb 2007', price: 1406.82}, 88 | {date: 'Mar 2007', price: 1420.86}, 89 | {date: 'Apr 2007', price: 1482.37}, 90 | {date: 'May 2007', price: 1530.62}, 91 | {date: 'Jun 2007', price: 1503.35}, 92 | {date: 'Jul 2007', price: 1455.27}, 93 | {date: 'Aug 2007', price: 1473.99}, 94 | {date: 'Sep 2007', price: 1526.75}, 95 | {date: 'Oct 2007', price: 1549.38}, 96 | {date: 'Nov 2007', price: 1481.14}, 97 | {date: 'Dec 2007', price: 1468.36}, 98 | {date: 'Jan 2008', price: 1378.55}, 99 | {date: 'Feb 2008', price: 1330.63}, 100 | {date: 'Mar 2008', price: 1322.7}, 101 | {date: 'Apr 2008', price: 1385.59}, 102 | {date: 'May 2008', price: 1400.38}, 103 | {date: 'Jun 2008', price: 1280}, 104 | {date: 'Jul 2008', price: 1267.38}, 105 | {date: 'Aug 2008', price: 1282.83}, 106 | {date: 'Sep 2008', price: 1166.36}, 107 | {date: 'Oct 2008', price: 968.75}, 108 | {date: 'Nov 2008', price: 896.24}, 109 | {date: 'Dec 2008', price: 903.25}, 110 | {date: 'Jan 2009', price: 825.88}, 111 | {date: 'Feb 2009', price: 735.09}, 112 | {date: 'Mar 2009', price: 797.87}, 113 | {date: 'Apr 2009', price: 872.81}, 114 | {date: 'May 2009', price: 919.14}, 115 | {date: 'Jun 2009', price: 919.32}, 116 | {date: 'Jul 2009', price: 987.48}, 117 | {date: 'Aug 2009', price: 1020.62}, 118 | {date: 'Sep 2009', price: 1057.08}, 119 | {date: 'Oct 2009', price: 1036.19}, 120 | {date: 'Nov 2009', price: 1095.63}, 121 | {date: 'Dec 2009', price: 1115.1}, 122 | {date: 'Jan 2010', price: 1073.87}, 123 | {date: 'Feb 2010', price: 1104.49}, 124 | {date: 'Mar 2010', price: 1140.45} 125 | ]; 126 | -------------------------------------------------------------------------------- /src/app/shared/statistics.ts: -------------------------------------------------------------------------------- 1 | export interface Frequency { 2 | letter: string; 3 | frequency: number; 4 | } 5 | 6 | export const STATISTICS: Frequency[] = [ 7 | {letter: 'A', frequency: .08167}, 8 | {letter: 'B', frequency: .01492}, 9 | {letter: 'C', frequency: .02782}, 10 | {letter: 'D', frequency: .04253}, 11 | {letter: 'E', frequency: .12702}, 12 | {letter: 'F', frequency: .02288}, 13 | {letter: 'G', frequency: .02015}, 14 | {letter: 'H', frequency: .06094}, 15 | {letter: 'I', frequency: .06966}, 16 | {letter: 'J', frequency: .00153}, 17 | {letter: 'K', frequency: .00772}, 18 | {letter: 'L', frequency: .04025}, 19 | {letter: 'M', frequency: .02406}, 20 | {letter: 'N', frequency: .06749}, 21 | {letter: 'O', frequency: .07507}, 22 | {letter: 'P', frequency: .01929}, 23 | {letter: 'Q', frequency: .00095}, 24 | {letter: 'R', frequency: .05987}, 25 | {letter: 'S', frequency: .06327}, 26 | {letter: 'T', frequency: .09056}, 27 | {letter: 'U', frequency: .02758}, 28 | {letter: 'V', frequency: .00978}, 29 | {letter: 'W', frequency: .02360}, 30 | {letter: 'X', frequency: .00150}, 31 | {letter: 'Y', frequency: .01974}, 32 | {letter: 'Z', frequency: .00074} 33 | ]; 34 | -------------------------------------------------------------------------------- /src/app/shared/stocks.ts: -------------------------------------------------------------------------------- 1 | export interface Stock { 2 | date: Date; 3 | value: number; 4 | } 5 | 6 | export const STOCKS: Stock[] = [ 7 | {date: new Date('2010-01-01'), value: 210.73}, 8 | {date: new Date('2010-01-04'), value: 214.01}, 9 | {date: new Date('2010-01-05'), value: 214.38}, 10 | {date: new Date('2010-01-06'), value: 210.97}, 11 | {date: new Date('2010-01-07'), value: 210.58}, 12 | {date: new Date('2010-01-08'), value: 211.98}, 13 | {date: new Date('2010-01-11'), value: 210.11}, 14 | {date: new Date('2010-01-12'), value: 207.72}, 15 | {date: new Date('2010-01-13'), value: 210.65}, 16 | {date: new Date('2010-01-14'), value: 209.43}, 17 | {date: new Date('2010-01-15'), value: 205.93}, 18 | {date: new Date('2010-01-18'), value: 205.93}, 19 | {date: new Date('2010-01-19'), value: 215.04}, 20 | {date: new Date('2010-01-20'), value: 211.72}, 21 | {date: new Date('2010-01-21'), value: 208.07}, 22 | {date: new Date('2010-01-22'), value: 197.75}, 23 | {date: new Date('2010-01-25'), value: 203.08}, 24 | {date: new Date('2010-01-26'), value: 205.94}, 25 | {date: new Date('2010-01-27'), value: 207.88}, 26 | {date: new Date('2010-01-28'), value: 199.29}, 27 | {date: new Date('2010-01-29'), value: 192.06}, 28 | {date: new Date('2010-02-01'), value: 194.73}, 29 | {date: new Date('2010-02-02'), value: 195.86}, 30 | {date: new Date('2010-02-03'), value: 199.23}, 31 | {date: new Date('2010-02-04'), value: 192.05}, 32 | {date: new Date('2010-02-05'), value: 195.46}, 33 | {date: new Date('2010-02-08'), value: 194.12}, 34 | {date: new Date('2010-02-09'), value: 196.19}, 35 | {date: new Date('2010-02-10'), value: 195.12}, 36 | {date: new Date('2010-02-11'), value: 198.67}, 37 | {date: new Date('2010-02-12'), value: 200.38}, 38 | {date: new Date('2010-02-15'), value: 200.38}, 39 | {date: new Date('2010-02-16'), value: 203.40}, 40 | {date: new Date('2010-02-17'), value: 202.55}, 41 | {date: new Date('2010-02-18'), value: 202.93}, 42 | {date: new Date('2010-02-19'), value: 201.67}, 43 | {date: new Date('2010-02-22'), value: 200.42}, 44 | {date: new Date('2010-02-23'), value: 197.06}, 45 | {date: new Date('2010-02-24'), value: 200.66}, 46 | {date: new Date('2010-02-25'), value: 202.00}, 47 | {date: new Date('2010-02-26'), value: 204.62}, 48 | {date: new Date('2010-03-01'), value: 208.99}, 49 | {date: new Date('2010-03-02'), value: 208.85}, 50 | {date: new Date('2010-03-03'), value: 209.33}, 51 | {date: new Date('2010-03-04'), value: 210.71}, 52 | {date: new Date('2010-03-05'), value: 218.95}, 53 | {date: new Date('2010-03-08'), value: 219.08}, 54 | {date: new Date('2010-03-09'), value: 223.02}, 55 | {date: new Date('2010-03-10'), value: 224.84}, 56 | {date: new Date('2010-03-11'), value: 225.50}, 57 | {date: new Date('2010-03-12'), value: 226.60}, 58 | {date: new Date('2010-03-15'), value: 223.84}, 59 | {date: new Date('2010-03-16'), value: 224.45}, 60 | {date: new Date('2010-03-17'), value: 224.12}, 61 | {date: new Date('2010-03-18'), value: 224.65}, 62 | {date: new Date('2010-03-19'), value: 222.25}, 63 | {date: new Date('2010-03-22'), value: 224.75}, 64 | {date: new Date('2010-03-23'), value: 228.36}, 65 | {date: new Date('2010-03-24'), value: 229.37}, 66 | {date: new Date('2010-03-25'), value: 226.65}, 67 | {date: new Date('2010-03-26'), value: 230.90}, 68 | {date: new Date('2010-03-29'), value: 232.39}, 69 | {date: new Date('2010-03-30'), value: 235.84}, 70 | {date: new Date('2010-03-31'), value: 235.00}, 71 | {date: new Date('2010-04-01'), value: 235.97}, 72 | {date: new Date('2010-04-02'), value: 235.97}, 73 | {date: new Date('2010-04-05'), value: 238.49}, 74 | {date: new Date('2010-04-06'), value: 239.54}, 75 | {date: new Date('2010-04-07'), value: 240.60}, 76 | {date: new Date('2010-04-08'), value: 239.95}, 77 | {date: new Date('2010-04-09'), value: 241.79}, 78 | {date: new Date('2010-04-12'), value: 242.29}, 79 | {date: new Date('2010-04-13'), value: 242.43}, 80 | {date: new Date('2010-04-14'), value: 245.69}, 81 | {date: new Date('2010-04-15'), value: 248.92}, 82 | {date: new Date('2010-04-16'), value: 247.40}, 83 | {date: new Date('2010-04-19'), value: 247.07}, 84 | {date: new Date('2010-04-20'), value: 244.59}, 85 | {date: new Date('2010-04-21'), value: 259.22}, 86 | {date: new Date('2010-04-22'), value: 266.47}, 87 | {date: new Date('2010-04-23'), value: 270.83}, 88 | {date: new Date('2010-04-26'), value: 269.50}, 89 | {date: new Date('2010-04-27'), value: 262.04}, 90 | {date: new Date('2010-04-28'), value: 261.60}, 91 | {date: new Date('2010-04-29'), value: 268.64}, 92 | {date: new Date('2010-04-30'), value: 261.09}, 93 | {date: new Date('2010-05-03'), value: 266.35}, 94 | {date: new Date('2010-05-04'), value: 258.68}, 95 | {date: new Date('2010-05-05'), value: 255.98}, 96 | {date: new Date('2010-05-06'), value: 246.25}, 97 | {date: new Date('2010-05-07'), value: 235.86}, 98 | {date: new Date('2010-05-10'), value: 253.99}, 99 | {date: new Date('2010-05-11'), value: 256.52}, 100 | {date: new Date('2010-05-12'), value: 262.09}, 101 | {date: new Date('2010-05-13'), value: 258.36}, 102 | {date: new Date('2010-05-14'), value: 253.82}, 103 | {date: new Date('2010-05-17'), value: 254.22}, 104 | {date: new Date('2010-05-18'), value: 252.36}, 105 | {date: new Date('2010-05-19'), value: 248.34}, 106 | {date: new Date('2010-05-20'), value: 237.76}, 107 | {date: new Date('2010-05-21'), value: 242.32}, 108 | {date: new Date('2010-05-24'), value: 246.76}, 109 | {date: new Date('2010-05-25'), value: 245.22}, 110 | {date: new Date('2010-05-26'), value: 244.11}, 111 | {date: new Date('2010-05-27'), value: 253.35}, 112 | {date: new Date('2010-05-28'), value: 256.88}, 113 | {date: new Date('2010-05-31'), value: 256.88}, 114 | {date: new Date('2010-06-01'), value: 260.83}, 115 | {date: new Date('2010-06-02'), value: 263.95}, 116 | {date: new Date('2010-06-03'), value: 263.12}, 117 | {date: new Date('2010-06-04'), value: 255.96}, 118 | {date: new Date('2010-06-07'), value: 250.94}, 119 | {date: new Date('2010-06-08'), value: 249.33}, 120 | {date: new Date('2010-06-09'), value: 243.20}, 121 | {date: new Date('2010-06-10'), value: 250.51}, 122 | {date: new Date('2010-06-11'), value: 253.51}, 123 | {date: new Date('2010-06-14'), value: 254.28}, 124 | {date: new Date('2010-06-15'), value: 259.69}, 125 | {date: new Date('2010-06-16'), value: 267.25}, 126 | {date: new Date('2010-06-17'), value: 271.87}, 127 | {date: new Date('2010-06-18'), value: 274.07}, 128 | {date: new Date('2010-06-21'), value: 270.17}, 129 | {date: new Date('2010-06-22'), value: 273.85}, 130 | {date: new Date('2010-06-23'), value: 270.97}, 131 | {date: new Date('2010-06-24'), value: 269.00}, 132 | {date: new Date('2010-06-25'), value: 266.70}, 133 | {date: new Date('2010-06-28'), value: 268.30}, 134 | {date: new Date('2010-06-29'), value: 256.17}, 135 | {date: new Date('2010-06-30'), value: 251.53}, 136 | {date: new Date('2010-07-01'), value: 248.48}, 137 | {date: new Date('2010-07-02'), value: 246.94}, 138 | {date: new Date('2010-07-05'), value: 246.94}, 139 | {date: new Date('2010-07-06'), value: 248.63}, 140 | {date: new Date('2010-07-07'), value: 258.66}, 141 | {date: new Date('2010-07-08'), value: 258.09}, 142 | {date: new Date('2010-07-09'), value: 259.62}, 143 | {date: new Date('2010-07-12'), value: 257.28}, 144 | {date: new Date('2010-07-13'), value: 251.80}, 145 | {date: new Date('2010-07-14'), value: 252.73}, 146 | {date: new Date('2010-07-15'), value: 251.45}, 147 | {date: new Date('2010-07-16'), value: 249.90}, 148 | {date: new Date('2010-07-19'), value: 245.58}, 149 | {date: new Date('2010-07-20'), value: 251.89}, 150 | {date: new Date('2010-07-21'), value: 254.24}, 151 | {date: new Date('2010-07-22'), value: 259.02}, 152 | {date: new Date('2010-07-23'), value: 259.94}, 153 | {date: new Date('2010-07-26'), value: 259.28}, 154 | {date: new Date('2010-07-27'), value: 264.08}, 155 | {date: new Date('2010-07-28'), value: 260.96}, 156 | {date: new Date('2010-07-29'), value: 258.11}, 157 | {date: new Date('2010-07-30'), value: 257.25}, 158 | {date: new Date('2010-08-02'), value: 261.85}, 159 | {date: new Date('2010-08-03'), value: 261.93}, 160 | {date: new Date('2010-08-04'), value: 262.98}, 161 | {date: new Date('2010-08-05'), value: 261.70}, 162 | {date: new Date('2010-08-06'), value: 260.09}, 163 | {date: new Date('2010-08-09'), value: 261.75}, 164 | {date: new Date('2010-08-10'), value: 259.41}, 165 | {date: new Date('2010-08-11'), value: 250.19}, 166 | {date: new Date('2010-08-12'), value: 251.79}, 167 | {date: new Date('2010-08-13'), value: 249.10}, 168 | {date: new Date('2010-08-16'), value: 247.64}, 169 | {date: new Date('2010-08-17'), value: 251.97}, 170 | {date: new Date('2010-08-18'), value: 253.07}, 171 | {date: new Date('2010-08-19'), value: 249.88}, 172 | {date: new Date('2010-08-20'), value: 249.64}, 173 | {date: new Date('2010-08-23'), value: 245.80}, 174 | {date: new Date('2010-08-24'), value: 239.93}, 175 | {date: new Date('2010-08-25'), value: 242.89}, 176 | {date: new Date('2010-08-26'), value: 240.28}, 177 | {date: new Date('2010-08-27'), value: 241.62}, 178 | {date: new Date('2010-08-30'), value: 242.50}, 179 | {date: new Date('2010-08-31'), value: 243.10}, 180 | {date: new Date('2010-09-01'), value: 250.33}, 181 | {date: new Date('2010-09-02'), value: 252.17}, 182 | {date: new Date('2010-09-03'), value: 258.77}, 183 | {date: new Date('2010-09-06'), value: 258.77}, 184 | {date: new Date('2010-09-07'), value: 257.81}, 185 | {date: new Date('2010-09-08'), value: 262.92}, 186 | {date: new Date('2010-09-09'), value: 263.07}, 187 | {date: new Date('2010-09-10'), value: 263.41}, 188 | {date: new Date('2010-09-13'), value: 267.04}, 189 | {date: new Date('2010-09-14'), value: 268.06}, 190 | {date: new Date('2010-09-15'), value: 270.22}, 191 | {date: new Date('2010-09-16'), value: 276.57}, 192 | {date: new Date('2010-09-17'), value: 275.37}, 193 | {date: new Date('2010-09-20'), value: 283.23}, 194 | {date: new Date('2010-09-21'), value: 283.77}, 195 | {date: new Date('2010-09-22'), value: 287.75}, 196 | {date: new Date('2010-09-23'), value: 288.92}, 197 | {date: new Date('2010-09-24'), value: 292.32}, 198 | {date: new Date('2010-09-27'), value: 291.16}, 199 | {date: new Date('2010-09-28'), value: 286.86}, 200 | {date: new Date('2010-09-29'), value: 287.37}, 201 | {date: new Date('2010-09-30'), value: 283.75}, 202 | {date: new Date('2010-10-01'), value: 282.52}, 203 | {date: new Date('2010-10-04'), value: 278.64}, 204 | {date: new Date('2010-10-05'), value: 288.94}, 205 | {date: new Date('2010-10-06'), value: 289.19}, 206 | {date: new Date('2010-10-07'), value: 289.22}, 207 | {date: new Date('2010-10-08'), value: 294.07}, 208 | {date: new Date('2010-10-11'), value: 295.36}, 209 | {date: new Date('2010-10-12'), value: 298.54}, 210 | {date: new Date('2010-10-13'), value: 300.14}, 211 | {date: new Date('2010-10-14'), value: 302.31}, 212 | {date: new Date('2010-10-15'), value: 314.74}, 213 | {date: new Date('2010-10-18'), value: 318.00}, 214 | {date: new Date('2010-10-19'), value: 309.49}, 215 | {date: new Date('2010-10-20'), value: 310.53}, 216 | {date: new Date('2010-10-21'), value: 309.52}, 217 | {date: new Date('2010-10-22'), value: 307.47}, 218 | {date: new Date('2010-10-25'), value: 308.84}, 219 | {date: new Date('2010-10-26'), value: 308.05}, 220 | {date: new Date('2010-10-27'), value: 307.83}, 221 | {date: new Date('2010-10-28'), value: 305.24}, 222 | {date: new Date('2010-10-29'), value: 300.98}, 223 | {date: new Date('2010-11-01'), value: 304.18}, 224 | {date: new Date('2010-11-02'), value: 309.36}, 225 | {date: new Date('2010-11-03'), value: 312.80}, 226 | {date: new Date('2010-11-04'), value: 318.27}, 227 | {date: new Date('2010-11-05'), value: 317.13}, 228 | {date: new Date('2010-11-08'), value: 318.62}, 229 | {date: new Date('2010-11-09'), value: 316.08}, 230 | {date: new Date('2010-11-10'), value: 318.03}, 231 | {date: new Date('2010-11-11'), value: 316.66}, 232 | {date: new Date('2010-11-12'), value: 308.03}, 233 | {date: new Date('2010-11-15'), value: 307.04}, 234 | {date: new Date('2010-11-16'), value: 301.59}, 235 | {date: new Date('2010-11-17'), value: 300.50}, 236 | {date: new Date('2010-11-18'), value: 308.43}, 237 | {date: new Date('2010-11-19'), value: 306.73}, 238 | {date: new Date('2010-11-22'), value: 313.36}, 239 | {date: new Date('2010-11-23'), value: 308.73}, 240 | {date: new Date('2010-11-24'), value: 314.80}, 241 | {date: new Date('2010-11-26'), value: 315.00}, 242 | {date: new Date('2010-11-29'), value: 316.87}, 243 | {date: new Date('2010-11-30'), value: 311.15}, 244 | {date: new Date('2010-12-01'), value: 316.40}, 245 | {date: new Date('2010-12-02'), value: 318.15}, 246 | {date: new Date('2010-12-03'), value: 317.44}, 247 | {date: new Date('2010-12-06'), value: 320.15}, 248 | {date: new Date('2010-12-07'), value: 318.21}, 249 | {date: new Date('2010-12-08'), value: 321.01}, 250 | {date: new Date('2010-12-09'), value: 319.76}, 251 | {date: new Date('2010-12-10'), value: 320.56}, 252 | {date: new Date('2010-12-13'), value: 321.67}, 253 | {date: new Date('2010-12-14'), value: 320.29}, 254 | {date: new Date('2010-12-15'), value: 320.36}, 255 | {date: new Date('2010-12-16'), value: 321.25}, 256 | {date: new Date('2010-12-17'), value: 320.61}, 257 | {date: new Date('2010-12-20'), value: 322.21}, 258 | {date: new Date('2010-12-21'), value: 324.20}, 259 | {date: new Date('2010-12-22'), value: 325.16}, 260 | {date: new Date('2010-12-23'), value: 323.60}, 261 | {date: new Date('2010-12-27'), value: 324.68}, 262 | {date: new Date('2010-12-28'), value: 325.47}, 263 | {date: new Date('2010-12-29'), value: 325.29}, 264 | {date: new Date('2010-12-30'), value: 323.66}, 265 | {date: new Date('2010-12-31'), value: 322.56}, 266 | {date: new Date('2011-01-03'), value: 329.57}, 267 | {date: new Date('2011-01-04'), value: 331.29}, 268 | {date: new Date('2011-01-05'), value: 334.00}, 269 | {date: new Date('2011-01-06'), value: 333.73}, 270 | {date: new Date('2011-01-07'), value: 336.12}, 271 | {date: new Date('2011-01-10'), value: 342.46}, 272 | {date: new Date('2011-01-11'), value: 341.64}, 273 | {date: new Date('2011-01-12'), value: 344.42}, 274 | {date: new Date('2011-01-13'), value: 345.68}, 275 | {date: new Date('2011-01-14'), value: 348.48}, 276 | {date: new Date('2011-01-18'), value: 340.65}, 277 | {date: new Date('2011-01-19'), value: 338.84}, 278 | {date: new Date('2011-01-20'), value: 332.68}, 279 | {date: new Date('2011-01-21'), value: 326.72}, 280 | {date: new Date('2011-01-24'), value: 337.45}, 281 | {date: new Date('2011-01-25'), value: 341.40}, 282 | {date: new Date('2011-01-26'), value: 343.85}, 283 | {date: new Date('2011-01-27'), value: 343.21}, 284 | {date: new Date('2011-01-28'), value: 336.10}, 285 | {date: new Date('2011-01-31'), value: 339.32}, 286 | {date: new Date('2011-02-01'), value: 345.03}, 287 | {date: new Date('2011-02-02'), value: 344.32}, 288 | {date: new Date('2011-02-03'), value: 343.44}, 289 | {date: new Date('2011-02-04'), value: 346.50}, 290 | {date: new Date('2011-02-07'), value: 351.88}, 291 | {date: new Date('2011-02-08'), value: 355.20}, 292 | {date: new Date('2011-02-09'), value: 358.16}, 293 | {date: new Date('2011-02-10'), value: 354.54}, 294 | {date: new Date('2011-02-11'), value: 356.85}, 295 | {date: new Date('2011-02-14'), value: 359.18}, 296 | {date: new Date('2011-02-15'), value: 359.90}, 297 | {date: new Date('2011-02-16'), value: 363.13}, 298 | {date: new Date('2011-02-17'), value: 358.30}, 299 | {date: new Date('2011-02-18'), value: 350.56}, 300 | {date: new Date('2011-02-22'), value: 338.61}, 301 | {date: new Date('2011-02-23'), value: 342.62}, 302 | {date: new Date('2011-02-24'), value: 342.88}, 303 | {date: new Date('2011-02-25'), value: 348.16}, 304 | {date: new Date('2011-02-28'), value: 353.21}, 305 | {date: new Date('2011-03-01'), value: 349.31}, 306 | {date: new Date('2011-03-02'), value: 352.12}, 307 | {date: new Date('2011-03-03'), value: 359.56}, 308 | {date: new Date('2011-03-04'), value: 360.00}, 309 | {date: new Date('2011-03-07'), value: 355.36}, 310 | {date: new Date('2011-03-08'), value: 355.76}, 311 | {date: new Date('2011-03-09'), value: 352.47}, 312 | {date: new Date('2011-03-10'), value: 346.67}, 313 | {date: new Date('2011-03-11'), value: 351.99}, 314 | {date: new Date('2011-03-14'), value: 353.56}, 315 | {date: new Date('2011-03-15'), value: 345.43}, 316 | {date: new Date('2011-03-16'), value: 330.01}, 317 | {date: new Date('2011-03-17'), value: 334.64}, 318 | {date: new Date('2011-03-18'), value: 330.67}, 319 | {date: new Date('2011-03-21'), value: 339.30}, 320 | {date: new Date('2011-03-22'), value: 341.20}, 321 | {date: new Date('2011-03-23'), value: 339.19}, 322 | {date: new Date('2011-03-24'), value: 344.97}, 323 | {date: new Date('2011-03-25'), value: 351.54}, 324 | {date: new Date('2011-03-28'), value: 350.44}, 325 | {date: new Date('2011-03-29'), value: 350.96}, 326 | {date: new Date('2011-03-30'), value: 348.63}, 327 | {date: new Date('2011-03-31'), value: 348.51}, 328 | {date: new Date('2011-04-01'), value: 344.56}, 329 | {date: new Date('2011-04-04'), value: 341.19}, 330 | {date: new Date('2011-04-05'), value: 338.89}, 331 | {date: new Date('2011-04-06'), value: 338.04}, 332 | {date: new Date('2011-04-07'), value: 338.08}, 333 | {date: new Date('2011-04-08'), value: 335.06}, 334 | {date: new Date('2011-04-11'), value: 330.80}, 335 | {date: new Date('2011-04-12'), value: 332.40}, 336 | {date: new Date('2011-04-13'), value: 336.13}, 337 | {date: new Date('2011-04-14'), value: 332.42}, 338 | {date: new Date('2011-04-15'), value: 327.46}, 339 | {date: new Date('2011-04-18'), value: 331.85}, 340 | {date: new Date('2011-04-19'), value: 337.86}, 341 | {date: new Date('2011-04-20'), value: 342.41}, 342 | {date: new Date('2011-04-21'), value: 350.70}, 343 | {date: new Date('2011-04-25'), value: 353.01}, 344 | {date: new Date('2011-04-26'), value: 350.42}, 345 | {date: new Date('2011-04-27'), value: 350.15}, 346 | {date: new Date('2011-04-28'), value: 346.75}, 347 | {date: new Date('2011-04-29'), value: 350.13}, 348 | {date: new Date('2011-05-02'), value: 346.28}, 349 | {date: new Date('2011-05-03'), value: 348.20}, 350 | {date: new Date('2011-05-04'), value: 349.57}, 351 | {date: new Date('2011-05-05'), value: 346.75}, 352 | {date: new Date('2011-05-06'), value: 346.66}, 353 | {date: new Date('2011-05-09'), value: 347.60}, 354 | {date: new Date('2011-05-10'), value: 349.45}, 355 | {date: new Date('2011-05-11'), value: 347.23}, 356 | {date: new Date('2011-05-12'), value: 346.57}, 357 | {date: new Date('2011-05-13'), value: 340.50}, 358 | {date: new Date('2011-05-16'), value: 333.30}, 359 | {date: new Date('2011-05-17'), value: 336.14}, 360 | {date: new Date('2011-05-18'), value: 339.87}, 361 | {date: new Date('2011-05-19'), value: 340.53}, 362 | {date: new Date('2011-05-20'), value: 335.22}, 363 | {date: new Date('2011-05-23'), value: 334.40}, 364 | {date: new Date('2011-05-24'), value: 332.19}, 365 | {date: new Date('2011-05-25'), value: 336.78}, 366 | {date: new Date('2011-05-26'), value: 335.00}, 367 | {date: new Date('2011-05-27'), value: 337.41}, 368 | {date: new Date('2011-05-31'), value: 347.83}, 369 | {date: new Date('2011-06-01'), value: 345.51}, 370 | {date: new Date('2011-06-02'), value: 346.10}, 371 | {date: new Date('2011-06-03'), value: 343.44}, 372 | {date: new Date('2011-06-06'), value: 338.04}, 373 | {date: new Date('2011-06-07'), value: 332.04}, 374 | {date: new Date('2011-06-08'), value: 332.24}, 375 | {date: new Date('2011-06-09'), value: 331.49}, 376 | {date: new Date('2011-06-10'), value: 325.90}, 377 | {date: new Date('2011-06-13'), value: 326.60}, 378 | {date: new Date('2011-06-14'), value: 332.44}, 379 | {date: new Date('2011-06-15'), value: 326.75}, 380 | {date: new Date('2011-06-16'), value: 325.16}, 381 | {date: new Date('2011-06-17'), value: 320.26}, 382 | {date: new Date('2011-06-20'), value: 315.32}, 383 | {date: new Date('2011-06-21'), value: 325.30}, 384 | {date: new Date('2011-06-22'), value: 322.61}, 385 | {date: new Date('2011-06-23'), value: 331.23}, 386 | {date: new Date('2011-06-24'), value: 326.35}, 387 | {date: new Date('2011-06-27'), value: 332.04}, 388 | {date: new Date('2011-06-28'), value: 335.26}, 389 | {date: new Date('2011-06-29'), value: 334.04}, 390 | {date: new Date('2011-06-30'), value: 335.67}, 391 | {date: new Date('2011-07-01'), value: 343.26}, 392 | {date: new Date('2011-07-05'), value: 349.43}, 393 | {date: new Date('2011-07-06'), value: 351.76}, 394 | {date: new Date('2011-07-07'), value: 357.20}, 395 | {date: new Date('2011-07-08'), value: 359.71}, 396 | {date: new Date('2011-07-11'), value: 354.00}, 397 | {date: new Date('2011-07-12'), value: 353.75}, 398 | {date: new Date('2011-07-13'), value: 358.02}, 399 | {date: new Date('2011-07-14'), value: 357.77}, 400 | {date: new Date('2011-07-15'), value: 364.92}, 401 | {date: new Date('2011-07-18'), value: 373.80}, 402 | {date: new Date('2011-07-19'), value: 376.85}, 403 | {date: new Date('2011-07-20'), value: 386.90}, 404 | {date: new Date('2011-07-21'), value: 387.29}, 405 | {date: new Date('2011-07-22'), value: 393.30}, 406 | {date: new Date('2011-07-25'), value: 398.50}, 407 | {date: new Date('2011-07-26'), value: 403.41}, 408 | {date: new Date('2011-07-27'), value: 392.59}, 409 | {date: new Date('2011-07-28'), value: 391.82}, 410 | {date: new Date('2011-07-29'), value: 390.48}, 411 | {date: new Date('2011-08-01'), value: 396.75}, 412 | {date: new Date('2011-08-02'), value: 388.91}, 413 | {date: new Date('2011-08-03'), value: 392.57}, 414 | {date: new Date('2011-08-04'), value: 377.37}, 415 | {date: new Date('2011-08-05'), value: 373.62}, 416 | {date: new Date('2011-08-08'), value: 353.21}, 417 | {date: new Date('2011-08-09'), value: 374.01}, 418 | {date: new Date('2011-08-10'), value: 363.69}, 419 | {date: new Date('2011-08-11'), value: 373.70}, 420 | {date: new Date('2011-08-12'), value: 376.99}, 421 | {date: new Date('2011-08-15'), value: 383.41}, 422 | {date: new Date('2011-08-16'), value: 380.48}, 423 | {date: new Date('2011-08-17'), value: 380.44}, 424 | {date: new Date('2011-08-18'), value: 366.05}, 425 | {date: new Date('2011-08-19'), value: 356.03}, 426 | {date: new Date('2011-08-22'), value: 356.44}, 427 | {date: new Date('2011-08-23'), value: 373.60}, 428 | {date: new Date('2011-08-24'), value: 376.18}, 429 | {date: new Date('2011-08-25'), value: 373.72}, 430 | {date: new Date('2011-08-26'), value: 383.58}, 431 | {date: new Date('2011-08-29'), value: 389.97}, 432 | {date: new Date('2011-08-30'), value: 389.99}, 433 | {date: new Date('2011-08-31'), value: 384.83}, 434 | {date: new Date('2011-09-01'), value: 381.03}, 435 | {date: new Date('2011-09-02'), value: 374.05}, 436 | {date: new Date('2011-09-06'), value: 379.74}, 437 | {date: new Date('2011-09-07'), value: 383.93}, 438 | {date: new Date('2011-09-08'), value: 384.14}, 439 | {date: new Date('2011-09-09'), value: 377.48}, 440 | {date: new Date('2011-09-12'), value: 379.94}, 441 | {date: new Date('2011-09-13'), value: 384.62}, 442 | {date: new Date('2011-09-14'), value: 389.30}, 443 | {date: new Date('2011-09-15'), value: 392.96}, 444 | {date: new Date('2011-09-16'), value: 400.50}, 445 | {date: new Date('2011-09-19'), value: 411.63}, 446 | {date: new Date('2011-09-20'), value: 413.45}, 447 | {date: new Date('2011-09-21'), value: 412.14}, 448 | {date: new Date('2011-09-22'), value: 401.82}, 449 | {date: new Date('2011-09-23'), value: 404.30}, 450 | {date: new Date('2011-09-26'), value: 403.17}, 451 | {date: new Date('2011-09-27'), value: 399.26}, 452 | {date: new Date('2011-09-28'), value: 397.01}, 453 | {date: new Date('2011-09-29'), value: 390.57}, 454 | {date: new Date('2011-09-30'), value: 381.32}, 455 | {date: new Date('2011-10-03'), value: 374.60}, 456 | {date: new Date('2011-10-04'), value: 372.50}, 457 | {date: new Date('2011-10-05'), value: 378.25}, 458 | {date: new Date('2011-10-06'), value: 377.37}, 459 | {date: new Date('2011-10-07'), value: 369.80}, 460 | {date: new Date('2011-10-10'), value: 388.81}, 461 | {date: new Date('2011-10-11'), value: 400.29}, 462 | {date: new Date('2011-10-12'), value: 402.19}, 463 | {date: new Date('2011-10-13'), value: 408.43}, 464 | {date: new Date('2011-10-14'), value: 422.00}, 465 | {date: new Date('2011-10-17'), value: 419.99}, 466 | {date: new Date('2011-10-18'), value: 422.24}, 467 | {date: new Date('2011-10-19'), value: 398.62}, 468 | {date: new Date('2011-10-20'), value: 395.31}, 469 | {date: new Date('2011-10-21'), value: 392.87}, 470 | {date: new Date('2011-10-24'), value: 405.77}, 471 | {date: new Date('2011-10-25'), value: 397.77}, 472 | {date: new Date('2011-10-26'), value: 400.60}, 473 | {date: new Date('2011-10-27'), value: 404.69}, 474 | {date: new Date('2011-10-28'), value: 404.95}, 475 | {date: new Date('2011-10-31'), value: 404.78}, 476 | {date: new Date('2011-11-01'), value: 396.51}, 477 | {date: new Date('2011-11-02'), value: 397.41}, 478 | {date: new Date('2011-11-03'), value: 403.07}, 479 | {date: new Date('2011-11-04'), value: 400.24}, 480 | {date: new Date('2011-11-07'), value: 399.73}, 481 | {date: new Date('2011-11-08'), value: 406.23}, 482 | {date: new Date('2011-11-09'), value: 395.28}, 483 | {date: new Date('2011-11-10'), value: 385.22}, 484 | {date: new Date('2011-11-11'), value: 384.62}, 485 | {date: new Date('2011-11-14'), value: 379.26}, 486 | {date: new Date('2011-11-15'), value: 388.83}, 487 | {date: new Date('2011-11-16'), value: 384.77}, 488 | {date: new Date('2011-11-17'), value: 377.41}, 489 | {date: new Date('2011-11-18'), value: 374.94}, 490 | {date: new Date('2011-11-21'), value: 369.01}, 491 | {date: new Date('2011-11-22'), value: 376.51}, 492 | {date: new Date('2011-11-23'), value: 366.99}, 493 | {date: new Date('2011-11-25'), value: 363.57}, 494 | {date: new Date('2011-11-28'), value: 376.12}, 495 | {date: new Date('2011-11-29'), value: 373.20}, 496 | {date: new Date('2011-11-30'), value: 382.20}, 497 | {date: new Date('2011-12-01'), value: 387.93}, 498 | {date: new Date('2011-12-02'), value: 389.70}, 499 | {date: new Date('2011-12-05'), value: 393.01}, 500 | {date: new Date('2011-12-06'), value: 390.95}, 501 | {date: new Date('2011-12-07'), value: 389.09}, 502 | {date: new Date('2011-12-08'), value: 390.66}, 503 | {date: new Date('2011-12-09'), value: 393.62}, 504 | {date: new Date('2011-12-12'), value: 391.84}, 505 | {date: new Date('2011-12-13'), value: 388.81}, 506 | {date: new Date('2011-12-14'), value: 380.19}, 507 | {date: new Date('2011-12-15'), value: 378.94}, 508 | {date: new Date('2011-12-16'), value: 381.02}, 509 | {date: new Date('2011-12-19'), value: 382.21}, 510 | {date: new Date('2011-12-20'), value: 395.95}, 511 | {date: new Date('2011-12-21'), value: 396.44}, 512 | {date: new Date('2011-12-22'), value: 398.55}, 513 | {date: new Date('2011-12-23'), value: 403.43}, 514 | {date: new Date('2011-12-27'), value: 406.53}, 515 | {date: new Date('2011-12-28'), value: 402.64}, 516 | {date: new Date('2011-12-29'), value: 405.12}, 517 | {date: new Date('2011-12-30'), value: 405.00}, 518 | {date: new Date('2012-01-03'), value: 411.23}, 519 | {date: new Date('2012-01-04'), value: 413.44}, 520 | {date: new Date('2012-01-05'), value: 418.03}, 521 | {date: new Date('2012-01-06'), value: 422.40}, 522 | {date: new Date('2012-01-09'), value: 421.73}, 523 | {date: new Date('2012-01-10'), value: 423.24}, 524 | {date: new Date('2012-01-11'), value: 422.55}, 525 | {date: new Date('2012-01-12'), value: 421.39}, 526 | {date: new Date('2012-01-13'), value: 419.81}, 527 | {date: new Date('2012-01-17'), value: 424.70}, 528 | {date: new Date('2012-01-18'), value: 429.11}, 529 | {date: new Date('2012-01-19'), value: 427.75}, 530 | {date: new Date('2012-01-20'), value: 420.30}, 531 | {date: new Date('2012-01-23'), value: 427.41}, 532 | {date: new Date('2012-01-24'), value: 420.41}, 533 | {date: new Date('2012-01-25'), value: 446.66}, 534 | {date: new Date('2012-01-26'), value: 444.63}, 535 | {date: new Date('2012-01-27'), value: 447.28}, 536 | {date: new Date('2012-01-30'), value: 453.01}, 537 | {date: new Date('2012-01-31'), value: 456.48}, 538 | {date: new Date('2012-02-01'), value: 456.19}, 539 | {date: new Date('2012-02-02'), value: 455.12}, 540 | {date: new Date('2012-02-03'), value: 459.68}, 541 | {date: new Date('2012-02-06'), value: 463.97}, 542 | {date: new Date('2012-02-07'), value: 468.83}, 543 | {date: new Date('2012-02-08'), value: 476.68}, 544 | {date: new Date('2012-02-09'), value: 493.17}, 545 | {date: new Date('2012-02-10'), value: 493.42}, 546 | {date: new Date('2012-02-13'), value: 502.60}, 547 | {date: new Date('2012-02-14'), value: 509.46}, 548 | {date: new Date('2012-02-15'), value: 497.67}, 549 | {date: new Date('2012-02-16'), value: 502.21}, 550 | {date: new Date('2012-02-17'), value: 502.12}, 551 | {date: new Date('2012-02-21'), value: 514.85}, 552 | {date: new Date('2012-02-22'), value: 513.04}, 553 | {date: new Date('2012-02-23'), value: 516.39}, 554 | {date: new Date('2012-02-24'), value: 522.41}, 555 | {date: new Date('2012-02-27'), value: 525.76}, 556 | {date: new Date('2012-02-28'), value: 535.41}, 557 | {date: new Date('2012-02-29'), value: 542.44}, 558 | {date: new Date('2012-03-01'), value: 544.47}, 559 | {date: new Date('2012-03-02'), value: 545.18}, 560 | {date: new Date('2012-03-05'), value: 533.16}, 561 | {date: new Date('2012-03-06'), value: 530.26}, 562 | {date: new Date('2012-03-07'), value: 530.69}, 563 | {date: new Date('2012-03-08'), value: 541.99}, 564 | {date: new Date('2012-03-09'), value: 545.17}, 565 | {date: new Date('2012-03-12'), value: 552.00}, 566 | {date: new Date('2012-03-13'), value: 568.10}, 567 | {date: new Date('2012-03-14'), value: 589.58}, 568 | {date: new Date('2012-03-15'), value: 585.56}, 569 | {date: new Date('2012-03-16'), value: 585.57}, 570 | {date: new Date('2012-03-19'), value: 601.10}, 571 | {date: new Date('2012-03-20'), value: 605.96}, 572 | {date: new Date('2012-03-21'), value: 602.50}, 573 | {date: new Date('2012-03-22'), value: 599.34}, 574 | {date: new Date('2012-03-23'), value: 596.05}, 575 | {date: new Date('2012-03-26'), value: 606.98}, 576 | {date: new Date('2012-03-27'), value: 614.48}, 577 | {date: new Date('2012-03-28'), value: 617.62}, 578 | {date: new Date('2012-03-29'), value: 609.86}, 579 | {date: new Date('2012-03-30'), value: 599.55}, 580 | {date: new Date('2012-04-02'), value: 618.63}, 581 | {date: new Date('2012-04-03'), value: 629.32}, 582 | {date: new Date('2012-04-04'), value: 624.31}, 583 | {date: new Date('2012-04-05'), value: 633.68}, 584 | {date: new Date('2012-04-09'), value: 636.23}, 585 | {date: new Date('2012-04-10'), value: 628.44}, 586 | {date: new Date('2012-04-11'), value: 626.20}, 587 | {date: new Date('2012-04-12'), value: 622.77}, 588 | {date: new Date('2012-04-13'), value: 605.23}, 589 | {date: new Date('2012-04-16'), value: 580.13}, 590 | {date: new Date('2012-04-17'), value: 609.70}, 591 | {date: new Date('2012-04-18'), value: 608.34}, 592 | {date: new Date('2012-04-19'), value: 587.44}, 593 | {date: new Date('2012-04-20'), value: 572.98}, 594 | {date: new Date('2012-04-23'), value: 571.70}, 595 | {date: new Date('2012-04-24'), value: 560.28}, 596 | {date: new Date('2012-04-25'), value: 610.00}, 597 | {date: new Date('2012-04-26'), value: 607.70}, 598 | {date: new Date('2012-04-27'), value: 603.00}, 599 | {date: new Date('2012-04-30'), value: 583.98}, 600 | {date: new Date('2012-05-01'), value: 582.13}, 601 | ]; 602 | -------------------------------------------------------------------------------- /src/app/shared/temperatures.ts: -------------------------------------------------------------------------------- 1 | export const TEMPERATURES = [ 2 | { 3 | 'id': 'New York', 4 | 'values': [ 5 | {'date': new Date('2011-10-01'), 'temperature': 63.4}, 6 | {'date': new Date('2011-10-02'), 'temperature': 58.0}, 7 | {'date': new Date('2011-10-03'), 'temperature': 53.3}, 8 | {'date': new Date('2011-10-04'), 'temperature': 55.7}, 9 | {'date': new Date('2011-10-05'), 'temperature': 64.2}, 10 | {'date': new Date('2011-10-06'), 'temperature': 58.8}, 11 | {'date': new Date('2011-10-07'), 'temperature': 57.9}, 12 | {'date': new Date('2011-10-08'), 'temperature': 61.8}, 13 | {'date': new Date('2011-10-09'), 'temperature': 69.3}, 14 | {'date': new Date('2011-10-10'), 'temperature': 71.2}, 15 | {'date': new Date('2011-10-11'), 'temperature': 68.7}, 16 | {'date': new Date('2011-10-12'), 'temperature': 61.8}, 17 | {'date': new Date('2011-10-13'), 'temperature': 63.0}, 18 | {'date': new Date('2011-10-14'), 'temperature': 66.9}, 19 | {'date': new Date('2011-10-15'), 'temperature': 61.7}, 20 | {'date': new Date('2011-10-16'), 'temperature': 61.8}, 21 | {'date': new Date('2011-10-17'), 'temperature': 62.8}, 22 | {'date': new Date('2011-10-18'), 'temperature': 60.8}, 23 | {'date': new Date('2011-10-19'), 'temperature': 62.1}, 24 | {'date': new Date('2011-10-20'), 'temperature': 65.1}, 25 | {'date': new Date('2011-10-21'), 'temperature': 55.6}, 26 | {'date': new Date('2011-10-22'), 'temperature': 54.4}, 27 | {'date': new Date('2011-10-23'), 'temperature': 54.4}, 28 | {'date': new Date('2011-10-24'), 'temperature': 54.8}, 29 | {'date': new Date('2011-10-25'), 'temperature': 57.9}, 30 | {'date': new Date('2011-10-26'), 'temperature': 54.6}, 31 | {'date': new Date('2011-10-27'), 'temperature': 54.4}, 32 | {'date': new Date('2011-10-28'), 'temperature': 42.5}, 33 | {'date': new Date('2011-10-29'), 'temperature': 40.9}, 34 | {'date': new Date('2011-10-30'), 'temperature': 38.6}, 35 | {'date': new Date('2011-10-31'), 'temperature': 44.2}, 36 | {'date': new Date('2011-11-01'), 'temperature': 49.6}, 37 | {'date': new Date('2011-11-02'), 'temperature': 47.2}, 38 | {'date': new Date('2011-11-03'), 'temperature': 50.1}, 39 | {'date': new Date('2011-11-04'), 'temperature': 50.1}, 40 | {'date': new Date('2011-11-05'), 'temperature': 43.5}, 41 | {'date': new Date('2011-11-06'), 'temperature': 43.8}, 42 | {'date': new Date('2011-11-07'), 'temperature': 48.9}, 43 | {'date': new Date('2011-11-08'), 'temperature': 55.5}, 44 | {'date': new Date('2011-11-09'), 'temperature': 53.7}, 45 | {'date': new Date('2011-11-10'), 'temperature': 57.7}, 46 | {'date': new Date('2011-11-11'), 'temperature': 48.5}, 47 | {'date': new Date('2011-11-12'), 'temperature': 46.8}, 48 | {'date': new Date('2011-11-13'), 'temperature': 51.1}, 49 | {'date': new Date('2011-11-14'), 'temperature': 56.8}, 50 | {'date': new Date('2011-11-15'), 'temperature': 59.7}, 51 | {'date': new Date('2011-11-16'), 'temperature': 56.5}, 52 | {'date': new Date('2011-11-17'), 'temperature': 49.6}, 53 | {'date': new Date('2011-11-18'), 'temperature': 41.5}, 54 | {'date': new Date('2011-11-19'), 'temperature': 44.3}, 55 | {'date': new Date('2011-11-20'), 'temperature': 54.0}, 56 | {'date': new Date('2011-11-21'), 'temperature': 54.1}, 57 | {'date': new Date('2011-11-22'), 'temperature': 49.4}, 58 | {'date': new Date('2011-11-23'), 'temperature': 50.0}, 59 | {'date': new Date('2011-11-24'), 'temperature': 44.0}, 60 | {'date': new Date('2011-11-25'), 'temperature': 50.3}, 61 | {'date': new Date('2011-11-26'), 'temperature': 52.1}, 62 | {'date': new Date('2011-11-27'), 'temperature': 49.6}, 63 | {'date': new Date('2011-11-28'), 'temperature': 57.2}, 64 | {'date': new Date('2011-11-29'), 'temperature': 59.1}, 65 | {'date': new Date('2011-11-30'), 'temperature': 50.6}, 66 | {'date': new Date('2011-12-01'), 'temperature': 44.3}, 67 | {'date': new Date('2011-12-02'), 'temperature': 43.9}, 68 | {'date': new Date('2011-12-03'), 'temperature': 42.1}, 69 | {'date': new Date('2011-12-04'), 'temperature': 43.9}, 70 | {'date': new Date('2011-12-05'), 'temperature': 50.2}, 71 | {'date': new Date('2011-12-06'), 'temperature': 54.2}, 72 | {'date': new Date('2011-12-07'), 'temperature': 54.6}, 73 | {'date': new Date('2011-12-08'), 'temperature': 43.4}, 74 | {'date': new Date('2011-12-09'), 'temperature': 42.2}, 75 | {'date': new Date('2011-12-10'), 'temperature': 45.0}, 76 | {'date': new Date('2011-12-11'), 'temperature': 33.8}, 77 | {'date': new Date('2011-12-12'), 'temperature': 36.8}, 78 | {'date': new Date('2011-12-13'), 'temperature': 38.6}, 79 | {'date': new Date('2011-12-14'), 'temperature': 41.9}, 80 | {'date': new Date('2011-12-15'), 'temperature': 49.6}, 81 | {'date': new Date('2011-12-16'), 'temperature': 50.2}, 82 | {'date': new Date('2011-12-17'), 'temperature': 40.6}, 83 | {'date': new Date('2011-12-18'), 'temperature': 29.1}, 84 | {'date': new Date('2011-12-19'), 'temperature': 33.7}, 85 | {'date': new Date('2011-12-20'), 'temperature': 45.8}, 86 | {'date': new Date('2011-12-21'), 'temperature': 47.4}, 87 | {'date': new Date('2011-12-22'), 'temperature': 54.4}, 88 | {'date': new Date('2011-12-23'), 'temperature': 47.8}, 89 | {'date': new Date('2011-12-24'), 'temperature': 34.9}, 90 | {'date': new Date('2011-12-25'), 'temperature': 35.9}, 91 | {'date': new Date('2011-12-26'), 'temperature': 43.6}, 92 | {'date': new Date('2011-12-27'), 'temperature': 42.9}, 93 | {'date': new Date('2011-12-28'), 'temperature': 46.2}, 94 | {'date': new Date('2011-12-29'), 'temperature': 30.8}, 95 | {'date': new Date('2011-12-30'), 'temperature': 40.8}, 96 | {'date': new Date('2011-12-31'), 'temperature': 49.8}, 97 | {'date': new Date('2012-01-01'), 'temperature': 46.3}, 98 | {'date': new Date('2012-01-02'), 'temperature': 43.2}, 99 | {'date': new Date('2012-01-03'), 'temperature': 30.3}, 100 | {'date': new Date('2012-01-04'), 'temperature': 19.2}, 101 | {'date': new Date('2012-01-05'), 'temperature': 32.1}, 102 | {'date': new Date('2012-01-06'), 'temperature': 41.2}, 103 | {'date': new Date('2012-01-07'), 'temperature': 47.0}, 104 | {'date': new Date('2012-01-08'), 'temperature': 46.0}, 105 | {'date': new Date('2012-01-09'), 'temperature': 34.7}, 106 | {'date': new Date('2012-01-10'), 'temperature': 39.4}, 107 | {'date': new Date('2012-01-11'), 'temperature': 40.4}, 108 | {'date': new Date('2012-01-12'), 'temperature': 45.4}, 109 | {'date': new Date('2012-01-13'), 'temperature': 40.7}, 110 | {'date': new Date('2012-01-14'), 'temperature': 30.4}, 111 | {'date': new Date('2012-01-15'), 'temperature': 23.9}, 112 | {'date': new Date('2012-01-16'), 'temperature': 22.6}, 113 | {'date': new Date('2012-01-17'), 'temperature': 39.8}, 114 | {'date': new Date('2012-01-18'), 'temperature': 43.2}, 115 | {'date': new Date('2012-01-19'), 'temperature': 26.3}, 116 | {'date': new Date('2012-01-20'), 'temperature': 32.8}, 117 | {'date': new Date('2012-01-21'), 'temperature': 27.4}, 118 | {'date': new Date('2012-01-22'), 'temperature': 25.0}, 119 | {'date': new Date('2012-01-23'), 'temperature': 39.4}, 120 | {'date': new Date('2012-01-24'), 'temperature': 48.7}, 121 | {'date': new Date('2012-01-25'), 'temperature': 43.0}, 122 | {'date': new Date('2012-01-26'), 'temperature': 37.1}, 123 | {'date': new Date('2012-01-27'), 'temperature': 48.2}, 124 | {'date': new Date('2012-01-28'), 'temperature': 43.7}, 125 | {'date': new Date('2012-01-29'), 'temperature': 40.1}, 126 | {'date': new Date('2012-01-30'), 'temperature': 38.0}, 127 | {'date': new Date('2012-01-31'), 'temperature': 43.5}, 128 | {'date': new Date('2012-02-01'), 'temperature': 50.4}, 129 | {'date': new Date('2012-02-02'), 'temperature': 45.8}, 130 | {'date': new Date('2012-02-03'), 'temperature': 37.5}, 131 | {'date': new Date('2012-02-04'), 'temperature': 40.8}, 132 | {'date': new Date('2012-02-05'), 'temperature': 36.5}, 133 | {'date': new Date('2012-02-06'), 'temperature': 39.1}, 134 | {'date': new Date('2012-02-07'), 'temperature': 43.2}, 135 | {'date': new Date('2012-02-08'), 'temperature': 36.5}, 136 | {'date': new Date('2012-02-09'), 'temperature': 36.5}, 137 | {'date': new Date('2012-02-10'), 'temperature': 38.3}, 138 | {'date': new Date('2012-02-11'), 'temperature': 36.9}, 139 | {'date': new Date('2012-02-12'), 'temperature': 29.7}, 140 | {'date': new Date('2012-02-13'), 'temperature': 33.1}, 141 | {'date': new Date('2012-02-14'), 'temperature': 39.6}, 142 | {'date': new Date('2012-02-15'), 'temperature': 42.3}, 143 | {'date': new Date('2012-02-16'), 'temperature': 39.7}, 144 | {'date': new Date('2012-02-17'), 'temperature': 46.0}, 145 | {'date': new Date('2012-02-18'), 'temperature': 41.2}, 146 | {'date': new Date('2012-02-19'), 'temperature': 39.8}, 147 | {'date': new Date('2012-02-20'), 'temperature': 38.1}, 148 | {'date': new Date('2012-02-21'), 'temperature': 37.1}, 149 | {'date': new Date('2012-02-22'), 'temperature': 45.5}, 150 | {'date': new Date('2012-02-23'), 'temperature': 50.6}, 151 | {'date': new Date('2012-02-24'), 'temperature': 42.7}, 152 | {'date': new Date('2012-02-25'), 'temperature': 42.6}, 153 | {'date': new Date('2012-02-26'), 'temperature': 36.9}, 154 | {'date': new Date('2012-02-27'), 'temperature': 40.9}, 155 | {'date': new Date('2012-02-28'), 'temperature': 45.9}, 156 | {'date': new Date('2012-02-29'), 'temperature': 40.7}, 157 | {'date': new Date('2012-03-01'), 'temperature': 41.3}, 158 | {'date': new Date('2012-03-02'), 'temperature': 36.8}, 159 | {'date': new Date('2012-03-03'), 'temperature': 47.6}, 160 | {'date': new Date('2012-03-04'), 'temperature': 44.2}, 161 | {'date': new Date('2012-03-05'), 'temperature': 38.5}, 162 | {'date': new Date('2012-03-06'), 'temperature': 32.9}, 163 | {'date': new Date('2012-03-07'), 'temperature': 43.3}, 164 | {'date': new Date('2012-03-08'), 'temperature': 51.2}, 165 | {'date': new Date('2012-03-09'), 'temperature': 47.8}, 166 | {'date': new Date('2012-03-10'), 'temperature': 37.2}, 167 | {'date': new Date('2012-03-11'), 'temperature': 42.9}, 168 | {'date': new Date('2012-03-12'), 'temperature': 48.8}, 169 | {'date': new Date('2012-03-13'), 'temperature': 52.6}, 170 | {'date': new Date('2012-03-14'), 'temperature': 60.5}, 171 | {'date': new Date('2012-03-15'), 'temperature': 47.2}, 172 | {'date': new Date('2012-03-16'), 'temperature': 44.7}, 173 | {'date': new Date('2012-03-17'), 'temperature': 48.2}, 174 | {'date': new Date('2012-03-18'), 'temperature': 48.2}, 175 | {'date': new Date('2012-03-19'), 'temperature': 53.1}, 176 | {'date': new Date('2012-03-20'), 'temperature': 57.8}, 177 | {'date': new Date('2012-03-21'), 'temperature': 57.5}, 178 | {'date': new Date('2012-03-22'), 'temperature': 57.3}, 179 | {'date': new Date('2012-03-23'), 'temperature': 61.7}, 180 | {'date': new Date('2012-03-24'), 'temperature': 55.8}, 181 | {'date': new Date('2012-03-25'), 'temperature': 48.4}, 182 | {'date': new Date('2012-03-26'), 'temperature': 49.8}, 183 | {'date': new Date('2012-03-27'), 'temperature': 39.6}, 184 | {'date': new Date('2012-03-28'), 'temperature': 49.7}, 185 | {'date': new Date('2012-03-29'), 'temperature': 56.8}, 186 | {'date': new Date('2012-03-30'), 'temperature': 46.5}, 187 | {'date': new Date('2012-03-31'), 'temperature': 42.2}, 188 | {'date': new Date('2012-04-01'), 'temperature': 45.3}, 189 | {'date': new Date('2012-04-02'), 'temperature': 48.1}, 190 | {'date': new Date('2012-04-03'), 'temperature': 51.2}, 191 | {'date': new Date('2012-04-04'), 'temperature': 61.0}, 192 | {'date': new Date('2012-04-05'), 'temperature': 50.7}, 193 | {'date': new Date('2012-04-06'), 'temperature': 48.0}, 194 | {'date': new Date('2012-04-07'), 'temperature': 51.1}, 195 | {'date': new Date('2012-04-08'), 'temperature': 55.7}, 196 | {'date': new Date('2012-04-09'), 'temperature': 58.3}, 197 | {'date': new Date('2012-04-10'), 'temperature': 55.0}, 198 | {'date': new Date('2012-04-11'), 'temperature': 49.0}, 199 | {'date': new Date('2012-04-12'), 'temperature': 51.7}, 200 | {'date': new Date('2012-04-13'), 'temperature': 53.1}, 201 | {'date': new Date('2012-04-14'), 'temperature': 55.2}, 202 | {'date': new Date('2012-04-15'), 'temperature': 62.3}, 203 | {'date': new Date('2012-04-16'), 'temperature': 62.9}, 204 | {'date': new Date('2012-04-17'), 'temperature': 69.3}, 205 | {'date': new Date('2012-04-18'), 'temperature': 59.0}, 206 | {'date': new Date('2012-04-19'), 'temperature': 54.1}, 207 | {'date': new Date('2012-04-20'), 'temperature': 56.5}, 208 | {'date': new Date('2012-04-21'), 'temperature': 58.2}, 209 | {'date': new Date('2012-04-22'), 'temperature': 52.4}, 210 | {'date': new Date('2012-04-23'), 'temperature': 51.6}, 211 | {'date': new Date('2012-04-24'), 'temperature': 49.3}, 212 | {'date': new Date('2012-04-25'), 'temperature': 52.5}, 213 | {'date': new Date('2012-04-26'), 'temperature': 50.5}, 214 | {'date': new Date('2012-04-27'), 'temperature': 51.9}, 215 | {'date': new Date('2012-04-28'), 'temperature': 47.4}, 216 | {'date': new Date('2012-04-29'), 'temperature': 54.1}, 217 | {'date': new Date('2012-04-30'), 'temperature': 51.9}, 218 | {'date': new Date('2012-05-01'), 'temperature': 57.4}, 219 | {'date': new Date('2012-05-02'), 'temperature': 53.7}, 220 | {'date': new Date('2012-05-03'), 'temperature': 53.1}, 221 | {'date': new Date('2012-05-04'), 'temperature': 57.2}, 222 | {'date': new Date('2012-05-05'), 'temperature': 57.0}, 223 | {'date': new Date('2012-05-06'), 'temperature': 56.6}, 224 | {'date': new Date('2012-05-07'), 'temperature': 54.6}, 225 | {'date': new Date('2012-05-08'), 'temperature': 57.9}, 226 | {'date': new Date('2012-05-09'), 'temperature': 59.2}, 227 | {'date': new Date('2012-05-10'), 'temperature': 61.1}, 228 | {'date': new Date('2012-05-11'), 'temperature': 59.7}, 229 | {'date': new Date('2012-05-12'), 'temperature': 64.1}, 230 | {'date': new Date('2012-05-13'), 'temperature': 65.3}, 231 | {'date': new Date('2012-05-14'), 'temperature': 64.2}, 232 | {'date': new Date('2012-05-15'), 'temperature': 62.0}, 233 | {'date': new Date('2012-05-16'), 'temperature': 63.8}, 234 | {'date': new Date('2012-05-17'), 'temperature': 64.5}, 235 | {'date': new Date('2012-05-18'), 'temperature': 61.0}, 236 | {'date': new Date('2012-05-19'), 'temperature': 62.6}, 237 | {'date': new Date('2012-05-20'), 'temperature': 66.2}, 238 | {'date': new Date('2012-05-21'), 'temperature': 62.7}, 239 | {'date': new Date('2012-05-22'), 'temperature': 63.7}, 240 | {'date': new Date('2012-05-23'), 'temperature': 66.4}, 241 | {'date': new Date('2012-05-24'), 'temperature': 64.5}, 242 | {'date': new Date('2012-05-25'), 'temperature': 65.4}, 243 | {'date': new Date('2012-05-26'), 'temperature': 69.4}, 244 | {'date': new Date('2012-05-27'), 'temperature': 71.9}, 245 | {'date': new Date('2012-05-28'), 'temperature': 74.4}, 246 | {'date': new Date('2012-05-29'), 'temperature': 75.9}, 247 | {'date': new Date('2012-05-30'), 'temperature': 72.9}, 248 | {'date': new Date('2012-05-31'), 'temperature': 72.5}, 249 | {'date': new Date('2012-06-01'), 'temperature': 67.2}, 250 | {'date': new Date('2012-06-02'), 'temperature': 68.3}, 251 | {'date': new Date('2012-06-03'), 'temperature': 67.7}, 252 | {'date': new Date('2012-06-04'), 'temperature': 61.9}, 253 | {'date': new Date('2012-06-05'), 'temperature': 58.3}, 254 | {'date': new Date('2012-06-06'), 'temperature': 61.7}, 255 | {'date': new Date('2012-06-07'), 'temperature': 66.7}, 256 | {'date': new Date('2012-06-08'), 'temperature': 68.7}, 257 | {'date': new Date('2012-06-09'), 'temperature': 72.2}, 258 | {'date': new Date('2012-06-10'), 'temperature': 72.6}, 259 | {'date': new Date('2012-06-11'), 'temperature': 69.2}, 260 | {'date': new Date('2012-06-12'), 'temperature': 66.9}, 261 | {'date': new Date('2012-06-13'), 'temperature': 66.7}, 262 | {'date': new Date('2012-06-14'), 'temperature': 67.7}, 263 | {'date': new Date('2012-06-15'), 'temperature': 68.5}, 264 | {'date': new Date('2012-06-16'), 'temperature': 67.5}, 265 | {'date': new Date('2012-06-17'), 'temperature': 64.2}, 266 | {'date': new Date('2012-06-18'), 'temperature': 61.7}, 267 | {'date': new Date('2012-06-19'), 'temperature': 66.4}, 268 | {'date': new Date('2012-06-20'), 'temperature': 77.9}, 269 | {'date': new Date('2012-06-21'), 'temperature': 88.3}, 270 | {'date': new Date('2012-06-22'), 'temperature': 82.2}, 271 | {'date': new Date('2012-06-23'), 'temperature': 77.0}, 272 | {'date': new Date('2012-06-24'), 'temperature': 75.4}, 273 | {'date': new Date('2012-06-25'), 'temperature': 70.9}, 274 | {'date': new Date('2012-06-26'), 'temperature': 65.9}, 275 | {'date': new Date('2012-06-27'), 'temperature': 73.5}, 276 | {'date': new Date('2012-06-28'), 'temperature': 77.4}, 277 | {'date': new Date('2012-06-29'), 'temperature': 79.6}, 278 | {'date': new Date('2012-06-30'), 'temperature': 84.2}, 279 | {'date': new Date('2012-07-01'), 'temperature': 81.8}, 280 | {'date': new Date('2012-07-02'), 'temperature': 82.5}, 281 | {'date': new Date('2012-07-03'), 'temperature': 80.2}, 282 | {'date': new Date('2012-07-04'), 'temperature': 77.8}, 283 | {'date': new Date('2012-07-05'), 'temperature': 86.1}, 284 | {'date': new Date('2012-07-06'), 'temperature': 79.9}, 285 | {'date': new Date('2012-07-07'), 'temperature': 83.5}, 286 | {'date': new Date('2012-07-08'), 'temperature': 81.5}, 287 | {'date': new Date('2012-07-09'), 'temperature': 77.8}, 288 | {'date': new Date('2012-07-10'), 'temperature': 76.1}, 289 | {'date': new Date('2012-07-11'), 'temperature': 76.3}, 290 | {'date': new Date('2012-07-12'), 'temperature': 75.8}, 291 | {'date': new Date('2012-07-13'), 'temperature': 77.2}, 292 | {'date': new Date('2012-07-14'), 'temperature': 79.3}, 293 | {'date': new Date('2012-07-15'), 'temperature': 78.9}, 294 | {'date': new Date('2012-07-16'), 'temperature': 79.6}, 295 | {'date': new Date('2012-07-17'), 'temperature': 83.3}, 296 | {'date': new Date('2012-07-18'), 'temperature': 84.3}, 297 | {'date': new Date('2012-07-19'), 'temperature': 75.1}, 298 | {'date': new Date('2012-07-20'), 'temperature': 68.4}, 299 | {'date': new Date('2012-07-21'), 'temperature': 68.4}, 300 | {'date': new Date('2012-07-22'), 'temperature': 72.2}, 301 | {'date': new Date('2012-07-23'), 'temperature': 75.6}, 302 | {'date': new Date('2012-07-24'), 'temperature': 82.6}, 303 | {'date': new Date('2012-07-25'), 'temperature': 78.4}, 304 | {'date': new Date('2012-07-26'), 'temperature': 77.0}, 305 | {'date': new Date('2012-07-27'), 'temperature': 79.4}, 306 | {'date': new Date('2012-07-28'), 'temperature': 77.4}, 307 | {'date': new Date('2012-07-29'), 'temperature': 72.5}, 308 | {'date': new Date('2012-07-30'), 'temperature': 72.9}, 309 | {'date': new Date('2012-07-31'), 'temperature': 73.6}, 310 | {'date': new Date('2012-08-01'), 'temperature': 75.0}, 311 | {'date': new Date('2012-08-02'), 'temperature': 77.7}, 312 | {'date': new Date('2012-08-03'), 'temperature': 79.7}, 313 | {'date': new Date('2012-08-04'), 'temperature': 79.6}, 314 | {'date': new Date('2012-08-05'), 'temperature': 81.5}, 315 | {'date': new Date('2012-08-06'), 'temperature': 80.0}, 316 | {'date': new Date('2012-08-07'), 'temperature': 75.7}, 317 | {'date': new Date('2012-08-08'), 'temperature': 77.8}, 318 | {'date': new Date('2012-08-09'), 'temperature': 78.6}, 319 | {'date': new Date('2012-08-10'), 'temperature': 77.8}, 320 | {'date': new Date('2012-08-11'), 'temperature': 78.5}, 321 | {'date': new Date('2012-08-12'), 'temperature': 78.8}, 322 | {'date': new Date('2012-08-13'), 'temperature': 78.6}, 323 | {'date': new Date('2012-08-14'), 'temperature': 76.8}, 324 | {'date': new Date('2012-08-15'), 'temperature': 76.7}, 325 | {'date': new Date('2012-08-16'), 'temperature': 75.9}, 326 | {'date': new Date('2012-08-17'), 'temperature': 77.6}, 327 | {'date': new Date('2012-08-18'), 'temperature': 72.6}, 328 | {'date': new Date('2012-08-19'), 'temperature': 70.4}, 329 | {'date': new Date('2012-08-20'), 'temperature': 71.8}, 330 | {'date': new Date('2012-08-21'), 'temperature': 73.6}, 331 | {'date': new Date('2012-08-22'), 'temperature': 74.7}, 332 | {'date': new Date('2012-08-23'), 'temperature': 74.6}, 333 | {'date': new Date('2012-08-24'), 'temperature': 76.0}, 334 | {'date': new Date('2012-08-25'), 'temperature': 76.2}, 335 | {'date': new Date('2012-08-26'), 'temperature': 73.4}, 336 | {'date': new Date('2012-08-27'), 'temperature': 74.6}, 337 | {'date': new Date('2012-08-28'), 'temperature': 79.4}, 338 | {'date': new Date('2012-08-29'), 'temperature': 74.7}, 339 | {'date': new Date('2012-08-30'), 'temperature': 73.5}, 340 | {'date': new Date('2012-08-31'), 'temperature': 77.9}, 341 | {'date': new Date('2012-09-01'), 'temperature': 80.7}, 342 | {'date': new Date('2012-09-02'), 'temperature': 75.1}, 343 | {'date': new Date('2012-09-03'), 'temperature': 73.5}, 344 | {'date': new Date('2012-09-04'), 'temperature': 73.5}, 345 | {'date': new Date('2012-09-05'), 'temperature': 77.7}, 346 | {'date': new Date('2012-09-06'), 'temperature': 74.2}, 347 | {'date': new Date('2012-09-07'), 'temperature': 76.0}, 348 | {'date': new Date('2012-09-08'), 'temperature': 77.1}, 349 | {'date': new Date('2012-09-09'), 'temperature': 69.7}, 350 | {'date': new Date('2012-09-10'), 'temperature': 67.8}, 351 | {'date': new Date('2012-09-11'), 'temperature': 64.0}, 352 | {'date': new Date('2012-09-12'), 'temperature': 68.1}, 353 | {'date': new Date('2012-09-13'), 'temperature': 69.3}, 354 | {'date': new Date('2012-09-14'), 'temperature': 70.0}, 355 | {'date': new Date('2012-09-15'), 'temperature': 69.3}, 356 | {'date': new Date('2012-09-16'), 'temperature': 66.3}, 357 | {'date': new Date('2012-09-17'), 'temperature': 67.0}, 358 | {'date': new Date('2012-09-18'), 'temperature': 72.8}, 359 | {'date': new Date('2012-09-19'), 'temperature': 67.2}, 360 | {'date': new Date('2012-09-20'), 'temperature': 62.1}, 361 | {'date': new Date('2012-09-21'), 'temperature': 64.0}, 362 | {'date': new Date('2012-09-22'), 'temperature': 65.5}, 363 | {'date': new Date('2012-09-23'), 'temperature': 65.7}, 364 | {'date': new Date('2012-09-24'), 'temperature': 60.4}, 365 | {'date': new Date('2012-09-25'), 'temperature': 63.2}, 366 | {'date': new Date('2012-09-26'), 'temperature': 68.5}, 367 | {'date': new Date('2012-09-27'), 'temperature': 69.2}, 368 | {'date': new Date('2012-09-28'), 'temperature': 68.7}, 369 | {'date': new Date('2012-09-29'), 'temperature': 62.5}, 370 | {'date': new Date('2012-09-30'), 'temperature': 62.3} 371 | ] 372 | }, 373 | { 374 | 'id': 'San Francisco', 375 | 'values': [ 376 | {'date': new Date('2011-10-01'), 'temperature': 62.7}, 377 | {'date': new Date('2011-10-02'), 'temperature': 59.9}, 378 | {'date': new Date('2011-10-03'), 'temperature': 59.1}, 379 | {'date': new Date('2011-10-04'), 'temperature': 58.8}, 380 | {'date': new Date('2011-10-05'), 'temperature': 58.7}, 381 | {'date': new Date('2011-10-06'), 'temperature': 57.0}, 382 | {'date': new Date('2011-10-07'), 'temperature': 56.7}, 383 | {'date': new Date('2011-10-08'), 'temperature': 56.8}, 384 | {'date': new Date('2011-10-09'), 'temperature': 56.7}, 385 | {'date': new Date('2011-10-10'), 'temperature': 60.1}, 386 | {'date': new Date('2011-10-11'), 'temperature': 61.1}, 387 | {'date': new Date('2011-10-12'), 'temperature': 61.5}, 388 | {'date': new Date('2011-10-13'), 'temperature': 64.3}, 389 | {'date': new Date('2011-10-14'), 'temperature': 67.1}, 390 | {'date': new Date('2011-10-15'), 'temperature': 64.6}, 391 | {'date': new Date('2011-10-16'), 'temperature': 61.6}, 392 | {'date': new Date('2011-10-17'), 'temperature': 61.1}, 393 | {'date': new Date('2011-10-18'), 'temperature': 59.2}, 394 | {'date': new Date('2011-10-19'), 'temperature': 58.9}, 395 | {'date': new Date('2011-10-20'), 'temperature': 57.2}, 396 | {'date': new Date('2011-10-21'), 'temperature': 56.4}, 397 | {'date': new Date('2011-10-22'), 'temperature': 60.7}, 398 | {'date': new Date('2011-10-23'), 'temperature': 65.1}, 399 | {'date': new Date('2011-10-24'), 'temperature': 60.9}, 400 | {'date': new Date('2011-10-25'), 'temperature': 56.1}, 401 | {'date': new Date('2011-10-26'), 'temperature': 54.6}, 402 | {'date': new Date('2011-10-27'), 'temperature': 56.1}, 403 | {'date': new Date('2011-10-28'), 'temperature': 58.1}, 404 | {'date': new Date('2011-10-29'), 'temperature': 57.5}, 405 | {'date': new Date('2011-10-30'), 'temperature': 57.7}, 406 | {'date': new Date('2011-10-31'), 'temperature': 55.1}, 407 | {'date': new Date('2011-11-01'), 'temperature': 57.9}, 408 | {'date': new Date('2011-11-02'), 'temperature': 64.6}, 409 | {'date': new Date('2011-11-03'), 'temperature': 56.2}, 410 | {'date': new Date('2011-11-04'), 'temperature': 50.5}, 411 | {'date': new Date('2011-11-05'), 'temperature': 51.3}, 412 | {'date': new Date('2011-11-06'), 'temperature': 52.6}, 413 | {'date': new Date('2011-11-07'), 'temperature': 51.4}, 414 | {'date': new Date('2011-11-08'), 'temperature': 50.6}, 415 | {'date': new Date('2011-11-09'), 'temperature': 54.6}, 416 | {'date': new Date('2011-11-10'), 'temperature': 55.6}, 417 | {'date': new Date('2011-11-11'), 'temperature': 53.9}, 418 | {'date': new Date('2011-11-12'), 'temperature': 54.0}, 419 | {'date': new Date('2011-11-13'), 'temperature': 53.8}, 420 | {'date': new Date('2011-11-14'), 'temperature': 53.5}, 421 | {'date': new Date('2011-11-15'), 'temperature': 53.4}, 422 | {'date': new Date('2011-11-16'), 'temperature': 52.2}, 423 | {'date': new Date('2011-11-17'), 'temperature': 52.7}, 424 | {'date': new Date('2011-11-18'), 'temperature': 53.1}, 425 | {'date': new Date('2011-11-19'), 'temperature': 49.0}, 426 | {'date': new Date('2011-11-20'), 'temperature': 50.4}, 427 | {'date': new Date('2011-11-21'), 'temperature': 51.1}, 428 | {'date': new Date('2011-11-22'), 'temperature': 52.3}, 429 | {'date': new Date('2011-11-23'), 'temperature': 54.6}, 430 | {'date': new Date('2011-11-24'), 'temperature': 55.1}, 431 | {'date': new Date('2011-11-25'), 'temperature': 51.5}, 432 | {'date': new Date('2011-11-26'), 'temperature': 53.6}, 433 | {'date': new Date('2011-11-27'), 'temperature': 52.3}, 434 | {'date': new Date('2011-11-28'), 'temperature': 51.0}, 435 | {'date': new Date('2011-11-29'), 'temperature': 49.5}, 436 | {'date': new Date('2011-11-30'), 'temperature': 49.8}, 437 | {'date': new Date('2011-12-01'), 'temperature': 60.4}, 438 | {'date': new Date('2011-12-02'), 'temperature': 62.2}, 439 | {'date': new Date('2011-12-03'), 'temperature': 58.3}, 440 | {'date': new Date('2011-12-04'), 'temperature': 52.7}, 441 | {'date': new Date('2011-12-05'), 'temperature': 51.5}, 442 | {'date': new Date('2011-12-06'), 'temperature': 49.9}, 443 | {'date': new Date('2011-12-07'), 'temperature': 48.6}, 444 | {'date': new Date('2011-12-08'), 'temperature': 46.4}, 445 | {'date': new Date('2011-12-09'), 'temperature': 49.8}, 446 | {'date': new Date('2011-12-10'), 'temperature': 52.1}, 447 | {'date': new Date('2011-12-11'), 'temperature': 48.8}, 448 | {'date': new Date('2011-12-12'), 'temperature': 47.4}, 449 | {'date': new Date('2011-12-13'), 'temperature': 47.2}, 450 | {'date': new Date('2011-12-14'), 'temperature': 46.1}, 451 | {'date': new Date('2011-12-15'), 'temperature': 48.8}, 452 | {'date': new Date('2011-12-16'), 'temperature': 47.9}, 453 | {'date': new Date('2011-12-17'), 'temperature': 49.8}, 454 | {'date': new Date('2011-12-18'), 'temperature': 49.1}, 455 | {'date': new Date('2011-12-19'), 'temperature': 48.3}, 456 | {'date': new Date('2011-12-20'), 'temperature': 49.3}, 457 | {'date': new Date('2011-12-21'), 'temperature': 48.4}, 458 | {'date': new Date('2011-12-22'), 'temperature': 53.3}, 459 | {'date': new Date('2011-12-23'), 'temperature': 47.5}, 460 | {'date': new Date('2011-12-24'), 'temperature': 47.9}, 461 | {'date': new Date('2011-12-25'), 'temperature': 48.9}, 462 | {'date': new Date('2011-12-26'), 'temperature': 45.9}, 463 | {'date': new Date('2011-12-27'), 'temperature': 47.2}, 464 | {'date': new Date('2011-12-28'), 'temperature': 48.9}, 465 | {'date': new Date('2011-12-29'), 'temperature': 50.9}, 466 | {'date': new Date('2011-12-30'), 'temperature': 52.9}, 467 | {'date': new Date('2011-12-31'), 'temperature': 50.1}, 468 | {'date': new Date('2012-01-01'), 'temperature': 53.9}, 469 | {'date': new Date('2012-01-02'), 'temperature': 53.1}, 470 | {'date': new Date('2012-01-03'), 'temperature': 49.7}, 471 | {'date': new Date('2012-01-04'), 'temperature': 52.7}, 472 | {'date': new Date('2012-01-05'), 'temperature': 52.6}, 473 | {'date': new Date('2012-01-06'), 'temperature': 49.0}, 474 | {'date': new Date('2012-01-07'), 'temperature': 51.0}, 475 | {'date': new Date('2012-01-08'), 'temperature': 56.8}, 476 | {'date': new Date('2012-01-09'), 'temperature': 52.3}, 477 | {'date': new Date('2012-01-10'), 'temperature': 51.6}, 478 | {'date': new Date('2012-01-11'), 'temperature': 49.8}, 479 | {'date': new Date('2012-01-12'), 'temperature': 51.9}, 480 | {'date': new Date('2012-01-13'), 'temperature': 53.7}, 481 | {'date': new Date('2012-01-14'), 'temperature': 52.9}, 482 | {'date': new Date('2012-01-15'), 'temperature': 49.7}, 483 | {'date': new Date('2012-01-16'), 'temperature': 45.3}, 484 | {'date': new Date('2012-01-17'), 'temperature': 43.6}, 485 | {'date': new Date('2012-01-18'), 'temperature': 45.0}, 486 | {'date': new Date('2012-01-19'), 'temperature': 47.3}, 487 | {'date': new Date('2012-01-20'), 'temperature': 51.4}, 488 | {'date': new Date('2012-01-21'), 'temperature': 53.7}, 489 | {'date': new Date('2012-01-22'), 'temperature': 48.3}, 490 | {'date': new Date('2012-01-23'), 'temperature': 52.9}, 491 | {'date': new Date('2012-01-24'), 'temperature': 49.1}, 492 | {'date': new Date('2012-01-25'), 'temperature': 52.1}, 493 | {'date': new Date('2012-01-26'), 'temperature': 53.6}, 494 | {'date': new Date('2012-01-27'), 'temperature': 50.4}, 495 | {'date': new Date('2012-01-28'), 'temperature': 50.3}, 496 | {'date': new Date('2012-01-29'), 'temperature': 53.8}, 497 | {'date': new Date('2012-01-30'), 'temperature': 51.9}, 498 | {'date': new Date('2012-01-31'), 'temperature': 50.0}, 499 | {'date': new Date('2012-02-01'), 'temperature': 50.0}, 500 | {'date': new Date('2012-02-02'), 'temperature': 51.3}, 501 | {'date': new Date('2012-02-03'), 'temperature': 51.5}, 502 | {'date': new Date('2012-02-04'), 'temperature': 52.0}, 503 | {'date': new Date('2012-02-05'), 'temperature': 53.8}, 504 | {'date': new Date('2012-02-06'), 'temperature': 54.6}, 505 | {'date': new Date('2012-02-07'), 'temperature': 54.3}, 506 | {'date': new Date('2012-02-08'), 'temperature': 51.9}, 507 | {'date': new Date('2012-02-09'), 'temperature': 53.8}, 508 | {'date': new Date('2012-02-10'), 'temperature': 53.9}, 509 | {'date': new Date('2012-02-11'), 'temperature': 52.3}, 510 | {'date': new Date('2012-02-12'), 'temperature': 50.1}, 511 | {'date': new Date('2012-02-13'), 'temperature': 49.5}, 512 | {'date': new Date('2012-02-14'), 'temperature': 48.6}, 513 | {'date': new Date('2012-02-15'), 'temperature': 49.9}, 514 | {'date': new Date('2012-02-16'), 'temperature': 52.4}, 515 | {'date': new Date('2012-02-17'), 'temperature': 49.9}, 516 | {'date': new Date('2012-02-18'), 'temperature': 51.6}, 517 | {'date': new Date('2012-02-19'), 'temperature': 47.8}, 518 | {'date': new Date('2012-02-20'), 'temperature': 48.7}, 519 | {'date': new Date('2012-02-21'), 'temperature': 49.7}, 520 | {'date': new Date('2012-02-22'), 'temperature': 53.4}, 521 | {'date': new Date('2012-02-23'), 'temperature': 54.1}, 522 | {'date': new Date('2012-02-24'), 'temperature': 55.9}, 523 | {'date': new Date('2012-02-25'), 'temperature': 51.7}, 524 | {'date': new Date('2012-02-26'), 'temperature': 47.7}, 525 | {'date': new Date('2012-02-27'), 'temperature': 45.4}, 526 | {'date': new Date('2012-02-28'), 'temperature': 47.0}, 527 | {'date': new Date('2012-02-29'), 'temperature': 49.8}, 528 | {'date': new Date('2012-03-01'), 'temperature': 48.9}, 529 | {'date': new Date('2012-03-02'), 'temperature': 48.1}, 530 | {'date': new Date('2012-03-03'), 'temperature': 50.7}, 531 | {'date': new Date('2012-03-04'), 'temperature': 55.0}, 532 | {'date': new Date('2012-03-05'), 'temperature': 48.8}, 533 | {'date': new Date('2012-03-06'), 'temperature': 48.4}, 534 | {'date': new Date('2012-03-07'), 'temperature': 49.9}, 535 | {'date': new Date('2012-03-08'), 'temperature': 49.2}, 536 | {'date': new Date('2012-03-09'), 'temperature': 51.7}, 537 | {'date': new Date('2012-03-10'), 'temperature': 49.3}, 538 | {'date': new Date('2012-03-11'), 'temperature': 50.0}, 539 | {'date': new Date('2012-03-12'), 'temperature': 48.6}, 540 | {'date': new Date('2012-03-13'), 'temperature': 53.9}, 541 | {'date': new Date('2012-03-14'), 'temperature': 55.2}, 542 | {'date': new Date('2012-03-15'), 'temperature': 55.9}, 543 | {'date': new Date('2012-03-16'), 'temperature': 54.6}, 544 | {'date': new Date('2012-03-17'), 'temperature': 48.2}, 545 | {'date': new Date('2012-03-18'), 'temperature': 47.1}, 546 | {'date': new Date('2012-03-19'), 'temperature': 45.8}, 547 | {'date': new Date('2012-03-20'), 'temperature': 49.7}, 548 | {'date': new Date('2012-03-21'), 'temperature': 51.4}, 549 | {'date': new Date('2012-03-22'), 'temperature': 51.4}, 550 | {'date': new Date('2012-03-23'), 'temperature': 48.4}, 551 | {'date': new Date('2012-03-24'), 'temperature': 49.0}, 552 | {'date': new Date('2012-03-25'), 'temperature': 46.4}, 553 | {'date': new Date('2012-03-26'), 'temperature': 49.7}, 554 | {'date': new Date('2012-03-27'), 'temperature': 54.1}, 555 | {'date': new Date('2012-03-28'), 'temperature': 54.6}, 556 | {'date': new Date('2012-03-29'), 'temperature': 52.3}, 557 | {'date': new Date('2012-03-30'), 'temperature': 54.5}, 558 | {'date': new Date('2012-03-31'), 'temperature': 56.2}, 559 | {'date': new Date('2012-04-01'), 'temperature': 51.1}, 560 | {'date': new Date('2012-04-02'), 'temperature': 50.5}, 561 | {'date': new Date('2012-04-03'), 'temperature': 52.2}, 562 | {'date': new Date('2012-04-04'), 'temperature': 50.6}, 563 | {'date': new Date('2012-04-05'), 'temperature': 47.9}, 564 | {'date': new Date('2012-04-06'), 'temperature': 47.4}, 565 | {'date': new Date('2012-04-07'), 'temperature': 49.4}, 566 | {'date': new Date('2012-04-08'), 'temperature': 50.0}, 567 | {'date': new Date('2012-04-09'), 'temperature': 51.3}, 568 | {'date': new Date('2012-04-10'), 'temperature': 53.8}, 569 | {'date': new Date('2012-04-11'), 'temperature': 52.9}, 570 | {'date': new Date('2012-04-12'), 'temperature': 53.9}, 571 | {'date': new Date('2012-04-13'), 'temperature': 50.2}, 572 | {'date': new Date('2012-04-14'), 'temperature': 50.9}, 573 | {'date': new Date('2012-04-15'), 'temperature': 51.5}, 574 | {'date': new Date('2012-04-16'), 'temperature': 51.9}, 575 | {'date': new Date('2012-04-17'), 'temperature': 53.2}, 576 | {'date': new Date('2012-04-18'), 'temperature': 53.0}, 577 | {'date': new Date('2012-04-19'), 'temperature': 55.1}, 578 | {'date': new Date('2012-04-20'), 'temperature': 55.8}, 579 | {'date': new Date('2012-04-21'), 'temperature': 58.0}, 580 | {'date': new Date('2012-04-22'), 'temperature': 52.8}, 581 | {'date': new Date('2012-04-23'), 'temperature': 55.1}, 582 | {'date': new Date('2012-04-24'), 'temperature': 57.9}, 583 | {'date': new Date('2012-04-25'), 'temperature': 57.5}, 584 | {'date': new Date('2012-04-26'), 'temperature': 55.3}, 585 | {'date': new Date('2012-04-27'), 'temperature': 53.5}, 586 | {'date': new Date('2012-04-28'), 'temperature': 54.7}, 587 | {'date': new Date('2012-04-29'), 'temperature': 54.0}, 588 | {'date': new Date('2012-04-30'), 'temperature': 53.4}, 589 | {'date': new Date('2012-05-01'), 'temperature': 52.7}, 590 | {'date': new Date('2012-05-02'), 'temperature': 50.7}, 591 | {'date': new Date('2012-05-03'), 'temperature': 52.6}, 592 | {'date': new Date('2012-05-04'), 'temperature': 53.4}, 593 | {'date': new Date('2012-05-05'), 'temperature': 53.1}, 594 | {'date': new Date('2012-05-06'), 'temperature': 56.5}, 595 | {'date': new Date('2012-05-07'), 'temperature': 55.3}, 596 | {'date': new Date('2012-05-08'), 'temperature': 52.0}, 597 | {'date': new Date('2012-05-09'), 'temperature': 52.4}, 598 | {'date': new Date('2012-05-10'), 'temperature': 53.4}, 599 | {'date': new Date('2012-05-11'), 'temperature': 53.1}, 600 | {'date': new Date('2012-05-12'), 'temperature': 49.9}, 601 | {'date': new Date('2012-05-13'), 'temperature': 52.0}, 602 | {'date': new Date('2012-05-14'), 'temperature': 56.0}, 603 | {'date': new Date('2012-05-15'), 'temperature': 53.0}, 604 | {'date': new Date('2012-05-16'), 'temperature': 51.0}, 605 | {'date': new Date('2012-05-17'), 'temperature': 51.4}, 606 | {'date': new Date('2012-05-18'), 'temperature': 52.2}, 607 | {'date': new Date('2012-05-19'), 'temperature': 52.4}, 608 | {'date': new Date('2012-05-20'), 'temperature': 54.5}, 609 | {'date': new Date('2012-05-21'), 'temperature': 52.8}, 610 | {'date': new Date('2012-05-22'), 'temperature': 53.9}, 611 | {'date': new Date('2012-05-23'), 'temperature': 56.5}, 612 | {'date': new Date('2012-05-24'), 'temperature': 54.7}, 613 | {'date': new Date('2012-05-25'), 'temperature': 52.5}, 614 | {'date': new Date('2012-05-26'), 'temperature': 52.1}, 615 | {'date': new Date('2012-05-27'), 'temperature': 52.2}, 616 | {'date': new Date('2012-05-28'), 'temperature': 52.9}, 617 | {'date': new Date('2012-05-29'), 'temperature': 52.1}, 618 | {'date': new Date('2012-05-30'), 'temperature': 52.1}, 619 | {'date': new Date('2012-05-31'), 'temperature': 53.3}, 620 | {'date': new Date('2012-06-01'), 'temperature': 54.8}, 621 | {'date': new Date('2012-06-02'), 'temperature': 54.0}, 622 | {'date': new Date('2012-06-03'), 'temperature': 52.3}, 623 | {'date': new Date('2012-06-04'), 'temperature': 55.3}, 624 | {'date': new Date('2012-06-05'), 'temperature': 53.5}, 625 | {'date': new Date('2012-06-06'), 'temperature': 54.1}, 626 | {'date': new Date('2012-06-07'), 'temperature': 53.9}, 627 | {'date': new Date('2012-06-08'), 'temperature': 54.4}, 628 | {'date': new Date('2012-06-09'), 'temperature': 55.0}, 629 | {'date': new Date('2012-06-10'), 'temperature': 60.0}, 630 | {'date': new Date('2012-06-11'), 'temperature': 57.2}, 631 | {'date': new Date('2012-06-12'), 'temperature': 55.1}, 632 | {'date': new Date('2012-06-13'), 'temperature': 53.3}, 633 | {'date': new Date('2012-06-14'), 'temperature': 53.4}, 634 | {'date': new Date('2012-06-15'), 'temperature': 54.6}, 635 | {'date': new Date('2012-06-16'), 'temperature': 57.0}, 636 | {'date': new Date('2012-06-17'), 'temperature': 55.6}, 637 | {'date': new Date('2012-06-18'), 'temperature': 52.5}, 638 | {'date': new Date('2012-06-19'), 'temperature': 53.9}, 639 | {'date': new Date('2012-06-20'), 'temperature': 55.3}, 640 | {'date': new Date('2012-06-21'), 'temperature': 53.3}, 641 | {'date': new Date('2012-06-22'), 'temperature': 54.1}, 642 | {'date': new Date('2012-06-23'), 'temperature': 55.2}, 643 | {'date': new Date('2012-06-24'), 'temperature': 55.8}, 644 | {'date': new Date('2012-06-25'), 'temperature': 56.8}, 645 | {'date': new Date('2012-06-26'), 'temperature': 57.5}, 646 | {'date': new Date('2012-06-27'), 'temperature': 57.7}, 647 | {'date': new Date('2012-06-28'), 'temperature': 56.6}, 648 | {'date': new Date('2012-06-29'), 'temperature': 56.4}, 649 | {'date': new Date('2012-06-30'), 'temperature': 58.4}, 650 | {'date': new Date('2012-07-01'), 'temperature': 58.8}, 651 | {'date': new Date('2012-07-02'), 'temperature': 56.4}, 652 | {'date': new Date('2012-07-03'), 'temperature': 56.5}, 653 | {'date': new Date('2012-07-04'), 'temperature': 55.8}, 654 | {'date': new Date('2012-07-05'), 'temperature': 54.8}, 655 | {'date': new Date('2012-07-06'), 'temperature': 54.9}, 656 | {'date': new Date('2012-07-07'), 'temperature': 54.7}, 657 | {'date': new Date('2012-07-08'), 'temperature': 52.8}, 658 | {'date': new Date('2012-07-09'), 'temperature': 53.7}, 659 | {'date': new Date('2012-07-10'), 'temperature': 53.1}, 660 | {'date': new Date('2012-07-11'), 'temperature': 52.7}, 661 | {'date': new Date('2012-07-12'), 'temperature': 52.0}, 662 | {'date': new Date('2012-07-13'), 'temperature': 53.4}, 663 | {'date': new Date('2012-07-14'), 'temperature': 54.0}, 664 | {'date': new Date('2012-07-15'), 'temperature': 54.0}, 665 | {'date': new Date('2012-07-16'), 'temperature': 54.5}, 666 | {'date': new Date('2012-07-17'), 'temperature': 56.7}, 667 | {'date': new Date('2012-07-18'), 'temperature': 57.5}, 668 | {'date': new Date('2012-07-19'), 'temperature': 57.1}, 669 | {'date': new Date('2012-07-20'), 'temperature': 58.1}, 670 | {'date': new Date('2012-07-21'), 'temperature': 57.6}, 671 | {'date': new Date('2012-07-22'), 'temperature': 56.0}, 672 | {'date': new Date('2012-07-23'), 'temperature': 56.6}, 673 | {'date': new Date('2012-07-24'), 'temperature': 57.8}, 674 | {'date': new Date('2012-07-25'), 'temperature': 57.5}, 675 | {'date': new Date('2012-07-26'), 'temperature': 56.4}, 676 | {'date': new Date('2012-07-27'), 'temperature': 55.3}, 677 | {'date': new Date('2012-07-28'), 'temperature': 55.0}, 678 | {'date': new Date('2012-07-29'), 'temperature': 55.6}, 679 | {'date': new Date('2012-07-30'), 'temperature': 55.6}, 680 | {'date': new Date('2012-07-31'), 'temperature': 55.9}, 681 | {'date': new Date('2012-08-01'), 'temperature': 55.4}, 682 | {'date': new Date('2012-08-02'), 'temperature': 54.4}, 683 | {'date': new Date('2012-08-03'), 'temperature': 53.7}, 684 | {'date': new Date('2012-08-04'), 'temperature': 54.1}, 685 | {'date': new Date('2012-08-05'), 'temperature': 57.8}, 686 | {'date': new Date('2012-08-06'), 'temperature': 58.2}, 687 | {'date': new Date('2012-08-07'), 'temperature': 58.0}, 688 | {'date': new Date('2012-08-08'), 'temperature': 57.0}, 689 | {'date': new Date('2012-08-09'), 'temperature': 55.0}, 690 | {'date': new Date('2012-08-10'), 'temperature': 54.8}, 691 | {'date': new Date('2012-08-11'), 'temperature': 53.0}, 692 | {'date': new Date('2012-08-12'), 'temperature': 52.5}, 693 | {'date': new Date('2012-08-13'), 'temperature': 53.3}, 694 | {'date': new Date('2012-08-14'), 'temperature': 53.9}, 695 | {'date': new Date('2012-08-15'), 'temperature': 56.2}, 696 | {'date': new Date('2012-08-16'), 'temperature': 57.1}, 697 | {'date': new Date('2012-08-17'), 'temperature': 55.3}, 698 | {'date': new Date('2012-08-18'), 'temperature': 56.2}, 699 | {'date': new Date('2012-08-19'), 'temperature': 54.3}, 700 | {'date': new Date('2012-08-20'), 'temperature': 53.1}, 701 | {'date': new Date('2012-08-21'), 'temperature': 53.4}, 702 | {'date': new Date('2012-08-22'), 'temperature': 54.5}, 703 | {'date': new Date('2012-08-23'), 'temperature': 55.7}, 704 | {'date': new Date('2012-08-24'), 'temperature': 54.8}, 705 | {'date': new Date('2012-08-25'), 'temperature': 53.8}, 706 | {'date': new Date('2012-08-26'), 'temperature': 56.5}, 707 | {'date': new Date('2012-08-27'), 'temperature': 58.3}, 708 | {'date': new Date('2012-08-28'), 'temperature': 58.7}, 709 | {'date': new Date('2012-08-29'), 'temperature': 57.5}, 710 | {'date': new Date('2012-08-30'), 'temperature': 55.9}, 711 | {'date': new Date('2012-08-31'), 'temperature': 55.4}, 712 | {'date': new Date('2012-09-01'), 'temperature': 55.7}, 713 | {'date': new Date('2012-09-02'), 'temperature': 53.1}, 714 | {'date': new Date('2012-09-03'), 'temperature': 53.5}, 715 | {'date': new Date('2012-09-04'), 'temperature': 52.5}, 716 | {'date': new Date('2012-09-05'), 'temperature': 54.5}, 717 | {'date': new Date('2012-09-06'), 'temperature': 56.3}, 718 | {'date': new Date('2012-09-07'), 'temperature': 56.4}, 719 | {'date': new Date('2012-09-08'), 'temperature': 56.5}, 720 | {'date': new Date('2012-09-09'), 'temperature': 56.4}, 721 | {'date': new Date('2012-09-10'), 'temperature': 55.4}, 722 | {'date': new Date('2012-09-11'), 'temperature': 56.2}, 723 | {'date': new Date('2012-09-12'), 'temperature': 55.7}, 724 | {'date': new Date('2012-09-13'), 'temperature': 54.3}, 725 | {'date': new Date('2012-09-14'), 'temperature': 55.2}, 726 | {'date': new Date('2012-09-15'), 'temperature': 54.3}, 727 | {'date': new Date('2012-09-16'), 'temperature': 52.9}, 728 | {'date': new Date('2012-09-17'), 'temperature': 54.8}, 729 | {'date': new Date('2012-09-18'), 'temperature': 54.8}, 730 | {'date': new Date('2012-09-19'), 'temperature': 56.8}, 731 | {'date': new Date('2012-09-20'), 'temperature': 55.4}, 732 | {'date': new Date('2012-09-21'), 'temperature': 55.8}, 733 | {'date': new Date('2012-09-22'), 'temperature': 55.9}, 734 | {'date': new Date('2012-09-23'), 'temperature': 52.8}, 735 | {'date': new Date('2012-09-24'), 'temperature': 54.5}, 736 | {'date': new Date('2012-09-25'), 'temperature': 53.3}, 737 | {'date': new Date('2012-09-26'), 'temperature': 53.6}, 738 | {'date': new Date('2012-09-27'), 'temperature': 52.1}, 739 | {'date': new Date('2012-09-28'), 'temperature': 52.6}, 740 | {'date': new Date('2012-09-29'), 'temperature': 53.9}, 741 | {'date': new Date('2012-09-30'), 'temperature': 55.1} 742 | ] 743 | }, 744 | { 745 | 'id': 'Austin', 746 | 'values': [ 747 | {'date': new Date('2011-10-01'), 'temperature': 72.2}, 748 | {'date': new Date('2011-10-02'), 'temperature': 67.7}, 749 | {'date': new Date('2011-10-03'), 'temperature': 69.4}, 750 | {'date': new Date('2011-10-04'), 'temperature': 68.0}, 751 | {'date': new Date('2011-10-05'), 'temperature': 72.4}, 752 | {'date': new Date('2011-10-06'), 'temperature': 77.0}, 753 | {'date': new Date('2011-10-07'), 'temperature': 82.3}, 754 | {'date': new Date('2011-10-08'), 'temperature': 78.9}, 755 | {'date': new Date('2011-10-09'), 'temperature': 68.8}, 756 | {'date': new Date('2011-10-10'), 'temperature': 68.7}, 757 | {'date': new Date('2011-10-11'), 'temperature': 70.3}, 758 | {'date': new Date('2011-10-12'), 'temperature': 75.3}, 759 | {'date': new Date('2011-10-13'), 'temperature': 76.6}, 760 | {'date': new Date('2011-10-14'), 'temperature': 66.6}, 761 | {'date': new Date('2011-10-15'), 'temperature': 68.0}, 762 | {'date': new Date('2011-10-16'), 'temperature': 70.6}, 763 | {'date': new Date('2011-10-17'), 'temperature': 71.1}, 764 | {'date': new Date('2011-10-18'), 'temperature': 70.0}, 765 | {'date': new Date('2011-10-19'), 'temperature': 61.6}, 766 | {'date': new Date('2011-10-20'), 'temperature': 57.4}, 767 | {'date': new Date('2011-10-21'), 'temperature': 64.3}, 768 | {'date': new Date('2011-10-22'), 'temperature': 72.4}, 769 | {'date': new Date('2011-10-23'), 'temperature': 72.4}, 770 | {'date': new Date('2011-10-24'), 'temperature': 72.5}, 771 | {'date': new Date('2011-10-25'), 'temperature': 72.7}, 772 | {'date': new Date('2011-10-26'), 'temperature': 73.4}, 773 | {'date': new Date('2011-10-27'), 'temperature': 70.7}, 774 | {'date': new Date('2011-10-28'), 'temperature': 56.8}, 775 | {'date': new Date('2011-10-29'), 'temperature': 51.0}, 776 | {'date': new Date('2011-10-30'), 'temperature': 54.9}, 777 | {'date': new Date('2011-10-31'), 'temperature': 58.8}, 778 | {'date': new Date('2011-11-01'), 'temperature': 62.6}, 779 | {'date': new Date('2011-11-02'), 'temperature': 71.0}, 780 | {'date': new Date('2011-11-03'), 'temperature': 58.4}, 781 | {'date': new Date('2011-11-04'), 'temperature': 45.1}, 782 | {'date': new Date('2011-11-05'), 'temperature': 52.2}, 783 | {'date': new Date('2011-11-06'), 'temperature': 73.0}, 784 | {'date': new Date('2011-11-07'), 'temperature': 75.4}, 785 | {'date': new Date('2011-11-08'), 'temperature': 72.1}, 786 | {'date': new Date('2011-11-09'), 'temperature': 56.6}, 787 | {'date': new Date('2011-11-10'), 'temperature': 55.4}, 788 | {'date': new Date('2011-11-11'), 'temperature': 46.7}, 789 | {'date': new Date('2011-11-12'), 'temperature': 62.0}, 790 | {'date': new Date('2011-11-13'), 'temperature': 71.6}, 791 | {'date': new Date('2011-11-14'), 'temperature': 75.5}, 792 | {'date': new Date('2011-11-15'), 'temperature': 72.1}, 793 | {'date': new Date('2011-11-16'), 'temperature': 65.7}, 794 | {'date': new Date('2011-11-17'), 'temperature': 56.8}, 795 | {'date': new Date('2011-11-18'), 'temperature': 49.9}, 796 | {'date': new Date('2011-11-19'), 'temperature': 71.7}, 797 | {'date': new Date('2011-11-20'), 'temperature': 77.7}, 798 | {'date': new Date('2011-11-21'), 'temperature': 76.4}, 799 | {'date': new Date('2011-11-22'), 'temperature': 68.8}, 800 | {'date': new Date('2011-11-23'), 'temperature': 57.0}, 801 | {'date': new Date('2011-11-24'), 'temperature': 55.5}, 802 | {'date': new Date('2011-11-25'), 'temperature': 61.6}, 803 | {'date': new Date('2011-11-26'), 'temperature': 64.1}, 804 | {'date': new Date('2011-11-27'), 'temperature': 51.1}, 805 | {'date': new Date('2011-11-28'), 'temperature': 43.0}, 806 | {'date': new Date('2011-11-29'), 'temperature': 46.4}, 807 | {'date': new Date('2011-11-30'), 'temperature': 48.0}, 808 | {'date': new Date('2011-12-01'), 'temperature': 48.1}, 809 | {'date': new Date('2011-12-02'), 'temperature': 60.6}, 810 | {'date': new Date('2011-12-03'), 'temperature': 62.6}, 811 | {'date': new Date('2011-12-04'), 'temperature': 57.1}, 812 | {'date': new Date('2011-12-05'), 'temperature': 44.2}, 813 | {'date': new Date('2011-12-06'), 'temperature': 37.4}, 814 | {'date': new Date('2011-12-07'), 'temperature': 35.0}, 815 | {'date': new Date('2011-12-08'), 'temperature': 37.0}, 816 | {'date': new Date('2011-12-09'), 'temperature': 45.4}, 817 | {'date': new Date('2011-12-10'), 'temperature': 50.7}, 818 | {'date': new Date('2011-12-11'), 'temperature': 48.6}, 819 | {'date': new Date('2011-12-12'), 'temperature': 52.2}, 820 | {'date': new Date('2011-12-13'), 'temperature': 60.8}, 821 | {'date': new Date('2011-12-14'), 'temperature': 70.0}, 822 | {'date': new Date('2011-12-15'), 'temperature': 64.2}, 823 | {'date': new Date('2011-12-16'), 'temperature': 50.9}, 824 | {'date': new Date('2011-12-17'), 'temperature': 51.6}, 825 | {'date': new Date('2011-12-18'), 'temperature': 55.2}, 826 | {'date': new Date('2011-12-19'), 'temperature': 62.1}, 827 | {'date': new Date('2011-12-20'), 'temperature': 56.3}, 828 | {'date': new Date('2011-12-21'), 'temperature': 47.2}, 829 | {'date': new Date('2011-12-22'), 'temperature': 52.3}, 830 | {'date': new Date('2011-12-23'), 'temperature': 45.2}, 831 | {'date': new Date('2011-12-24'), 'temperature': 43.6}, 832 | {'date': new Date('2011-12-25'), 'temperature': 42.9}, 833 | {'date': new Date('2011-12-26'), 'temperature': 48.2}, 834 | {'date': new Date('2011-12-27'), 'temperature': 45.4}, 835 | {'date': new Date('2011-12-28'), 'temperature': 44.2}, 836 | {'date': new Date('2011-12-29'), 'temperature': 50.4}, 837 | {'date': new Date('2011-12-30'), 'temperature': 52.4}, 838 | {'date': new Date('2011-12-31'), 'temperature': 53.5}, 839 | {'date': new Date('2012-01-01'), 'temperature': 55.9}, 840 | {'date': new Date('2012-01-02'), 'temperature': 48.2}, 841 | {'date': new Date('2012-01-03'), 'temperature': 41.0}, 842 | {'date': new Date('2012-01-04'), 'temperature': 48.9}, 843 | {'date': new Date('2012-01-05'), 'temperature': 54.8}, 844 | {'date': new Date('2012-01-06'), 'temperature': 61.2}, 845 | {'date': new Date('2012-01-07'), 'temperature': 59.7}, 846 | {'date': new Date('2012-01-08'), 'temperature': 52.5}, 847 | {'date': new Date('2012-01-09'), 'temperature': 54.0}, 848 | {'date': new Date('2012-01-10'), 'temperature': 47.7}, 849 | {'date': new Date('2012-01-11'), 'temperature': 49.2}, 850 | {'date': new Date('2012-01-12'), 'temperature': 48.4}, 851 | {'date': new Date('2012-01-13'), 'temperature': 40.2}, 852 | {'date': new Date('2012-01-14'), 'temperature': 43.9}, 853 | {'date': new Date('2012-01-15'), 'temperature': 45.2}, 854 | {'date': new Date('2012-01-16'), 'temperature': 65.0}, 855 | {'date': new Date('2012-01-17'), 'temperature': 68.2}, 856 | {'date': new Date('2012-01-18'), 'temperature': 47.5}, 857 | {'date': new Date('2012-01-19'), 'temperature': 57.1}, 858 | {'date': new Date('2012-01-20'), 'temperature': 61.9}, 859 | {'date': new Date('2012-01-21'), 'temperature': 54.6}, 860 | {'date': new Date('2012-01-22'), 'temperature': 56.7}, 861 | {'date': new Date('2012-01-23'), 'temperature': 54.4}, 862 | {'date': new Date('2012-01-24'), 'temperature': 52.7}, 863 | {'date': new Date('2012-01-25'), 'temperature': 61.8}, 864 | {'date': new Date('2012-01-26'), 'temperature': 55.0}, 865 | {'date': new Date('2012-01-27'), 'temperature': 50.7}, 866 | {'date': new Date('2012-01-28'), 'temperature': 52.9}, 867 | {'date': new Date('2012-01-29'), 'temperature': 44.4}, 868 | {'date': new Date('2012-01-30'), 'temperature': 49.1}, 869 | {'date': new Date('2012-01-31'), 'temperature': 62.8}, 870 | {'date': new Date('2012-02-01'), 'temperature': 64.6}, 871 | {'date': new Date('2012-02-02'), 'temperature': 61.1}, 872 | {'date': new Date('2012-02-03'), 'temperature': 70.0}, 873 | {'date': new Date('2012-02-04'), 'temperature': 61.3}, 874 | {'date': new Date('2012-02-05'), 'temperature': 48.2}, 875 | {'date': new Date('2012-02-06'), 'temperature': 44.2}, 876 | {'date': new Date('2012-02-07'), 'temperature': 51.3}, 877 | {'date': new Date('2012-02-08'), 'temperature': 49.2}, 878 | {'date': new Date('2012-02-09'), 'temperature': 45.7}, 879 | {'date': new Date('2012-02-10'), 'temperature': 54.1}, 880 | {'date': new Date('2012-02-11'), 'temperature': 44.9}, 881 | {'date': new Date('2012-02-12'), 'temperature': 36.5}, 882 | {'date': new Date('2012-02-13'), 'temperature': 44.8}, 883 | {'date': new Date('2012-02-14'), 'temperature': 52.3}, 884 | {'date': new Date('2012-02-15'), 'temperature': 68.0}, 885 | {'date': new Date('2012-02-16'), 'temperature': 54.6}, 886 | {'date': new Date('2012-02-17'), 'temperature': 53.8}, 887 | {'date': new Date('2012-02-18'), 'temperature': 56.2}, 888 | {'date': new Date('2012-02-19'), 'temperature': 50.8}, 889 | {'date': new Date('2012-02-20'), 'temperature': 53.0}, 890 | {'date': new Date('2012-02-21'), 'temperature': 61.0}, 891 | {'date': new Date('2012-02-22'), 'temperature': 68.8}, 892 | {'date': new Date('2012-02-23'), 'temperature': 69.4}, 893 | {'date': new Date('2012-02-24'), 'temperature': 59.3}, 894 | {'date': new Date('2012-02-25'), 'temperature': 47.2}, 895 | {'date': new Date('2012-02-26'), 'temperature': 47.7}, 896 | {'date': new Date('2012-02-27'), 'temperature': 61.9}, 897 | {'date': new Date('2012-02-28'), 'temperature': 67.2}, 898 | {'date': new Date('2012-02-29'), 'temperature': 70.1}, 899 | {'date': new Date('2012-03-01'), 'temperature': 62.1}, 900 | {'date': new Date('2012-03-02'), 'temperature': 72.7}, 901 | {'date': new Date('2012-03-03'), 'temperature': 59.0}, 902 | {'date': new Date('2012-03-04'), 'temperature': 51.8}, 903 | {'date': new Date('2012-03-05'), 'temperature': 55.0}, 904 | {'date': new Date('2012-03-06'), 'temperature': 61.8}, 905 | {'date': new Date('2012-03-07'), 'temperature': 67.1}, 906 | {'date': new Date('2012-03-08'), 'temperature': 72.0}, 907 | {'date': new Date('2012-03-09'), 'temperature': 46.4}, 908 | {'date': new Date('2012-03-10'), 'temperature': 46.7}, 909 | {'date': new Date('2012-03-11'), 'temperature': 56.9}, 910 | {'date': new Date('2012-03-12'), 'temperature': 61.9}, 911 | {'date': new Date('2012-03-13'), 'temperature': 68.8}, 912 | {'date': new Date('2012-03-14'), 'temperature': 71.9}, 913 | {'date': new Date('2012-03-15'), 'temperature': 72.0}, 914 | {'date': new Date('2012-03-16'), 'temperature': 72.5}, 915 | {'date': new Date('2012-03-17'), 'temperature': 71.7}, 916 | {'date': new Date('2012-03-18'), 'temperature': 71.1}, 917 | {'date': new Date('2012-03-19'), 'temperature': 73.0}, 918 | {'date': new Date('2012-03-20'), 'temperature': 63.8}, 919 | {'date': new Date('2012-03-21'), 'temperature': 60.0}, 920 | {'date': new Date('2012-03-22'), 'temperature': 62.3}, 921 | {'date': new Date('2012-03-23'), 'temperature': 61.1}, 922 | {'date': new Date('2012-03-24'), 'temperature': 62.0}, 923 | {'date': new Date('2012-03-25'), 'temperature': 64.6}, 924 | {'date': new Date('2012-03-26'), 'temperature': 66.0}, 925 | {'date': new Date('2012-03-27'), 'temperature': 65.8}, 926 | {'date': new Date('2012-03-28'), 'temperature': 69.2}, 927 | {'date': new Date('2012-03-29'), 'temperature': 69.5}, 928 | {'date': new Date('2012-03-30'), 'temperature': 73.5}, 929 | {'date': new Date('2012-03-31'), 'temperature': 73.9}, 930 | {'date': new Date('2012-04-01'), 'temperature': 75.3}, 931 | {'date': new Date('2012-04-02'), 'temperature': 75.4}, 932 | {'date': new Date('2012-04-03'), 'temperature': 77.3}, 933 | {'date': new Date('2012-04-04'), 'temperature': 67.0}, 934 | {'date': new Date('2012-04-05'), 'temperature': 71.1}, 935 | {'date': new Date('2012-04-06'), 'temperature': 70.4}, 936 | {'date': new Date('2012-04-07'), 'temperature': 73.6}, 937 | {'date': new Date('2012-04-08'), 'temperature': 71.1}, 938 | {'date': new Date('2012-04-09'), 'temperature': 70.0}, 939 | {'date': new Date('2012-04-10'), 'temperature': 69.0}, 940 | {'date': new Date('2012-04-11'), 'temperature': 69.2}, 941 | {'date': new Date('2012-04-12'), 'temperature': 74.5}, 942 | {'date': new Date('2012-04-13'), 'temperature': 73.4}, 943 | {'date': new Date('2012-04-14'), 'temperature': 76.0}, 944 | {'date': new Date('2012-04-15'), 'temperature': 74.5}, 945 | {'date': new Date('2012-04-16'), 'temperature': 63.6}, 946 | {'date': new Date('2012-04-17'), 'temperature': 67.3}, 947 | {'date': new Date('2012-04-18'), 'temperature': 65.1}, 948 | {'date': new Date('2012-04-19'), 'temperature': 67.9}, 949 | {'date': new Date('2012-04-20'), 'temperature': 68.9}, 950 | {'date': new Date('2012-04-21'), 'temperature': 65.1}, 951 | {'date': new Date('2012-04-22'), 'temperature': 65.4}, 952 | {'date': new Date('2012-04-23'), 'temperature': 70.1}, 953 | {'date': new Date('2012-04-24'), 'temperature': 67.0}, 954 | {'date': new Date('2012-04-25'), 'temperature': 75.4}, 955 | {'date': new Date('2012-04-26'), 'temperature': 77.5}, 956 | {'date': new Date('2012-04-27'), 'temperature': 77.0}, 957 | {'date': new Date('2012-04-28'), 'temperature': 77.7}, 958 | {'date': new Date('2012-04-29'), 'temperature': 77.7}, 959 | {'date': new Date('2012-04-30'), 'temperature': 77.7}, 960 | {'date': new Date('2012-05-01'), 'temperature': 77.0}, 961 | {'date': new Date('2012-05-02'), 'temperature': 77.9}, 962 | {'date': new Date('2012-05-03'), 'temperature': 79.1}, 963 | {'date': new Date('2012-05-04'), 'temperature': 80.1}, 964 | {'date': new Date('2012-05-05'), 'temperature': 82.1}, 965 | {'date': new Date('2012-05-06'), 'temperature': 79.0}, 966 | {'date': new Date('2012-05-07'), 'temperature': 79.8}, 967 | {'date': new Date('2012-05-08'), 'temperature': 70.0}, 968 | {'date': new Date('2012-05-09'), 'temperature': 69.8}, 969 | {'date': new Date('2012-05-10'), 'temperature': 71.3}, 970 | {'date': new Date('2012-05-11'), 'temperature': 69.4}, 971 | {'date': new Date('2012-05-12'), 'temperature': 72.0}, 972 | {'date': new Date('2012-05-13'), 'temperature': 72.4}, 973 | {'date': new Date('2012-05-14'), 'temperature': 72.5}, 974 | {'date': new Date('2012-05-15'), 'temperature': 67.6}, 975 | {'date': new Date('2012-05-16'), 'temperature': 69.0}, 976 | {'date': new Date('2012-05-17'), 'temperature': 72.7}, 977 | {'date': new Date('2012-05-18'), 'temperature': 73.7}, 978 | {'date': new Date('2012-05-19'), 'temperature': 77.5}, 979 | {'date': new Date('2012-05-20'), 'temperature': 75.8}, 980 | {'date': new Date('2012-05-21'), 'temperature': 76.9}, 981 | {'date': new Date('2012-05-22'), 'temperature': 78.8}, 982 | {'date': new Date('2012-05-23'), 'temperature': 77.7}, 983 | {'date': new Date('2012-05-24'), 'temperature': 80.6}, 984 | {'date': new Date('2012-05-25'), 'temperature': 81.4}, 985 | {'date': new Date('2012-05-26'), 'temperature': 82.3}, 986 | {'date': new Date('2012-05-27'), 'temperature': 80.3}, 987 | {'date': new Date('2012-05-28'), 'temperature': 80.3}, 988 | {'date': new Date('2012-05-29'), 'temperature': 82.2}, 989 | {'date': new Date('2012-05-30'), 'temperature': 81.9}, 990 | {'date': new Date('2012-05-31'), 'temperature': 82.4}, 991 | {'date': new Date('2012-06-01'), 'temperature': 77.9}, 992 | {'date': new Date('2012-06-02'), 'temperature': 81.1}, 993 | {'date': new Date('2012-06-03'), 'temperature': 82.2}, 994 | {'date': new Date('2012-06-04'), 'temperature': 81.2}, 995 | {'date': new Date('2012-06-05'), 'temperature': 83.0}, 996 | {'date': new Date('2012-06-06'), 'temperature': 83.2}, 997 | {'date': new Date('2012-06-07'), 'temperature': 82.1}, 998 | {'date': new Date('2012-06-08'), 'temperature': 77.5}, 999 | {'date': new Date('2012-06-09'), 'temperature': 77.9}, 1000 | {'date': new Date('2012-06-10'), 'temperature': 82.9}, 1001 | {'date': new Date('2012-06-11'), 'temperature': 86.8}, 1002 | {'date': new Date('2012-06-12'), 'temperature': 85.3}, 1003 | {'date': new Date('2012-06-13'), 'temperature': 76.9}, 1004 | {'date': new Date('2012-06-14'), 'temperature': 84.5}, 1005 | {'date': new Date('2012-06-15'), 'temperature': 84.4}, 1006 | {'date': new Date('2012-06-16'), 'temperature': 83.8}, 1007 | {'date': new Date('2012-06-17'), 'temperature': 82.5}, 1008 | {'date': new Date('2012-06-18'), 'temperature': 82.9}, 1009 | {'date': new Date('2012-06-19'), 'temperature': 82.5}, 1010 | {'date': new Date('2012-06-20'), 'temperature': 81.3}, 1011 | {'date': new Date('2012-06-21'), 'temperature': 80.8}, 1012 | {'date': new Date('2012-06-22'), 'temperature': 81.7}, 1013 | {'date': new Date('2012-06-23'), 'temperature': 83.9}, 1014 | {'date': new Date('2012-06-24'), 'temperature': 85.5}, 1015 | {'date': new Date('2012-06-25'), 'temperature': 87.2}, 1016 | {'date': new Date('2012-06-26'), 'temperature': 88.0}, 1017 | {'date': new Date('2012-06-27'), 'temperature': 89.6}, 1018 | {'date': new Date('2012-06-28'), 'temperature': 86.7}, 1019 | {'date': new Date('2012-06-29'), 'temperature': 85.3}, 1020 | {'date': new Date('2012-06-30'), 'temperature': 81.7}, 1021 | {'date': new Date('2012-07-01'), 'temperature': 78.5}, 1022 | {'date': new Date('2012-07-02'), 'temperature': 83.1}, 1023 | {'date': new Date('2012-07-03'), 'temperature': 83.1}, 1024 | {'date': new Date('2012-07-04'), 'temperature': 84.5}, 1025 | {'date': new Date('2012-07-05'), 'temperature': 84.6}, 1026 | {'date': new Date('2012-07-06'), 'temperature': 84.2}, 1027 | {'date': new Date('2012-07-07'), 'temperature': 86.7}, 1028 | {'date': new Date('2012-07-08'), 'temperature': 84.3}, 1029 | {'date': new Date('2012-07-09'), 'temperature': 83.7}, 1030 | {'date': new Date('2012-07-10'), 'temperature': 77.1}, 1031 | {'date': new Date('2012-07-11'), 'temperature': 77.4}, 1032 | {'date': new Date('2012-07-12'), 'temperature': 80.6}, 1033 | {'date': new Date('2012-07-13'), 'temperature': 81.4}, 1034 | {'date': new Date('2012-07-14'), 'temperature': 80.2}, 1035 | {'date': new Date('2012-07-15'), 'temperature': 81.8}, 1036 | {'date': new Date('2012-07-16'), 'temperature': 77.3}, 1037 | {'date': new Date('2012-07-17'), 'temperature': 80.8}, 1038 | {'date': new Date('2012-07-18'), 'temperature': 81.6}, 1039 | {'date': new Date('2012-07-19'), 'temperature': 80.9}, 1040 | {'date': new Date('2012-07-20'), 'temperature': 83.9}, 1041 | {'date': new Date('2012-07-21'), 'temperature': 85.6}, 1042 | {'date': new Date('2012-07-22'), 'temperature': 83.6}, 1043 | {'date': new Date('2012-07-23'), 'temperature': 84.0}, 1044 | {'date': new Date('2012-07-24'), 'temperature': 83.0}, 1045 | {'date': new Date('2012-07-25'), 'temperature': 84.8}, 1046 | {'date': new Date('2012-07-26'), 'temperature': 84.4}, 1047 | {'date': new Date('2012-07-27'), 'temperature': 84.3}, 1048 | {'date': new Date('2012-07-28'), 'temperature': 83.9}, 1049 | {'date': new Date('2012-07-29'), 'temperature': 85.0}, 1050 | {'date': new Date('2012-07-30'), 'temperature': 84.9}, 1051 | {'date': new Date('2012-07-31'), 'temperature': 86.3}, 1052 | {'date': new Date('2012-08-01'), 'temperature': 86.5}, 1053 | {'date': new Date('2012-08-02'), 'temperature': 85.8}, 1054 | {'date': new Date('2012-08-03'), 'temperature': 85.3}, 1055 | {'date': new Date('2012-08-04'), 'temperature': 86.0}, 1056 | {'date': new Date('2012-08-05'), 'temperature': 84.2}, 1057 | {'date': new Date('2012-08-06'), 'temperature': 81.9}, 1058 | {'date': new Date('2012-08-07'), 'temperature': 86.5}, 1059 | {'date': new Date('2012-08-08'), 'temperature': 86.1}, 1060 | {'date': new Date('2012-08-09'), 'temperature': 86.8}, 1061 | {'date': new Date('2012-08-10'), 'temperature': 88.0}, 1062 | {'date': new Date('2012-08-11'), 'temperature': 85.1}, 1063 | {'date': new Date('2012-08-12'), 'temperature': 87.4}, 1064 | {'date': new Date('2012-08-13'), 'temperature': 88.0}, 1065 | {'date': new Date('2012-08-14'), 'temperature': 88.0}, 1066 | {'date': new Date('2012-08-15'), 'temperature': 87.2}, 1067 | {'date': new Date('2012-08-16'), 'temperature': 86.1}, 1068 | {'date': new Date('2012-08-17'), 'temperature': 86.8}, 1069 | {'date': new Date('2012-08-18'), 'temperature': 84.9}, 1070 | {'date': new Date('2012-08-19'), 'temperature': 76.8}, 1071 | {'date': new Date('2012-08-20'), 'temperature': 80.6}, 1072 | {'date': new Date('2012-08-21'), 'temperature': 80.0}, 1073 | {'date': new Date('2012-08-22'), 'temperature': 78.2}, 1074 | {'date': new Date('2012-08-23'), 'temperature': 79.1}, 1075 | {'date': new Date('2012-08-24'), 'temperature': 81.9}, 1076 | {'date': new Date('2012-08-25'), 'temperature': 84.7}, 1077 | {'date': new Date('2012-08-26'), 'temperature': 83.5}, 1078 | {'date': new Date('2012-08-27'), 'temperature': 82.1}, 1079 | {'date': new Date('2012-08-28'), 'temperature': 84.0}, 1080 | {'date': new Date('2012-08-29'), 'temperature': 85.7}, 1081 | {'date': new Date('2012-08-30'), 'temperature': 87.2}, 1082 | {'date': new Date('2012-08-31'), 'temperature': 82.9}, 1083 | {'date': new Date('2012-09-01'), 'temperature': 84.8}, 1084 | {'date': new Date('2012-09-02'), 'temperature': 83.9}, 1085 | {'date': new Date('2012-09-03'), 'temperature': 85.5}, 1086 | {'date': new Date('2012-09-04'), 'temperature': 86.4}, 1087 | {'date': new Date('2012-09-05'), 'temperature': 85.8}, 1088 | {'date': new Date('2012-09-06'), 'temperature': 85.4}, 1089 | {'date': new Date('2012-09-07'), 'temperature': 85.3}, 1090 | {'date': new Date('2012-09-08'), 'temperature': 81.9}, 1091 | {'date': new Date('2012-09-09'), 'temperature': 74.8}, 1092 | {'date': new Date('2012-09-10'), 'temperature': 71.6}, 1093 | {'date': new Date('2012-09-11'), 'temperature': 75.9}, 1094 | {'date': new Date('2012-09-12'), 'temperature': 82.1}, 1095 | {'date': new Date('2012-09-13'), 'temperature': 80.5}, 1096 | {'date': new Date('2012-09-14'), 'temperature': 70.0}, 1097 | {'date': new Date('2012-09-15'), 'temperature': 71.2}, 1098 | {'date': new Date('2012-09-16'), 'temperature': 70.3}, 1099 | {'date': new Date('2012-09-17'), 'temperature': 72.1}, 1100 | {'date': new Date('2012-09-18'), 'temperature': 73.7}, 1101 | {'date': new Date('2012-09-19'), 'temperature': 72.7}, 1102 | {'date': new Date('2012-09-20'), 'temperature': 71.7}, 1103 | {'date': new Date('2012-09-21'), 'temperature': 72.9}, 1104 | {'date': new Date('2012-09-22'), 'temperature': 73.1}, 1105 | {'date': new Date('2012-09-23'), 'temperature': 75.6}, 1106 | {'date': new Date('2012-09-24'), 'temperature': 78.3}, 1107 | {'date': new Date('2012-09-25'), 'temperature': 78.3}, 1108 | {'date': new Date('2012-09-26'), 'temperature': 79.6}, 1109 | {'date': new Date('2012-09-27'), 'temperature': 76.4}, 1110 | {'date': new Date('2012-09-28'), 'temperature': 77.2}, 1111 | {'date': new Date('2012-09-29'), 'temperature': 75.2}, 1112 | {'date': new Date('2012-09-30'), 'temperature': 71.9} 1113 | ] 1114 | }, 1115 | ]; 1116 | -------------------------------------------------------------------------------- /src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datencia/d3js-angular-examples/15fb9bfac99246a8f8985f8e464fc1bebeb3823d/src/assets/.gitkeep -------------------------------------------------------------------------------- /src/browserslist: -------------------------------------------------------------------------------- 1 | # This file is currently used by autoprefixer to adjust CSS to support the below specified browsers 2 | # For additional information regarding the format and rule options, please see: 3 | # https://github.com/browserslist/browserslist#queries 4 | # For IE 9-11 support, please uncomment the last line of the file and adjust as needed 5 | > 0.5% 6 | last 2 versions 7 | Firefox ESR 8 | not dead 9 | # IE 9-11 -------------------------------------------------------------------------------- /src/environments/environment.prod.ts: -------------------------------------------------------------------------------- 1 | export const environment = { 2 | production: true 3 | }; 4 | -------------------------------------------------------------------------------- /src/environments/environment.ts: -------------------------------------------------------------------------------- 1 | // This file can be replaced during build by using the `fileReplacements` array. 2 | // `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`. 3 | // The list of file replacements can be found in `angular.json`. 4 | 5 | export const environment = { 6 | production: false 7 | }; 8 | 9 | /* 10 | * In development mode, to ignore zone related error stack frames such as 11 | * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can 12 | * import the following file, but please comment it out in production mode 13 | * because it will have performance impact when throw error 14 | */ 15 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI. 16 | -------------------------------------------------------------------------------- /src/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/datencia/d3js-angular-examples/15fb9bfac99246a8f8985f8e464fc1bebeb3823d/src/favicon.ico -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | D3jsAngularExample 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/1.0/config/configuration-file.html 3 | 4 | module.exports = function (config) { 5 | config.set({ 6 | basePath: '', 7 | frameworks: ['jasmine', '@angular-devkit/build-angular'], 8 | plugins: [ 9 | require('karma-jasmine'), 10 | require('karma-chrome-launcher'), 11 | require('karma-jasmine-html-reporter'), 12 | require('karma-coverage-istanbul-reporter'), 13 | require('@angular-devkit/build-angular/plugins/karma') 14 | ], 15 | client: { 16 | clearContext: false // leave Jasmine Spec Runner output visible in browser 17 | }, 18 | coverageIstanbulReporter: { 19 | dir: require('path').join(__dirname, '../coverage'), 20 | reports: ['html', 'lcovonly'], 21 | fixWebpackSourcePaths: true 22 | }, 23 | reporters: ['progress', 'kjhtml'], 24 | port: 9876, 25 | colors: true, 26 | logLevel: config.LOG_INFO, 27 | autoWatch: true, 28 | browsers: ['Chrome'], 29 | singleRun: false 30 | }); 31 | }; 32 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { enableProdMode } from '@angular/core'; 2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; 3 | 4 | import { AppModule } from './app/app.module'; 5 | import { environment } from './environments/environment'; 6 | 7 | if (environment.production) { 8 | enableProdMode(); 9 | } 10 | 11 | platformBrowserDynamic().bootstrapModule(AppModule) 12 | .catch(err => console.log(err)); 13 | -------------------------------------------------------------------------------- /src/polyfills.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * This file includes polyfills needed by Angular and is loaded before the app. 3 | * You can add your own extra polyfills to this file. 4 | * 5 | * This file is divided into 2 sections: 6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. 7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main 8 | * file. 9 | * 10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that 11 | * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), 12 | * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. 13 | * 14 | * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html 15 | */ 16 | 17 | /*************************************************************************************************** 18 | * BROWSER POLYFILLS 19 | */ 20 | 21 | /** IE9, IE10 and IE11 requires all of the following polyfills. **/ 22 | // import 'core-js/es6/symbol'; 23 | // import 'core-js/es6/object'; 24 | // import 'core-js/es6/function'; 25 | // import 'core-js/es6/parse-int'; 26 | // import 'core-js/es6/parse-float'; 27 | // import 'core-js/es6/number'; 28 | // import 'core-js/es6/math'; 29 | // import 'core-js/es6/string'; 30 | // import 'core-js/es6/date'; 31 | // import 'core-js/es6/array'; 32 | // import 'core-js/es6/regexp'; 33 | // import 'core-js/es6/map'; 34 | // import 'core-js/es6/weak-map'; 35 | // import 'core-js/es6/set'; 36 | 37 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */ 38 | // import 'classlist.js'; // Run `npm install --save classlist.js`. 39 | 40 | /** IE10 and IE11 requires the following for the Reflect API. */ 41 | // import 'core-js/es6/reflect'; 42 | 43 | 44 | /** Evergreen browsers require these. **/ 45 | // Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove. 46 | import 'core-js/es7/reflect'; 47 | 48 | 49 | /** 50 | * Web Animations `@angular/platform-browser/animations` 51 | * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. 52 | * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). 53 | **/ 54 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`. 55 | 56 | /** 57 | * By default, zone.js will patch all possible macroTask and DomEvents 58 | * user can disable parts of macroTask/DomEvents patch by setting following flags 59 | */ 60 | 61 | // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame 62 | // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick 63 | // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames 64 | 65 | /* 66 | * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js 67 | * with the following flag, it will bypass `zone.js` patch for IE/Edge 68 | */ 69 | // (window as any).__Zone_enable_cross_context_check = true; 70 | 71 | /*************************************************************************************************** 72 | * Zone JS is required by default for Angular itself. 73 | */ 74 | import 'zone.js/dist/zone'; // Included with Angular CLI. 75 | 76 | 77 | 78 | /*************************************************************************************************** 79 | * APPLICATION IMPORTS 80 | */ 81 | -------------------------------------------------------------------------------- /src/styles.css: -------------------------------------------------------------------------------- 1 | /* You can add global styles to this file, and also import other style files */ 2 | 3 | @import "~@angular/material/prebuilt-themes/indigo-pink.css"; 4 | -------------------------------------------------------------------------------- /src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import 'zone.js/dist/zone-testing'; 4 | import { getTestBed } from '@angular/core/testing'; 5 | import { 6 | BrowserDynamicTestingModule, 7 | platformBrowserDynamicTesting 8 | } from '@angular/platform-browser-dynamic/testing'; 9 | 10 | declare const require: any; 11 | 12 | // First, initialize the Angular testing environment. 13 | getTestBed().initTestEnvironment( 14 | BrowserDynamicTestingModule, 15 | platformBrowserDynamicTesting() 16 | ); 17 | // Then we find all the tests. 18 | const context = require.context('./', true, /\.spec\.ts$/); 19 | // And load the modules. 20 | context.keys().map(context); 21 | -------------------------------------------------------------------------------- /src/tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/app", 5 | "module": "es2015", 6 | "types": [] 7 | }, 8 | "exclude": [ 9 | "src/test.ts", 10 | "**/*.spec.ts" 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /src/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../out-tsc/spec", 5 | "module": "commonjs", 6 | "types": [ 7 | "jasmine", 8 | "node" 9 | ] 10 | }, 11 | "files": [ 12 | "test.ts", 13 | "polyfills.ts" 14 | ], 15 | "include": [ 16 | "**/*.spec.ts", 17 | "**/*.d.ts" 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /src/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "app", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "app", 14 | "kebab-case" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "moduleResolution": "node", 9 | "emitDecoratorMetadata": true, 10 | "experimentalDecorators": true, 11 | "target": "es5", 12 | "typeRoots": [ 13 | "node_modules/@types" 14 | ], 15 | "lib": [ 16 | "es2017", 17 | "dom" 18 | ] 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rulesDirectory": [ 3 | "node_modules/codelyzer" 4 | ], 5 | "rules": { 6 | "arrow-return-shorthand": true, 7 | "callable-types": true, 8 | "class-name": true, 9 | "comment-format": [ 10 | true, 11 | "check-space" 12 | ], 13 | "curly": true, 14 | "deprecation": { 15 | "severity": "warn" 16 | }, 17 | "eofline": true, 18 | "forin": true, 19 | "import-blacklist": [ 20 | true, 21 | "rxjs/Rx" 22 | ], 23 | "import-spacing": true, 24 | "indent": [ 25 | true, 26 | "spaces" 27 | ], 28 | "interface-over-type-literal": true, 29 | "label-position": true, 30 | "max-line-length": [ 31 | true, 32 | 140 33 | ], 34 | "member-access": false, 35 | "member-ordering": [ 36 | true, 37 | { 38 | "order": [ 39 | "static-field", 40 | "instance-field", 41 | "static-method", 42 | "instance-method" 43 | ] 44 | } 45 | ], 46 | "no-arg": true, 47 | "no-bitwise": true, 48 | "no-console": [ 49 | true, 50 | "debug", 51 | "info", 52 | "time", 53 | "timeEnd", 54 | "trace" 55 | ], 56 | "no-construct": true, 57 | "no-debugger": true, 58 | "no-duplicate-super": true, 59 | "no-empty": false, 60 | "no-empty-interface": true, 61 | "no-eval": true, 62 | "no-inferrable-types": [ 63 | true, 64 | "ignore-params" 65 | ], 66 | "no-misused-new": true, 67 | "no-non-null-assertion": true, 68 | "no-shadowed-variable": true, 69 | "no-string-literal": false, 70 | "no-string-throw": true, 71 | "no-switch-case-fall-through": true, 72 | "no-trailing-whitespace": true, 73 | "no-unnecessary-initializer": true, 74 | "no-unused-expression": true, 75 | "no-use-before-declare": true, 76 | "no-var-keyword": true, 77 | "object-literal-sort-keys": false, 78 | "one-line": [ 79 | true, 80 | "check-open-brace", 81 | "check-catch", 82 | "check-else", 83 | "check-whitespace" 84 | ], 85 | "prefer-const": true, 86 | "quotemark": [ 87 | true, 88 | "single" 89 | ], 90 | "radix": true, 91 | "semicolon": [ 92 | true, 93 | "always" 94 | ], 95 | "triple-equals": [ 96 | true, 97 | "allow-null-check" 98 | ], 99 | "typedef-whitespace": [ 100 | true, 101 | { 102 | "call-signature": "nospace", 103 | "index-signature": "nospace", 104 | "parameter": "nospace", 105 | "property-declaration": "nospace", 106 | "variable-declaration": "nospace" 107 | } 108 | ], 109 | "unified-signatures": true, 110 | "variable-name": false, 111 | "whitespace": [ 112 | true, 113 | "check-branch", 114 | "check-decl", 115 | "check-operator", 116 | "check-separator", 117 | "check-type" 118 | ], 119 | "no-output-on-prefix": true, 120 | "use-input-property-decorator": true, 121 | "use-output-property-decorator": true, 122 | "use-host-property-decorator": true, 123 | "no-input-rename": true, 124 | "no-output-rename": true, 125 | "use-life-cycle-interface": true, 126 | "use-pipe-transform-interface": true, 127 | "component-class-suffix": true, 128 | "directive-class-suffix": true 129 | } 130 | } 131 | --------------------------------------------------------------------------------