├── README.md ├── data ├── Global-Superstore-Orders-2016.xlsx ├── iris.csv ├── stocks.csv └── us-elections-history.csv ├── img ├── bar-chart.png ├── book-cover-interactive-data-visulization-murray.png ├── chart-axis.png ├── chart-margin.png ├── color.png ├── force.png ├── geo-map.png ├── grouped-bar-chart.png ├── line-cat.png ├── line-chart-path.png ├── line-chart.png ├── line.png ├── node-link.png ├── placeholder-h.png ├── radial.png ├── random.png ├── scatterplot.png ├── size.png └── stacked-bar-chart.png └── thumbnail.png /README.md: -------------------------------------------------------------------------------- 1 | # Interactive Data Visualization (ECL MOS 5.5) 2 | 3 | [Romain Vuillemot](http://www.ec-lyon.fr/contacts/romain-vuillemot), *LIRIS, École Centrale de Lyon/Département Math-Info*, [Website](http://romain.vuillemot.net/), [Twitter](https://twitter.com/romsson). 4 | 5 | Contact or questions: romain.vuillemot@ec-lyon.fr 6 | 7 | ## Reading 8 | 9 | 10 | 11 | 14 | 17 | 18 |
12 | 13 | 15 | Interactive Data Visualization for the Web
by Scott Murray 16 |
19 | 20 | Other books 21 | 22 | * [Visualization Analysis and Design](https://www.cs.ubc.ca/~tmm/vadbook/) by Tamara Munzner 23 | * [Design for Information](http://isabelmeirelles.com/book-design-for-information/) by Isabel Meirelles 24 | * [Making Data Visual: A Practical Guide to Using Visualization for Insight](http://shop.oreilly.com/product/0636920041320.do) by Danyel Fisher & Miriah Meyer 25 | 26 | ## Grading 27 | 28 | * 30% Final exam 29 | * 60% Final projects 30 | * 10% Homeworks/Submitted assignments (pass/fail policy) 31 | * 10% Bonus (class participation, best homeworks/assignments) 32 | 33 | --- 34 | ## Submissions 35 | 36 | All homeworks/assignements/reports are due the **day before** the class at 23.59pm Lyon Time (GMT+1). Using [this form](https://goo.gl/forms/YAMADA2erDsaNpIA3). 37 | 38 | --- 39 | 40 | ## **Lecture 1 - Introduction to Data Visualization** 41 | *Friday 10/01/2020 13:30-15:30* 42 | 43 | * Overview: Class organization ([slides](https://docs.google.com/presentation/d/1YaPshJZLDj6M0XBMtmHqANeH17JINdB3Ie5G8RdC74U/edit#slide=id.p)) 44 | 45 | * Basics of Data Visualization: Perception, cognition, Visual mapping, Standard charts ([slides](https://docs.google.com/presentation/d/1YY8h1wjfaAv172LVa8kVAnxCyEB547HRL43JlEOvCH0/edit#slide=id.p)) 46 | 47 | * Authoring visualizations: Libraries, Tools, Tableau Software ([slides](https://docs.google.com/presentation/d/18b-B9wAYpq93nbROxRe9u6-7xexuBLM7T-yapqGoYdo/edit#slide=id.g2f7ee94efd_0_45)) 48 | 49 | * Introduction to D3.js ([slides](https://docs.google.com/presentation/d/1BtnZZoSmrafigZLbsFqPGwBlhPZHee19SJpUtcHKuCU/edit#slide=id.g2fcdab4196_0_131)) 50 | 51 | * Final projects description ([slides](https://docs.google.com/presentation/d/1r96OLz_yDkkAsq6segP360Vnr_PJrboO5XEJb0lHgw4/edit?usp=sharing)) 52 | 53 | ## **Tutorial 1 - Tableau Software** 54 | *Friday 10/01/2020 15:45-17:45* 55 | 56 | *Tableau Tutorial* 57 | 58 | 1. The goal is to have a first experience with Tableau and build standard charts using a simple dataset. 59 | 2. Download and install [Tableau Public](https://public.tableau.com/) (Free) on your machine. 60 | 3. Altenartive for Linux users is the [Online version of Tableau](https://online.tableau.com/) 61 | 4. Other(simple) alternative to Tableau: [Polestar](http://vega.github.io/polestar/) 62 | 63 | *Problem 1: Iris flowers visualization* 64 | 65 | 1. Download the [`iris.csv`](data/iris.csv) and load it in Tableau; convert data types (if needed) 66 | 2. Plot a **scatterplot** with X:sepal_length, Y:sepal_width, color:species and a trend line 67 | 3. Save as a tab and save the workbook 68 | 69 | *Problem 2: Elections map* 70 | 71 | 1. Download the [`us-elections-history.csv`](data/us-elections-history.csv) and load it in Tableau; convert data types (if needed) 72 | 2. Plot a grid plot with `Year` as columns, `State` as rows and `State Winner` as color/marks. 73 | 3. Save as a tab 74 | 4. Plot a **geo-map** with colors winning party in 2012 `Latitude (generated)` et `Longitude (generated)`, with `State` as shapes and color `ATTR([State Winner])` 75 | 5. Save as a tab and save the workbook 76 | 6. Tips: make sure you parse the dataset correctly (FR version of Tableau automatically splits comas) 77 | 78 | *Problem 3: Stock markets visualizations* 79 | 80 | 1. Download the [`stocks.csv`](data/stocks.csv) and load it in Tableau; convert data types (if needed) 81 | 2. Plot a **multiple line chart** over time, for all stocks in a different color, grouped by company 82 | 3. Plot a **grouped bar chart** (companies as categories, grouped by year or by companies) 83 | 4. **Your own chart**! 84 | 5. Save as a tab and save the workbook 85 | 86 | *Problem 4: Global Superstore Dataset* 87 | 88 | 1. Download the [`Global-Superstore-Orders-2016.xlsx`](data/Global-Superstore-Orders-2016.xlsx) and load it in Tableau; join datasets (if needed) 89 | 2. Find an interesting story / selection with this dataset 90 | 3. Create a Dashboard and explain your story/finding 91 | 4. BONUS: Add storytelling (Tableau Feature) 92 | 5. BONUS: Join other datasets (e.g. People, ..) 93 | 94 | 95 | 📅 **For next class (17/01/2020)** 96 | 97 | ✍ Assignments 98 | 99 | * PROJECT: Group proposal of 2 or 3 students 100 | 101 | * Submit a project topic (1-paragraph): what is the question you expect to answer? which data do you need? how do you plan to collect your data? what are the main risk in collecting/visualizing it? what are the privacy/ethical issues? 102 | 103 | * Create a GitHub account 104 | 105 | 📖 Readings and preparation 106 | 107 | * Read introductions to JavaScript, D3 and Git 108 | 109 | * Interactive Data Visualization for the Web [Chapter 1. Introduction 110 | ](https://web.archive.org/web/20160307043159/http://chimera.labs.oreilly.com/books/1230000000345/ch01.html), [Chapter 2. Introducing D3](https://web.archive.org/web/20160307043159/http://chimera.labs.oreilly.com/books/1230000000345/ch02.html) and [Chapter 3. Technology Fundamentals](https://web.archive.org/web/20160307043159/http://chimera.labs.oreilly.com/books/1230000000345/ch03.html) 111 | 112 | * Get familiar with [JavaScript](https://learnxinyminutes.com/docs/javascript/) 113 | 114 | * [Inside look at modern web browser](https://developers.google.com/web/updates/2018/09/inside-browser-part1) 115 | 116 | * [Lear how to inspect the DOM tree](https://developers.google.com/web/tools/chrome-devtools/inspect-styles/edit-dom) 117 | 118 | * Get familiar with [GitHub](https://try.github.io/levels/1/challenges/1) 119 | 120 | ## **Tutorial 2 (1/2) - Building visualizations with D3.js** 121 | *Friday 17/01/2020 13:30-15:30* 122 | 123 |

124 | 125 |

126 | 127 | * Cheatsheet [intro to D3](https://romsson.github.io/intro-to-d3/) 128 | * [Margin conventions](https://blockbuilder.org/mbostock/3019563) 129 | 130 | ``` 131 | var margin = {top: 20, right: 10, bottom: 20, left: 10}; 132 | 133 | var width = 960 - margin.left - margin.right, 134 | height = 500 - margin.top - margin.bottom; 135 | ``` 136 | 137 | ***Assignment:** draw a red rectangle (like the gray one above) in the center of the page (using `margin`, `width` and `height`).* 138 | 139 | [SOLUTION](https://blockbuilder.org/romsson/b32fddb798bafb7f78427cba22912a8d) 140 | 141 | --- 142 | 143 | **Bar chart** | [SVG](http://blockbuilder.org/romsson/36b1cdc599e8f341a33892f143cf087f) 144 | 145 |

146 | 147 |

148 | 149 | * Mark: `` 150 | * Position: `x` and `width` 151 | * Height: `y` and `height` 152 | * Color: `fill` (style) 153 | * Scales: quantitative `d3.scaleLinear()` and categorical `d3.scaleBand()` 154 | 155 | ***Assignment:** build a bar chart with a random dataset* 156 | 157 | * How to generate a random list of integers: `d3.range(n).map(Math.random)` 158 | * The `x.bandwidth()` function generates the` width` attribute for the `` 159 | 160 | [SOLUTION](https://blockbuilder.org/romsson/4e431453beb5c92ff6eb029771b3b8d3) 161 | 162 | --- 163 | 164 | **Line chart** | [SVG](https://blockbuilder.org/romsson/2ff1ee674420b71dc1d3c9731c19ee46) 165 | 166 |

167 | 168 |

169 | 170 | * Mark: `` 171 | * Position: `d3.line().x(function(d) { }).y(function(d) { })` to generate attribute `d` 172 | * Color: style `fill` 173 | * Interpolate: `d3.line().curve(d3.curveCardinal)` 174 | * Scales: `d3.scaleLinear()` 175 | 176 | ***Assignment:** build a line chart using a simple JSON temporal dataset add circles for each time point.* 177 | 178 | * Create a `dataset.json` file in blockbuilder: 179 | 180 | ` 181 | [{"id" : 1, "name": "A", "value": 10, "date": "2016-01"}, 182 | {"id" : 2, "name": "B", "value": 30, "date": "2016-02"}, 183 | {"id" : 3, "name": "C", "value": 20, "date": "2016-03"} 184 | ] 185 | ` 186 | 187 | * Be careful: one single mark (a line) to draw for the whole dataset! 188 | * Load a JSON dataset: `d3.json("dataset.json", function(error, data) {}` 189 | * Data parsing: `d3.timeParse("%Y-%m")` 190 | * Temporal scale `d3.scaleTime()` 191 | * Data display: `d3.timeFormat("%b %y")` 192 | 193 | [SOLUTION](https://blockbuilder.org/romsson/653eaaf6f6b5655af0ebb1e67d3be986) 194 | 195 | --- 196 | 197 | **Scatterplot** | [SVG](https://blockbuilder.org/romsson/7961b125a188ad1167039e4103ff69bf) 198 | 199 |

200 | 201 |

202 | 203 | * Mark: `` 204 | * Position: `cx` and `cy` 205 | * Area: `r` (radius) and `d3.scaleSqrt()` 206 | * Color: `fill` (style) and `d3.scaleOrdinal(d3.schemeCategory20)` color scale 207 | 208 | ***Assignment:** build a scatterplot using the Iris dataset and load the chart using a function that takes the chart visual mapping and dimensions as input parameters.* 209 | 210 | * [`iris.csv`](data/iris.csv) 211 | * Load a CSV dataset: `d3.csv('iris.csv', function(error, data){}` 212 | 213 | [SOLUTION](https://blockbuilder.org/romsson/f1569bab4188ca15974d90d373f1aad0) 214 | 215 | ## **Tutorial 2 (2/2) - Building visualizations with D3.js** 216 | *Friday 17/01/2020 15:45-17:45* 217 | 218 | * Advanced D3.js: page layout, d3.nests, legends, scatterplot and grouped bar chart ([slides](https://docs.google.com/presentation/d/14pYKK2dYGnPS6iZ9l1gw1vuiPOGXjjCfeJlArMYRLBs/edit#slide=id.p)) 219 | 220 | --- 221 | **Axis** | SVG 222 | 223 |

224 | 225 |

226 | 227 | ``` 228 | var xAxis = d3.axisBottom() 229 | .scale(x); 230 | 231 | var yAxis = d3.axisLeft() 232 | .scale(y); 233 | 234 | svg.append("g") 235 | .attr("class", "x axis") 236 | .attr("transform", "translate(0," + height + ")") 237 | .call(xAxis) 238 | ``` 239 | --- 240 | **Interaction** 241 | 242 | * Mouse click: `.on("click", function(d){})` 243 | * Mouse hover: `.on("mouseover", function(d){})` and `.on("mouseout", function(d) {})` 244 | 245 | * Drag & drop `d3.drag`, tooltip ([example](http://bl.ocks.org/romsson/3fe361c8b3ce9e722c1d19f6c55a6d00)) 246 | 247 | --- 248 | **Legends** 249 | 250 | * Display the unique values of an attribute (e.g. use the `color.domain()` to retrieve them) 251 | * Show the visual mapping for those values (color, shape, etc.) as rows (create a group `` and then fill the rows with the mappings) 252 | * You have to do it yourself! 253 | 254 | 255 | --- 256 | **Multiple views** 257 | 258 | * Load and coordinate multiple visualizations 259 | * Charts coordination 260 | 261 | 262 | --- 263 | ***Assignment:** build a coordinated scatterplot matrix using the Iris dataset.* 264 | 265 | 266 | 267 | Submit the blockbuilder link to [submit here](https://docs.google.com/forms/d/e/1FAIpQLSdcv-t-feJ6_BG0I326ymeF7YCK8gltbGvsdMecKCUcwyv77g/viewform) at the end of the class (17h45) 268 | 269 | --- 270 | 📅 **For next class (24/01/2020)** 271 | 272 | * CODE: Submit your blockbuilder for scatterplot matrix [✉️ submission form](https://docs.google.com/forms/d/e/1FAIpQLSdcv-t-feJ6_BG0I326ymeF7YCK8gltbGvsdMecKCUcwyv77g/viewform) 273 | * CODE: Extend the line chart using the [`stocks.csv`](data/stocks.csv) where each line is a different symbol (and a different color). BONUS: add a title, legend and interactivity (e.g. tooltip, show time points, etc.) [submission form](https://docs.google.com/forms/d/e/1FAIpQLSdcv-t-feJ6_BG0I326ymeF7YCK8gltbGvsdMecKCUcwyv77g/viewform) 274 | 275 | * PROJECT: Write a document that describes the dataset(s) for your project, mechanism to collect the data and expected model (as a table, use Excel). Add more informations: 276 | * Project full name, project description and members names 277 | * Data you plan to use, does it exist, if not how you collect it? 278 | * 3-5 questions you want to answer using your project 279 | * 5-10 visualizations that are related to your project (screenshot and link sources) 280 | * **Wait for validation by instructor before any design/coding** 281 | 282 | * READINGS: [Chapter 4. Setup](https://web.archive.org/web/20160307043159/http://chimera.labs.oreilly.com/books/1230000000345/ch04.html), [Chapter 5. Data](https://web.archive.org/web/20160307043159/http://chimera.labs.oreilly.com/books/1230000000345/ch05.html), [Chapter 6. Drawing with Data](https://web.archive.org/web/20160307043159/http://chimera.labs.oreilly.com/books/1230000000345/ch06.html), [Chapter 7. Scales](https://web.archive.org/web/20160307043159/http://chimera.labs.oreilly.com/books/1230000000345/ch07.html). 283 | 284 | * What is visualization [research](https://medium.com/multiple-views-visualization-research-explained/what-is-visualization-research-what-should-it-be-8840a9ba658)? [literacy](https://medium.com/multiple-views-visualization-research-explained/what-does-visualization-literacy-mean-anyway-22f3b3badc0)? 285 | 286 | ## **Lecture 3 - Advanced D3.js and Layouts** 287 | *Friday 24/01/2020 13:30-15:30* 288 | 289 | * Visualization of [geo](https://docs.google.com/presentation/d/1fY3EHmalb53aZVNYqv2UHjg9_kbtR26saexPTgPKKJs/edit#slide=id.g26ba174e93_0_616) and [temporal data](https://docs.google.com/presentation/d/1HPwRnoc5SvvuhCmxyKnljgqa0oRH6ugDlhM0JQ8qLmM/edit#slide=id.g26b255eefc_0_1105) 290 | 291 | * Introduction to [data cleaning tools and methods](https://docs.google.com/presentation/d/1lFAG926PhlkL9Zt-L6pK7zz0EPOlMkhY9prQxE4UbJU/edit#slide=id.g6e08cd9023_0_0) 292 | 293 | * Advanced data visualization concepts: Animation, Interaction, Multiple Views ([slides](https://docs.google.com/presentation/d/1g2ZT3LHUnCSmEUIrxow_4APTlnuiMGgID8XxMyt8mz4/edit#slide=id.p)) 294 | 295 | * Solution for interactive [scatterplot matrix and legend](https://blockbuilder.org/romsson/af97a2bad698ab0c07863015b8ef4622) and multiple line-chart. *How would you improve this chart? by adding [brushing interactions](https://bl.ocks.org/Fil/6d9de24b31cb870fed2e6178a120b17d), including legends in diagonal and [distribution in diagonal](https://www.kylebradbury.org/visualizations/scattermatrix/).* 296 | 297 | * Solution for [stocks line chart](https://blockbuilder.org/romsson/7d94b8925f4c8cb832770921aee23f88). *How would you improve this chart?* 298 | 299 | * Advanced D3 layouts ([slides](https://docs.google.com/presentation/d/1a79MLat-ftU25Uk7uM2JYfDSlKS-9hp94EnmegvcLg0/edit#slide=id.p)) 300 | 301 | ## Tutorial 3: More D3.js grouping and layouts 302 | *Friday 24/01/2020 15:45-17:45* 303 | 304 | * Grouping data with `d3.nest` 305 | 306 | ``` 307 | {symbol: "MSFT", date: Sat Jan 01 2000 00:00:00 GMT+0100 (CET), price: 39.81} 308 | {symbol: "MSFT", date: Tue Feb 01 2000 00:00:00 GMT+0100 (CET), price: 36.35} 309 | {symbol: "MSFT", date: Wed Mar 01 2000 00:00:00 GMT+0100 (CET), price: 43.22} 310 | ``` 311 | 312 | ***Assignment:* Nest stocks by symbol and calculate aggregated values (max/min/sum) over price; parse dates.** 313 | 314 | Expected result: 315 | 316 | ``` 317 | 0: {key: "MSFT", values: Array(123), maxPrice: 43.22, sumPrice: 3042.6} 318 | 1: {key: "AMZN", values: Array(123), maxPrice: 135.91, sumPrice: 5902.4} 319 | 2: {key: "IBM", values: Array(123), maxPrice: 130.32, sumPrice: 11225.13} 320 | ``` 321 | 322 | * [Tutorial on `d3.nest`](http://bl.ocks.org/phoebebright/raw/3176159/) 323 | * [More examples using `d3.nest`](http://learnjsdata.com/group_data.html) 324 | 325 | [SOLUTION](https://bl.ocks.org/romsson/e5c0bdd599a2a51a133e02d3200bcd9c) 326 | 327 | --- 328 | 329 | 330 | **Grouped bar chart** | 331 | 332 |

333 | 334 |

335 | 336 | * Grouping: `d3.nest` 337 | * Mark: `` 338 | * Positions: using two categorical scales `d3.scaleBand()` 339 | * Color: style `fill` 340 | 341 | ***Assignment:** build a grouped bar chart using the [`stocks.csv`](data/stocks.csv) .* 342 | 343 | Start using random data 344 | 345 | ``` 346 | var n = 10, // number of samples 347 | m = 5; // number of series 348 | 349 | var data = d3.range(m).map(function() { 350 | return d3.range(n).map(Math.random); 351 | }); 352 | ``` 353 | 354 | [SOLUTION](https://blockbuilder.org/romsson/a78f70f6624184fd33b4dc385a495e75) 355 | 356 | --- 357 | 358 | **Stacked bar chart** | 359 | 360 |

361 | 362 |

363 | 364 | * Grouping: [`d3.stack`](https://github.com/d3/d3-shape/blob/master/README.md#stack) 365 | * Mark: `` 366 | * Positions: nested categorical scales `d3.scaleBand()` 367 | * Color: style `fill` 368 | * Scales: `d3.scaleLinear()` 369 | 370 | ***Assignment:** build a stacked bar chart using the [`stocks.csv`](data/stocks.csv) .* 371 | 372 | * Start with random data (see grouped bar chart) 373 | * Nest data 374 | * by `year` `d.date.getFullYear()` 375 | * by `symbol` 376 | * Calculate sum 377 | * Flatten the dataset to be used by the `d3.stack` layout 378 | 379 | ``` 380 | 0: {MSFT: 356.07999999999987, AMZN: 527.17, IBM: 1162.97, AAPL: 260.98, year: "2000"} 381 | 1: {MSFT: 304.17, AMZN: 140.87, IBM: 1163.6200000000001, AAPL: 122.11000000000003, year: "2001"} 382 | 2: {MSFT: 261.92, AMZN: 200.68, IBM: 901.4999999999999, AAPL: 112.89999999999998, year: "2002"} 383 | ``` 384 | 385 | * Apply the `d3.stack()` layout using the list of unique symbols as `keys` and the flat dataset as data 386 | 387 | 388 | [SOLUTION](https://blockbuilder.org/romsson/8aea86fddcf01380eb96a341509f394f) 389 | 390 | --- 391 | **Animated transitions** 392 | 393 | * Add animation using: `.transition(duration)`, and `.delay(duration)` 394 | * Triggered by a widget, e.g. a `radio` button 395 | * Examples of transitions: [bar chart](https://bl.ocks.org/romsson/3de5bef36f106673278b7ec182c262a6), [D3 show reel](https://bl.ocks.org/mbostock/1256572)). 396 | 397 | 398 | ***Assignment (BONUS):** build an animated transition between grouped bar chart and stacked bar chart.* 399 | 400 | * Isolate each layout as two function `grouped` and `stack` 401 | * Add a swap function between each other 402 | 403 | ``` 404 |
405 | 406 | 407 |
408 | ``` 409 | 410 | * Bind events using ```d3.selectAll("input").on("change", function() {})``` 411 | 412 | [SOLUTION](https://blockbuilder.org/romsson/f49647330eeeebdd3487fcc3b0222d00) 413 | 414 | --- 415 | 416 | 📅 **For next class (31/01/2020)** 417 | 418 | 1. Write a document for your project data cleaning and preparation: data source, data shaping, processing, etc. If you use external tools (e.g. Excel, DataWrangler, Tableau) add some details of the role and steps performed using those. 419 | 420 | 2. Load a clean data sample using d3 and descriptive charts (histogram, scatterplot, ..) in a wepage showing the characteristics of the dataset: distribution, statistics, trends, etc. Add this link to your analysis in the class document (the page should be hosted on GitHub). 421 | 422 | 3. Draw a mockup of your project using pen and paper and add this link to the class document (the page should be hosted on GitHub). 423 | 424 | * Read principles of the Five design sheets [methodology](http://fds.design/wp-content/uploads/2015/06/five-design-sheet-approach-JCR.pdf) 425 | 426 | * Reading: [Chapter 8. Axes](https://web.archive.org/web/20160307043159/http://chimera.labs.oreilly.com/books/1230000000345/ch08.html), [Chapter 9. Updates, Transitions, and Motion 427 | ](https://web.archive.org/web/20160307043159/http://chimera.labs.oreilly.com/books/1230000000345/ch09.html), [Chapter 10. Interactivity](https://web.archive.org/web/20160307043159/http://chimera.labs.oreilly.com/books/1230000000345/ch10.html), [Chapter 11. Layouts](https://web.archive.org/web/20160307043159/http://chimera.labs.oreilly.com/books/1230000000345/ch11.html). 428 | 429 | 430 | ## Lecture 4 - Advanced Layout, Data Cleaning and Case studies 431 | *Friday 31/01/2020 13:30-15:30* 432 | 433 | * Design and case studies in visualization ([slides](https://docs.google.com/presentation/d/1RxFTHrEDvGTJiHZ7AmOyX7WQ82o7FEJFs0kosvlD4bg/edit)) 434 | 435 | * Introduction to Sketching, Rapid Prototyping, Development cycles ([slides](https://docs.google.com/presentation/d/11kEkZK12C893qzyEDvkIjgFKPmRKFf-KDDOKiwGw6ys/edit)) and using the [Five Design Sheet](http://fds.design/) methodology 436 | 437 | 438 | ## Tutorial 4: Geo-maps, design project setup 439 | *Friday 31/01/2020 15:45-17:45* 440 | 441 | * [Apply the 5DS](http://fds.design/index.php/resources-and-publications/) to your project (paper and pen!) 442 | 443 | * Project setup using modern web development tools: local server, package managers ([slides](https://docs.google.com/presentation/d/1Uz3ZjX1f9DJgH73VOrJwi7cgVqwlKIwFPmM4eubUIb8/edit#slide=id.g32bdb64449_0_18)) 444 | 445 | --- 446 | **Geo-Map** | [Example](https://blockbuilder.org/romsson/a4df41c5b46da7a0635c7cf393df96e3) 447 | 448 |

449 | 450 |

451 | 452 | * Mark: `` + `d3.geoPath()` 453 | * Position: `d3.geoPath()` 454 | * Color: `fill` (style) 455 | 456 | ***Assignment:** build a geo-map [following those instructions](https://lyondataviz.github.io/teaching/lyon1-m2/2017/tp4.html).* 457 | 458 | [SOLUTION](https://blockbuilder.org/romsson/969c4ee91b5c436a36053fee592d8b17) 459 | * [Interactive geo-map in D3](https://blockbuilder.org/romsson/bfb974bfd600573d763c405d20921b7c) 460 | 461 | --- 462 | 463 | At the end of the tutorial: 464 | 465 | * Update your proposal after feedback from instructor 466 | * Add the link to (a pdf of all) the design sheets in the class document 467 | 468 | 📅 **For next class (07/02/2020)** 469 | 470 | ✍ Assignments 471 | 472 | * Website fully functional with full dataset 473 | * Implement the page layouts 474 | * Implement graphics specific to your project 475 | 476 | ## Lecture 5 - Graphs 477 | *Friday 07/02/2020 13:30-15:30* 478 | 479 | * Graphs, Networks and Tree visualizations ([slides](https://docs.google.com/presentation/d/1zhbOrcbVMEfnl8tx07TPNuY8oEIeGyuYVeCR5Rb4h9g/edit#slide=id.p)) 480 | 481 | **Node-Link Graph** | [Example](https://blockbuilder.org/romsson/613e64af0ea1fb1567aeac5d29e9ac35) 482 | 483 |

484 | 485 |

486 | 487 | * Mark: `` 488 | * Position: `d3.forceSimulation()` 489 | * Color: `fill` (style) 490 | 491 | ***Assignment:** starting with this [Node link diagram](https://blockbuilder.org/romsson/613e64af0ea1fb1567aeac5d29e9ac35) that is based on [force layout](img/force.png) with different layouts: [random](img/random.png), [radial](img/radial.png), [line](img/line.png), [line by category](img/line-cat.png) and encodings: [color](img/color.png), [size](img/size.png).* 492 | 493 | * `d3.forceSimulation` [documentation](https://github.com/d3/d3-force) 494 | * [Parameters playground](https://bl.ocks.org/steveharoz/8c3e2524079a8c440df60c1ab72b5d03)) 495 | * [Use multiple foci](http://bl.ocks.org/Kuerzibe/d2e79e28c5591a7e4552b6f9433ebe40) to group nodes by similariy 496 | 497 | 498 | [SOLUTION](https://blockbuilder.org/romsson/737693bfe28fb0e8e4d2a4dc55ffd846) 499 | 500 | ## Projects (1/3) 501 | *Friday 07/02/2020 15:45-17:45* 502 | 503 | ## Projects (2/3) 504 | *Friday 14/02/2020 13:30-15:30* 505 | 506 | **Peer-review of other groups projects** 507 | 508 | Pre-Requirements: 509 | 510 | * Link to description of the project 511 | * Link to design sheets/mockups 512 | * Link to a demo hosted on GitHub 513 | 514 | Peer-review: 515 | 516 | * Are all the pre-requirements met? If not, what is missing? 517 | * Summarize the projet (what you understand): who is the audience? which question does it address? 518 | * Is the design effective? What would you recommend? 519 | * Are you aware of a similar project that would help the project? If so, please add links to it. 520 | * What are the strength of the project? 521 | * What are the weaknesses? 522 | * What would you have done differently? 523 | * Any other remark? 524 | 525 | [USE THIS FORM](https://forms.gle/MRbhDhQkxGavcB5HA) 526 | 527 | ## Projects (3/3) 528 | *Friday 14/02/2020 15:45-17:45* 529 | 530 | You may also add the following header to your project: 531 | 532 | ``` 533 | 534 | 535 | 536 | YOUR_TITLE 537 | 538 | 539 | 540 | 541 | 542 | ... 543 | 544 | ``` 545 | 546 | In the class document: 547 | 548 | * **PROJECT_TITLE**: title of the project (10 words max) 549 | * **PROJECT_DESCRIPTION**: details of the project (2/3 sentences) 550 | * **PROJECT_AUTHORS**: list of authors 551 | * **PROJECT_TWEET**: tweet/social media-like presentation ([see examples](https://twitter.com/NElmqvist/status/1205339242383204352)) 552 | 553 | ## Projects: Final projects presentations & demos 554 | *Friday 21/03/2020 13:30-17:45* 555 | 556 | Each group has a 15min time slot (10min presentation, 5min questions) to present their project. 557 | 558 | **No slide: just show the visualization and tell a convincing story (e.g. don't list features, etc.). Should address the following:** 559 | 560 | 1. Present context, dataset, data collection 561 | 2. Describe key design decisions (visual mappings, interactions, animations, ..) 562 | 3. Did the visualization help you find anything of interest in the dataset? 563 | 4. Discuss technical challenges, limits, what you would have done with more time. 564 | 565 | *Add a `README.md` file in the repository organized as follows:* 566 | 567 | - Name of the participants of the project 568 | - Description of the project 569 | - Screenshots and/or video of the main features 570 | - Credits to external code or data you may have used in your project 571 | - Link to any document/report that may be related to your project 572 | 573 | **IMPORTANT -- Regarding the dataset** 574 | 575 | - If you don't want to share your dataset, add a demo/fake dataset (e.g. sample or fake data) for the live demo 576 | - Provide a way to let users use their own dataset and explain how to do it (upload button? using a Python script? etc.) 577 | - If you take screenshots with the real dataset make sure you preserve individuals privacy 578 | 579 | As a general rule keep in mind the projects will be made public so anybody should be able to understand on their own and privacy of the datasets should be preserved. 580 | 581 | ## Projects: Polish and final submission (autonomie) 582 | *Friday 28/02/2020 13:30-15:30* 583 | 584 | ## Projects: Polish and final submission (autonomie) 585 | *Friday 28/03/2020 15:45-17:45* 586 | 587 | **Final project is due** 588 | 589 | ## Exam 590 | *Wednesday 11/02/2020* 591 | 592 | - 2h written exam 593 | - Questions in French 594 | - Answers either in French or English 595 | - Bring drawing material (pen, eraser, eventually colors) 596 | 597 | # Online resources 598 | 599 | Tableau Software 600 | 601 | * [FAQ: How to learn Tableau](https://community.tableau.com/thread/151389) 602 | * [Build standard charts with Tableau](http://onlinehelp.tableau.com/current/pro/desktop/en-us/dataview_examples.html) 603 | 604 | D3.js 605 | 606 | * [Gallery of examples](https://github.com/d3/d3/wiki/gallery) 607 | * [Code examples and references for the course "D3.js in Motion"](https://github.com/curran/d3-in-motion) 608 | * [Relearning D3.js](http://www.cagrimmett.com/til/2016/08/07/relearning-d3.html) 609 | * [D3 in depth](http://d3indepth.com/) 610 | * [Awesome D3](https://github.com/wbkd/awesome-d3) 611 | * http://vadim.ogievetsky.com/IntroD3/#1 612 | * https://github.com/arnicas/d3-faq 613 | * [Changes in D3 4.0](https://github.com/d3/d3/blob/master/CHANGES.md) 614 | * [D3 V4 - What's new?](https://iros.github.io/d3-v4-whats-new/#1) 615 | * [Wide vs. Long Data in D3](http://jonathansoma.com/tutorials/d3/wide-vs-long-data/) 616 | * [D3 Cheatsheet](http://www.jeromecukier.net/wp-content/uploads/2012/10/d3-cheat-sheet.pdf) 617 | 618 | SVG 619 | 620 | * [SVG Basic Shapes](https://developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Basic_Shapes) 621 | * [SVG2D3](http://billautomata.github.io/svg2d3/) 622 | 623 | Git/GitHub 624 | 625 | * Git and GitHub (e.g. [Try GitHub](https://try.github.io/levels/1/challenges/1)) 626 | * https://agripongit.vincenttunru.com/ 627 | * https://onlywei.github.io/explain-git-with-d3/#freeplay 628 | * https://learngitbranching.js.org/ 629 | 630 | JavaScript 631 | 632 | * [Mozilla Developers Network's Javascript reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript) 633 | * Learn JavaScript (e.g. [JS learnxinyminutes](https://learnxinyminutes.com/docs/javascript/), [learnjsdata](http://learnjsdata.com/index.html)) 634 | * JSON (e.g. [JS learnxinyminutes](https://learnxinyminutes.com/docs/json/)) 635 | * [Eloquent JavaScript](http://eloquentjavascript.net/Eloquent_JavaScript.pdf) 636 | * [Notes on Douglas Crockford's Javascript the Good Parts 🚀](https://github.com/iteles/Javascript-the-Good-Parts-notes) 637 | 638 | Data Visualization Classes 639 | 640 | * [DataViz at MIT](http://dataviz.media.mit.edu/) 641 | * [Visual Analytics Ecole Centrale Paris](http://aviz.fr/wiki/pmwiki.php/TeachingVA2017/Schedule) 642 | * [Dataviz resources](http://www.cs.ubc.ca/group/infovis/resources.shtml) 643 | * https://curran.github.io/dataviz-course-archive/ 644 | * https://github.com/Ecohen4/data-viz 645 | * https://github.com/arnicas/interactive-vis-course 646 | * https://docs.google.com/spreadsheets/d/13H77ewqswroMtshWjDZkmcAEvFeRmEjrr-w9E2WHU-E/edit#gid=989980390 647 | 648 | Blogs 649 | 650 | * http://www.thefunctionalart.com/ 651 | * http://eagereyes.org/ 652 | * http://visualisingdata.com/ 653 | 654 | Books 655 | 656 | * [Fundamentals of Data Visualization](https://serialmentor.com/dataviz/index.html) 657 | 658 | Graphics/Journals 659 | 660 | * http://www.bloomberg.com/visual-data/ 661 | * http://data.huffingtonpost.com/ 662 | 663 | Color 664 | 665 | * [D3 color schemes](https://beta.observablehq.com/@mbostock/d3-color-schemes) 666 | * https://cloudflare.design/color/ 667 | * [ColorBrewer](http://colorbrewer2.org/) 668 | * https://ciechanow.ski/color-spaces/ 669 | * [Nomenclature of colours](https://www.c82.net/werner/) 670 | 671 | Misc 672 | 673 | * [Command line tutorial](https://www.learnenough.com/command-line-tutorial) 674 | * https://egghead.io/lessons/debugging-with-dev-tools 675 | * Design essay: [Picturing the Great Migration](https://medium.com/info-we-trust/picturing-the-great-migration-9e4b5a3eca8a) 676 | * [What to Expect in the Data Visualization Engineer Job Interviews 677 | ](https://medium.com/@kristw/what-to-expect-in-data-visualization-engineer-job-interviews-54053b896a75) 678 | * [State of JavaScript 2019](https://2019.stateofjs.com/) 679 | -------------------------------------------------------------------------------- /data/Global-Superstore-Orders-2016.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/data/Global-Superstore-Orders-2016.xlsx -------------------------------------------------------------------------------- /data/iris.csv: -------------------------------------------------------------------------------- 1 | sepal_length,sepal_width,petal_length,petal_width,species 2 | 5.1,3.5,1.4,0.2,setosa 3 | 4.9,3,1.4,0.2,setosa 4 | 4.7,3.2,1.3,0.2,setosa 5 | 4.6,3.1,1.5,0.2,setosa 6 | 5,3.6,1.4,0.2,setosa 7 | 5.4,3.9,1.7,0.4,setosa 8 | 4.6,3.4,1.4,0.3,setosa 9 | 5,3.4,1.5,0.2,setosa 10 | 4.4,2.9,1.4,0.2,setosa 11 | 4.9,3.1,1.5,0.1,setosa 12 | 5.4,3.7,1.5,0.2,setosa 13 | 4.8,3.4,1.6,0.2,setosa 14 | 4.8,3,1.4,0.1,setosa 15 | 4.3,3,1.1,0.1,setosa 16 | 5.8,4,1.2,0.2,setosa 17 | 5.7,4.4,1.5,0.4,setosa 18 | 5.4,3.9,1.3,0.4,setosa 19 | 5.1,3.5,1.4,0.3,setosa 20 | 5.7,3.8,1.7,0.3,setosa 21 | 5.1,3.8,1.5,0.3,setosa 22 | 5.4,3.4,1.7,0.2,setosa 23 | 5.1,3.7,1.5,0.4,setosa 24 | 4.6,3.6,1,0.2,setosa 25 | 5.1,3.3,1.7,0.5,setosa 26 | 4.8,3.4,1.9,0.2,setosa 27 | 5,3,1.6,0.2,setosa 28 | 5,3.4,1.6,0.4,setosa 29 | 5.2,3.5,1.5,0.2,setosa 30 | 5.2,3.4,1.4,0.2,setosa 31 | 4.7,3.2,1.6,0.2,setosa 32 | 4.8,3.1,1.6,0.2,setosa 33 | 5.4,3.4,1.5,0.4,setosa 34 | 5.2,4.1,1.5,0.1,setosa 35 | 5.5,4.2,1.4,0.2,setosa 36 | 4.9,3.1,1.5,0.1,setosa 37 | 5,3.2,1.2,0.2,setosa 38 | 5.5,3.5,1.3,0.2,setosa 39 | 4.9,3.1,1.5,0.1,setosa 40 | 4.4,3,1.3,0.2,setosa 41 | 5.1,3.4,1.5,0.2,setosa 42 | 5,3.5,1.3,0.3,setosa 43 | 4.5,2.3,1.3,0.3,setosa 44 | 4.4,3.2,1.3,0.2,setosa 45 | 5,3.5,1.6,0.6,setosa 46 | 5.1,3.8,1.9,0.4,setosa 47 | 4.8,3,1.4,0.3,setosa 48 | 5.1,3.8,1.6,0.2,setosa 49 | 4.6,3.2,1.4,0.2,setosa 50 | 5.3,3.7,1.5,0.2,setosa 51 | 5,3.3,1.4,0.2,setosa 52 | 7,3.2,4.7,1.4,versicolor 53 | 6.4,3.2,4.5,1.5,versicolor 54 | 6.9,3.1,4.9,1.5,versicolor 55 | 5.5,2.3,4,1.3,versicolor 56 | 6.5,2.8,4.6,1.5,versicolor 57 | 5.7,2.8,4.5,1.3,versicolor 58 | 6.3,3.3,4.7,1.6,versicolor 59 | 4.9,2.4,3.3,1,versicolor 60 | 6.6,2.9,4.6,1.3,versicolor 61 | 5.2,2.7,3.9,1.4,versicolor 62 | 5,2,3.5,1,versicolor 63 | 5.9,3,4.2,1.5,versicolor 64 | 6,2.2,4,1,versicolor 65 | 6.1,2.9,4.7,1.4,versicolor 66 | 5.6,2.9,3.6,1.3,versicolor 67 | 6.7,3.1,4.4,1.4,versicolor 68 | 5.6,3,4.5,1.5,versicolor 69 | 5.8,2.7,4.1,1,versicolor 70 | 6.2,2.2,4.5,1.5,versicolor 71 | 5.6,2.5,3.9,1.1,versicolor 72 | 5.9,3.2,4.8,1.8,versicolor 73 | 6.1,2.8,4,1.3,versicolor 74 | 6.3,2.5,4.9,1.5,versicolor 75 | 6.1,2.8,4.7,1.2,versicolor 76 | 6.4,2.9,4.3,1.3,versicolor 77 | 6.6,3,4.4,1.4,versicolor 78 | 6.8,2.8,4.8,1.4,versicolor 79 | 6.7,3,5,1.7,versicolor 80 | 6,2.9,4.5,1.5,versicolor 81 | 5.7,2.6,3.5,1,versicolor 82 | 5.5,2.4,3.8,1.1,versicolor 83 | 5.5,2.4,3.7,1,versicolor 84 | 5.8,2.7,3.9,1.2,versicolor 85 | 6,2.7,5.1,1.6,versicolor 86 | 5.4,3,4.5,1.5,versicolor 87 | 6,3.4,4.5,1.6,versicolor 88 | 6.7,3.1,4.7,1.5,versicolor 89 | 6.3,2.3,4.4,1.3,versicolor 90 | 5.6,3,4.1,1.3,versicolor 91 | 5.5,2.5,4,1.3,versicolor 92 | 5.5,2.6,4.4,1.2,versicolor 93 | 6.1,3,4.6,1.4,versicolor 94 | 5.8,2.6,4,1.2,versicolor 95 | 5,2.3,3.3,1,versicolor 96 | 5.6,2.7,4.2,1.3,versicolor 97 | 5.7,3,4.2,1.2,versicolor 98 | 5.7,2.9,4.2,1.3,versicolor 99 | 6.2,2.9,4.3,1.3,versicolor 100 | 5.1,2.5,3,1.1,versicolor 101 | 5.7,2.8,4.1,1.3,versicolor 102 | 6.3,3.3,6,2.5,virginica 103 | 5.8,2.7,5.1,1.9,virginica 104 | 7.1,3,5.9,2.1,virginica 105 | 6.3,2.9,5.6,1.8,virginica 106 | 6.5,3,5.8,2.2,virginica 107 | 7.6,3,6.6,2.1,virginica 108 | 4.9,2.5,4.5,1.7,virginica 109 | 7.3,2.9,6.3,1.8,virginica 110 | 6.7,2.5,5.8,1.8,virginica 111 | 7.2,3.6,6.1,2.5,virginica 112 | 6.5,3.2,5.1,2,virginica 113 | 6.4,2.7,5.3,1.9,virginica 114 | 6.8,3,5.5,2.1,virginica 115 | 5.7,2.5,5,2,virginica 116 | 5.8,2.8,5.1,2.4,virginica 117 | 6.4,3.2,5.3,2.3,virginica 118 | 6.5,3,5.5,1.8,virginica 119 | 7.7,3.8,6.7,2.2,virginica 120 | 7.7,2.6,6.9,2.3,virginica 121 | 6,2.2,5,1.5,virginica 122 | 6.9,3.2,5.7,2.3,virginica 123 | 5.6,2.8,4.9,2,virginica 124 | 7.7,2.8,6.7,2,virginica 125 | 6.3,2.7,4.9,1.8,virginica 126 | 6.7,3.3,5.7,2.1,virginica 127 | 7.2,3.2,6,1.8,virginica 128 | 6.2,2.8,4.8,1.8,virginica 129 | 6.1,3,4.9,1.8,virginica 130 | 6.4,2.8,5.6,2.1,virginica 131 | 7.2,3,5.8,1.6,virginica 132 | 7.4,2.8,6.1,1.9,virginica 133 | 7.9,3.8,6.4,2,virginica 134 | 6.4,2.8,5.6,2.2,virginica 135 | 6.3,2.8,5.1,1.5,virginica 136 | 6.1,2.6,5.6,1.4,virginica 137 | 7.7,3,6.1,2.3,virginica 138 | 6.3,3.4,5.6,2.4,virginica 139 | 6.4,3.1,5.5,1.8,virginica 140 | 6,3,4.8,1.8,virginica 141 | 6.9,3.1,5.4,2.1,virginica 142 | 6.7,3.1,5.6,2.4,virginica 143 | 6.9,3.1,5.1,2.3,virginica 144 | 5.8,2.7,5.1,1.9,virginica 145 | 6.8,3.2,5.9,2.3,virginica 146 | 6.7,3.3,5.7,2.5,virginica 147 | 6.7,3,5.2,2.3,virginica 148 | 6.3,2.5,5,1.9,virginica 149 | 6.5,3,5.2,2,virginica 150 | 6.2,3.4,5.4,2.3,virginica 151 | 5.9,3,5.1,1.8,virginica 152 | -------------------------------------------------------------------------------- /data/stocks.csv: -------------------------------------------------------------------------------- 1 | symbol,date,price 2 | MSFT,Jan 2000,39.81 3 | MSFT,Feb 2000,36.35 4 | MSFT,Mar 2000,43.22 5 | MSFT,Apr 2000,28.37 6 | MSFT,May 2000,25.45 7 | MSFT,Jun 2000,32.54 8 | MSFT,Jul 2000,28.4 9 | MSFT,Aug 2000,28.4 10 | MSFT,Sep 2000,24.53 11 | MSFT,Oct 2000,28.02 12 | MSFT,Nov 2000,23.34 13 | MSFT,Dec 2000,17.65 14 | MSFT,Jan 2001,24.84 15 | MSFT,Feb 2001,24 16 | MSFT,Mar 2001,22.25 17 | MSFT,Apr 2001,27.56 18 | MSFT,May 2001,28.14 19 | MSFT,Jun 2001,29.7 20 | MSFT,Jul 2001,26.93 21 | MSFT,Aug 2001,23.21 22 | MSFT,Sep 2001,20.82 23 | MSFT,Oct 2001,23.65 24 | MSFT,Nov 2001,26.12 25 | MSFT,Dec 2001,26.95 26 | MSFT,Jan 2002,25.92 27 | MSFT,Feb 2002,23.73 28 | MSFT,Mar 2002,24.53 29 | MSFT,Apr 2002,21.26 30 | MSFT,May 2002,20.71 31 | MSFT,Jun 2002,22.25 32 | MSFT,Jul 2002,19.52 33 | MSFT,Aug 2002,19.97 34 | MSFT,Sep 2002,17.79 35 | MSFT,Oct 2002,21.75 36 | MSFT,Nov 2002,23.46 37 | MSFT,Dec 2002,21.03 38 | MSFT,Jan 2003,19.31 39 | MSFT,Feb 2003,19.34 40 | MSFT,Mar 2003,19.76 41 | MSFT,Apr 2003,20.87 42 | MSFT,May 2003,20.09 43 | MSFT,Jun 2003,20.93 44 | MSFT,Jul 2003,21.56 45 | MSFT,Aug 2003,21.65 46 | MSFT,Sep 2003,22.69 47 | MSFT,Oct 2003,21.45 48 | MSFT,Nov 2003,21.1 49 | MSFT,Dec 2003,22.46 50 | MSFT,Jan 2004,22.69 51 | MSFT,Feb 2004,21.77 52 | MSFT,Mar 2004,20.46 53 | MSFT,Apr 2004,21.45 54 | MSFT,May 2004,21.53 55 | MSFT,Jun 2004,23.44 56 | MSFT,Jul 2004,23.38 57 | MSFT,Aug 2004,22.47 58 | MSFT,Sep 2004,22.76 59 | MSFT,Oct 2004,23.02 60 | MSFT,Nov 2004,24.6 61 | MSFT,Dec 2004,24.52 62 | MSFT,Jan 2005,24.11 63 | MSFT,Feb 2005,23.15 64 | MSFT,Mar 2005,22.24 65 | MSFT,Apr 2005,23.28 66 | MSFT,May 2005,23.82 67 | MSFT,Jun 2005,22.93 68 | MSFT,Jul 2005,23.64 69 | MSFT,Aug 2005,25.35 70 | MSFT,Sep 2005,23.83 71 | MSFT,Oct 2005,23.8 72 | MSFT,Nov 2005,25.71 73 | MSFT,Dec 2005,24.29 74 | MSFT,Jan 2006,26.14 75 | MSFT,Feb 2006,25.04 76 | MSFT,Mar 2006,25.36 77 | MSFT,Apr 2006,22.5 78 | MSFT,May 2006,21.19 79 | MSFT,Jun 2006,21.8 80 | MSFT,Jul 2006,22.51 81 | MSFT,Aug 2006,24.13 82 | MSFT,Sep 2006,25.68 83 | MSFT,Oct 2006,26.96 84 | MSFT,Nov 2006,27.66 85 | MSFT,Dec 2006,28.13 86 | MSFT,Jan 2007,29.07 87 | MSFT,Feb 2007,26.63 88 | MSFT,Mar 2007,26.35 89 | MSFT,Apr 2007,28.3 90 | MSFT,May 2007,29.11 91 | MSFT,Jun 2007,27.95 92 | MSFT,Jul 2007,27.5 93 | MSFT,Aug 2007,27.34 94 | MSFT,Sep 2007,28.04 95 | MSFT,Oct 2007,35.03 96 | MSFT,Nov 2007,32.09 97 | MSFT,Dec 2007,34 98 | MSFT,Jan 2008,31.13 99 | MSFT,Feb 2008,26.07 100 | MSFT,Mar 2008,27.21 101 | MSFT,Apr 2008,27.34 102 | MSFT,May 2008,27.25 103 | MSFT,Jun 2008,26.47 104 | MSFT,Jul 2008,24.75 105 | MSFT,Aug 2008,26.36 106 | MSFT,Sep 2008,25.78 107 | MSFT,Oct 2008,21.57 108 | MSFT,Nov 2008,19.66 109 | MSFT,Dec 2008,18.91 110 | MSFT,Jan 2009,16.63 111 | MSFT,Feb 2009,15.81 112 | MSFT,Mar 2009,17.99 113 | MSFT,Apr 2009,19.84 114 | MSFT,May 2009,20.59 115 | MSFT,Jun 2009,23.42 116 | MSFT,Jul 2009,23.18 117 | MSFT,Aug 2009,24.43 118 | MSFT,Sep 2009,25.49 119 | MSFT,Oct 2009,27.48 120 | MSFT,Nov 2009,29.27 121 | MSFT,Dec 2009,30.34 122 | MSFT,Jan 2010,28.05 123 | MSFT,Feb 2010,28.67 124 | MSFT,Mar 2010,28.8 125 | AMZN,Jan 2000,64.56 126 | AMZN,Feb 2000,68.87 127 | AMZN,Mar 2000,67 128 | AMZN,Apr 2000,55.19 129 | AMZN,May 2000,48.31 130 | AMZN,Jun 2000,36.31 131 | AMZN,Jul 2000,30.12 132 | AMZN,Aug 2000,41.5 133 | AMZN,Sep 2000,38.44 134 | AMZN,Oct 2000,36.62 135 | AMZN,Nov 2000,24.69 136 | AMZN,Dec 2000,15.56 137 | AMZN,Jan 2001,17.31 138 | AMZN,Feb 2001,10.19 139 | AMZN,Mar 2001,10.23 140 | AMZN,Apr 2001,15.78 141 | AMZN,May 2001,16.69 142 | AMZN,Jun 2001,14.15 143 | AMZN,Jul 2001,12.49 144 | AMZN,Aug 2001,8.94 145 | AMZN,Sep 2001,5.97 146 | AMZN,Oct 2001,6.98 147 | AMZN,Nov 2001,11.32 148 | AMZN,Dec 2001,10.82 149 | AMZN,Jan 2002,14.19 150 | AMZN,Feb 2002,14.1 151 | AMZN,Mar 2002,14.3 152 | AMZN,Apr 2002,16.69 153 | AMZN,May 2002,18.23 154 | AMZN,Jun 2002,16.25 155 | AMZN,Jul 2002,14.45 156 | AMZN,Aug 2002,14.94 157 | AMZN,Sep 2002,15.93 158 | AMZN,Oct 2002,19.36 159 | AMZN,Nov 2002,23.35 160 | AMZN,Dec 2002,18.89 161 | AMZN,Jan 2003,21.85 162 | AMZN,Feb 2003,22.01 163 | AMZN,Mar 2003,26.03 164 | AMZN,Apr 2003,28.69 165 | AMZN,May 2003,35.89 166 | AMZN,Jun 2003,36.32 167 | AMZN,Jul 2003,41.64 168 | AMZN,Aug 2003,46.32 169 | AMZN,Sep 2003,48.43 170 | AMZN,Oct 2003,54.43 171 | AMZN,Nov 2003,53.97 172 | AMZN,Dec 2003,52.62 173 | AMZN,Jan 2004,50.4 174 | AMZN,Feb 2004,43.01 175 | AMZN,Mar 2004,43.28 176 | AMZN,Apr 2004,43.6 177 | AMZN,May 2004,48.5 178 | AMZN,Jun 2004,54.4 179 | AMZN,Jul 2004,38.92 180 | AMZN,Aug 2004,38.14 181 | AMZN,Sep 2004,40.86 182 | AMZN,Oct 2004,34.13 183 | AMZN,Nov 2004,39.68 184 | AMZN,Dec 2004,44.29 185 | AMZN,Jan 2005,43.22 186 | AMZN,Feb 2005,35.18 187 | AMZN,Mar 2005,34.27 188 | AMZN,Apr 2005,32.36 189 | AMZN,May 2005,35.51 190 | AMZN,Jun 2005,33.09 191 | AMZN,Jul 2005,45.15 192 | AMZN,Aug 2005,42.7 193 | AMZN,Sep 2005,45.3 194 | AMZN,Oct 2005,39.86 195 | AMZN,Nov 2005,48.46 196 | AMZN,Dec 2005,47.15 197 | AMZN,Jan 2006,44.82 198 | AMZN,Feb 2006,37.44 199 | AMZN,Mar 2006,36.53 200 | AMZN,Apr 2006,35.21 201 | AMZN,May 2006,34.61 202 | AMZN,Jun 2006,38.68 203 | AMZN,Jul 2006,26.89 204 | AMZN,Aug 2006,30.83 205 | AMZN,Sep 2006,32.12 206 | AMZN,Oct 2006,38.09 207 | AMZN,Nov 2006,40.34 208 | AMZN,Dec 2006,39.46 209 | AMZN,Jan 2007,37.67 210 | AMZN,Feb 2007,39.14 211 | AMZN,Mar 2007,39.79 212 | AMZN,Apr 2007,61.33 213 | AMZN,May 2007,69.14 214 | AMZN,Jun 2007,68.41 215 | AMZN,Jul 2007,78.54 216 | AMZN,Aug 2007,79.91 217 | AMZN,Sep 2007,93.15 218 | AMZN,Oct 2007,89.15 219 | AMZN,Nov 2007,90.56 220 | AMZN,Dec 2007,92.64 221 | AMZN,Jan 2008,77.7 222 | AMZN,Feb 2008,64.47 223 | AMZN,Mar 2008,71.3 224 | AMZN,Apr 2008,78.63 225 | AMZN,May 2008,81.62 226 | AMZN,Jun 2008,73.33 227 | AMZN,Jul 2008,76.34 228 | AMZN,Aug 2008,80.81 229 | AMZN,Sep 2008,72.76 230 | AMZN,Oct 2008,57.24 231 | AMZN,Nov 2008,42.7 232 | AMZN,Dec 2008,51.28 233 | AMZN,Jan 2009,58.82 234 | AMZN,Feb 2009,64.79 235 | AMZN,Mar 2009,73.44 236 | AMZN,Apr 2009,80.52 237 | AMZN,May 2009,77.99 238 | AMZN,Jun 2009,83.66 239 | AMZN,Jul 2009,85.76 240 | AMZN,Aug 2009,81.19 241 | AMZN,Sep 2009,93.36 242 | AMZN,Oct 2009,118.81 243 | AMZN,Nov 2009,135.91 244 | AMZN,Dec 2009,134.52 245 | AMZN,Jan 2010,125.41 246 | AMZN,Feb 2010,118.4 247 | AMZN,Mar 2010,128.82 248 | IBM,Jan 2000,100.52 249 | IBM,Feb 2000,92.11 250 | IBM,Mar 2000,106.11 251 | IBM,Apr 2000,99.95 252 | IBM,May 2000,96.31 253 | IBM,Jun 2000,98.33 254 | IBM,Jul 2000,100.74 255 | IBM,Aug 2000,118.62 256 | IBM,Sep 2000,101.19 257 | IBM,Oct 2000,88.5 258 | IBM,Nov 2000,84.12 259 | IBM,Dec 2000,76.47 260 | IBM,Jan 2001,100.76 261 | IBM,Feb 2001,89.98 262 | IBM,Mar 2001,86.63 263 | IBM,Apr 2001,103.7 264 | IBM,May 2001,100.82 265 | IBM,Jun 2001,102.35 266 | IBM,Jul 2001,94.87 267 | IBM,Aug 2001,90.25 268 | IBM,Sep 2001,82.82 269 | IBM,Oct 2001,97.58 270 | IBM,Nov 2001,104.5 271 | IBM,Dec 2001,109.36 272 | IBM,Jan 2002,97.54 273 | IBM,Feb 2002,88.82 274 | IBM,Mar 2002,94.15 275 | IBM,Apr 2002,75.82 276 | IBM,May 2002,72.97 277 | IBM,Jun 2002,65.31 278 | IBM,Jul 2002,63.86 279 | IBM,Aug 2002,68.52 280 | IBM,Sep 2002,53.01 281 | IBM,Oct 2002,71.76 282 | IBM,Nov 2002,79.16 283 | IBM,Dec 2002,70.58 284 | IBM,Jan 2003,71.22 285 | IBM,Feb 2003,71.13 286 | IBM,Mar 2003,71.57 287 | IBM,Apr 2003,77.47 288 | IBM,May 2003,80.48 289 | IBM,Jun 2003,75.42 290 | IBM,Jul 2003,74.28 291 | IBM,Aug 2003,75.12 292 | IBM,Sep 2003,80.91 293 | IBM,Oct 2003,81.96 294 | IBM,Nov 2003,83.08 295 | IBM,Dec 2003,85.05 296 | IBM,Jan 2004,91.06 297 | IBM,Feb 2004,88.7 298 | IBM,Mar 2004,84.41 299 | IBM,Apr 2004,81.04 300 | IBM,May 2004,81.59 301 | IBM,Jun 2004,81.19 302 | IBM,Jul 2004,80.19 303 | IBM,Aug 2004,78.17 304 | IBM,Sep 2004,79.13 305 | IBM,Oct 2004,82.84 306 | IBM,Nov 2004,87.15 307 | IBM,Dec 2004,91.16 308 | IBM,Jan 2005,86.39 309 | IBM,Feb 2005,85.78 310 | IBM,Mar 2005,84.66 311 | IBM,Apr 2005,70.77 312 | IBM,May 2005,70.18 313 | IBM,Jun 2005,68.93 314 | IBM,Jul 2005,77.53 315 | IBM,Aug 2005,75.07 316 | IBM,Sep 2005,74.7 317 | IBM,Oct 2005,76.25 318 | IBM,Nov 2005,82.98 319 | IBM,Dec 2005,76.73 320 | IBM,Jan 2006,75.89 321 | IBM,Feb 2006,75.09 322 | IBM,Mar 2006,77.17 323 | IBM,Apr 2006,77.05 324 | IBM,May 2006,75.04 325 | IBM,Jun 2006,72.15 326 | IBM,Jul 2006,72.7 327 | IBM,Aug 2006,76.35 328 | IBM,Sep 2006,77.26 329 | IBM,Oct 2006,87.06 330 | IBM,Nov 2006,86.95 331 | IBM,Dec 2006,91.9 332 | IBM,Jan 2007,93.79 333 | IBM,Feb 2007,88.18 334 | IBM,Mar 2007,89.44 335 | IBM,Apr 2007,96.98 336 | IBM,May 2007,101.54 337 | IBM,Jun 2007,100.25 338 | IBM,Jul 2007,105.4 339 | IBM,Aug 2007,111.54 340 | IBM,Sep 2007,112.6 341 | IBM,Oct 2007,111 342 | IBM,Nov 2007,100.9 343 | IBM,Dec 2007,103.7 344 | IBM,Jan 2008,102.75 345 | IBM,Feb 2008,109.64 346 | IBM,Mar 2008,110.87 347 | IBM,Apr 2008,116.23 348 | IBM,May 2008,125.14 349 | IBM,Jun 2008,114.6 350 | IBM,Jul 2008,123.74 351 | IBM,Aug 2008,118.16 352 | IBM,Sep 2008,113.53 353 | IBM,Oct 2008,90.24 354 | IBM,Nov 2008,79.65 355 | IBM,Dec 2008,82.15 356 | IBM,Jan 2009,89.46 357 | IBM,Feb 2009,90.32 358 | IBM,Mar 2009,95.09 359 | IBM,Apr 2009,101.29 360 | IBM,May 2009,104.85 361 | IBM,Jun 2009,103.01 362 | IBM,Jul 2009,116.34 363 | IBM,Aug 2009,117 364 | IBM,Sep 2009,118.55 365 | IBM,Oct 2009,119.54 366 | IBM,Nov 2009,125.79 367 | IBM,Dec 2009,130.32 368 | IBM,Jan 2010,121.85 369 | IBM,Feb 2010,127.16 370 | IBM,Mar 2010,125.55 371 | AAPL,Jan 2000,25.94 372 | AAPL,Feb 2000,28.66 373 | AAPL,Mar 2000,33.95 374 | AAPL,Apr 2000,31.01 375 | AAPL,May 2000,21 376 | AAPL,Jun 2000,26.19 377 | AAPL,Jul 2000,25.41 378 | AAPL,Aug 2000,30.47 379 | AAPL,Sep 2000,12.88 380 | AAPL,Oct 2000,9.78 381 | AAPL,Nov 2000,8.25 382 | AAPL,Dec 2000,7.44 383 | AAPL,Jan 2001,10.81 384 | AAPL,Feb 2001,9.12 385 | AAPL,Mar 2001,11.03 386 | AAPL,Apr 2001,12.74 387 | AAPL,May 2001,9.98 388 | AAPL,Jun 2001,11.62 389 | AAPL,Jul 2001,9.4 390 | AAPL,Aug 2001,9.27 391 | AAPL,Sep 2001,7.76 392 | AAPL,Oct 2001,8.78 393 | AAPL,Nov 2001,10.65 394 | AAPL,Dec 2001,10.95 395 | AAPL,Jan 2002,12.36 396 | AAPL,Feb 2002,10.85 397 | AAPL,Mar 2002,11.84 398 | AAPL,Apr 2002,12.14 399 | AAPL,May 2002,11.65 400 | AAPL,Jun 2002,8.86 401 | AAPL,Jul 2002,7.63 402 | AAPL,Aug 2002,7.38 403 | AAPL,Sep 2002,7.25 404 | AAPL,Oct 2002,8.03 405 | AAPL,Nov 2002,7.75 406 | AAPL,Dec 2002,7.16 407 | AAPL,Jan 2003,7.18 408 | AAPL,Feb 2003,7.51 409 | AAPL,Mar 2003,7.07 410 | AAPL,Apr 2003,7.11 411 | AAPL,May 2003,8.98 412 | AAPL,Jun 2003,9.53 413 | AAPL,Jul 2003,10.54 414 | AAPL,Aug 2003,11.31 415 | AAPL,Sep 2003,10.36 416 | AAPL,Oct 2003,11.44 417 | AAPL,Nov 2003,10.45 418 | AAPL,Dec 2003,10.69 419 | AAPL,Jan 2004,11.28 420 | AAPL,Feb 2004,11.96 421 | AAPL,Mar 2004,13.52 422 | AAPL,Apr 2004,12.89 423 | AAPL,May 2004,14.03 424 | AAPL,Jun 2004,16.27 425 | AAPL,Jul 2004,16.17 426 | AAPL,Aug 2004,17.25 427 | AAPL,Sep 2004,19.38 428 | AAPL,Oct 2004,26.2 429 | AAPL,Nov 2004,33.53 430 | AAPL,Dec 2004,32.2 431 | AAPL,Jan 2005,38.45 432 | AAPL,Feb 2005,44.86 433 | AAPL,Mar 2005,41.67 434 | AAPL,Apr 2005,36.06 435 | AAPL,May 2005,39.76 436 | AAPL,Jun 2005,36.81 437 | AAPL,Jul 2005,42.65 438 | AAPL,Aug 2005,46.89 439 | AAPL,Sep 2005,53.61 440 | AAPL,Oct 2005,57.59 441 | AAPL,Nov 2005,67.82 442 | AAPL,Dec 2005,71.89 443 | AAPL,Jan 2006,75.51 444 | AAPL,Feb 2006,68.49 445 | AAPL,Mar 2006,62.72 446 | AAPL,Apr 2006,70.39 447 | AAPL,May 2006,59.77 448 | AAPL,Jun 2006,57.27 449 | AAPL,Jul 2006,67.96 450 | AAPL,Aug 2006,67.85 451 | AAPL,Sep 2006,76.98 452 | AAPL,Oct 2006,81.08 453 | AAPL,Nov 2006,91.66 454 | AAPL,Dec 2006,84.84 455 | AAPL,Jan 2007,85.73 456 | AAPL,Feb 2007,84.61 457 | AAPL,Mar 2007,92.91 458 | AAPL,Apr 2007,99.8 459 | AAPL,May 2007,121.19 460 | AAPL,Jun 2007,122.04 461 | AAPL,Jul 2007,131.76 462 | AAPL,Aug 2007,138.48 463 | AAPL,Sep 2007,153.47 464 | AAPL,Oct 2007,189.95 465 | AAPL,Nov 2007,182.22 466 | AAPL,Dec 2007,198.08 467 | AAPL,Jan 2008,135.36 468 | AAPL,Feb 2008,125.02 469 | AAPL,Mar 2008,143.5 470 | AAPL,Apr 2008,173.95 471 | AAPL,May 2008,188.75 472 | AAPL,Jun 2008,167.44 473 | AAPL,Jul 2008,158.95 474 | AAPL,Aug 2008,169.53 475 | AAPL,Sep 2008,113.66 476 | AAPL,Oct 2008,107.59 477 | AAPL,Nov 2008,92.67 478 | AAPL,Dec 2008,85.35 479 | AAPL,Jan 2009,90.13 480 | AAPL,Feb 2009,89.31 481 | AAPL,Mar 2009,105.12 482 | AAPL,Apr 2009,125.83 483 | AAPL,May 2009,135.81 484 | AAPL,Jun 2009,142.43 485 | AAPL,Jul 2009,163.39 486 | AAPL,Aug 2009,168.21 487 | AAPL,Sep 2009,185.35 488 | AAPL,Oct 2009,188.5 489 | AAPL,Nov 2009,199.91 490 | AAPL,Dec 2009,210.73 491 | AAPL,Jan 2010,192.06 492 | AAPL,Feb 2010,204.62 493 | AAPL,Mar 2010,223.02 494 | -------------------------------------------------------------------------------- /img/bar-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/bar-chart.png -------------------------------------------------------------------------------- /img/book-cover-interactive-data-visulization-murray.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/book-cover-interactive-data-visulization-murray.png -------------------------------------------------------------------------------- /img/chart-axis.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/chart-axis.png -------------------------------------------------------------------------------- /img/chart-margin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/chart-margin.png -------------------------------------------------------------------------------- /img/color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/color.png -------------------------------------------------------------------------------- /img/force.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/force.png -------------------------------------------------------------------------------- /img/geo-map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/geo-map.png -------------------------------------------------------------------------------- /img/grouped-bar-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/grouped-bar-chart.png -------------------------------------------------------------------------------- /img/line-cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/line-cat.png -------------------------------------------------------------------------------- /img/line-chart-path.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/line-chart-path.png -------------------------------------------------------------------------------- /img/line-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/line-chart.png -------------------------------------------------------------------------------- /img/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/line.png -------------------------------------------------------------------------------- /img/node-link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/node-link.png -------------------------------------------------------------------------------- /img/placeholder-h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/placeholder-h.png -------------------------------------------------------------------------------- /img/radial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/radial.png -------------------------------------------------------------------------------- /img/random.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/random.png -------------------------------------------------------------------------------- /img/scatterplot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/scatterplot.png -------------------------------------------------------------------------------- /img/size.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/size.png -------------------------------------------------------------------------------- /img/stacked-bar-chart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/img/stacked-bar-chart.png -------------------------------------------------------------------------------- /thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/LyonDataViz/MOS5.5-Dataviz/e9c7f0facf7b5104024130efd709ef2ea63dcda1/thumbnail.png --------------------------------------------------------------------------------