SlideShare a Scribd company logo
1 of 20
D3.js meets Django 
Visualizing Data in Your Web Application
About me: 
Name: John Baldwin 
Occupation: Software developer 
Professional background 
TL;DR – Go here: 
http://www.linkedin.com/in/baldwinsplace/ 
Email: jlbaldwin@gmail.com 
Twitter: @john_baldwin
What is D3.js? 
“D3.js is a JavaScript library for manipulating documents 
base on data.” 
- D3.js home page (http://d3js.org/ ) 
 Created in 2011 
 D3 = “Data-Driven Documents” 
 This refers to the W3C Document Object Model 
 Visualization is constructing a DOM from Data 
 Rich ecosystem, very active community
Selection of D3.js Examples 
 Epicyclic Gearing 
 http://bl.ocks.org/mbostock/1353700 
 Parallel Sets – Titanic Survivors 
 http://www.jasondavies.com/parallel-sets/ 
 World Tour 
 http://bl.ocks.org/mbostock/4183330 
 Front Row to Fashion Week 
 http://www.nytimes.com/newsgraphics/2013/09/13/fashion-week-editors-picks/ 
 Collapsible Tree 
 http://bl.ocks.org/mbostock/4339083 
 Force Directed Graph 
 http://bl.ocks.org/mbostock/4062045 
 Bright Point examples 
 http://www.brightpointinc.com/project-list/
D3 Ecosystem at a Glance 
 API Reference: 
 https://github.com/mbostock/d3/wiki 
 Tutorials collection 
 https://github.com/mbostock/d3/wiki/Tutorials 
 Three recommended starting points 
 Code Academy - Interactive website tutorial 
 http://www.codecademy.com/courses/web-beginner-en-kcP9b/0/1 
 DashingD3js – Extensive flow from basic concepts to more 
advanced steps 
 Provides a great reference to keep on hand as you develop your first 
D3 visualizations 
 https://www.dashingd3js.com/ 
 Free online book: Interactive Data Visualization for the Web 
 http://chimera.labs.oreilly.com/books/1230000000345 
 Lots of examples on the web 
 http://techslides.com/over-2000-d3-js-examples-and-demos/
The D3.js “Tech Stack” 
D3.js 
SVG HTML JavaScript CSS 
Data 
(JSON, 
XML, et 
al)
The Keys to Understanding 
D3 Mechanics 
SVG 
Selection 
Transition 
Data binding 
Image source: https://www.flickr.com/photos/practicalowl/256628505/
SVG=Scalable Vector Graphics 
 It is a markup language for describing two-dimensional 
graphics 
 It supports interaction and animation 
 It is a W3C open standard 
 http://www.w3.org/Graphics/SVG/ 
 Supported by major modern web browsers 
 http://caniuse.com/#feat=svg 
 But the spec is extensive 
 http://www.w3.org/TR/SVG11/ 
 It doesn’t need Flash!
What can SVG do? 
Render basic shapes 
 Rectangle 
 Circle 
 Ellipse 
 Line 
 Polyline 
 Polygon 
Advanced shape functionality 
 path, fills, gradients, patterns 
Text 
Animation 
And much, MUCH More!!! 
Ref: http://www.w3.org/TR/SVG11/ 
Image credits: Saturday Night Live, NBC Studios
(Basic) Shapes in SVG
SVG ‘g’ Element 
 Groups together related SVG elements (‘g’) 
 Allows you to 
 Inherit styles 
 Transform as a group 
 Translate 
 Scale 
 Rotate 
 Skew 
 See 
 http://www.w3.org/TR/SVG/struct.html#GElement 
 http://www.w3.org/TR/SVG/coords.html
So Why D3? 
OK, SVG is great! So why do we need D3? 
Answer: 
Same reason we use jQuery
D3 Fundamentals 
Selection, Transition, and Data Binding 
 Demo with our sample app…
Visdjango 
Django project to demonstrate 
visualizations 
Apps 
 Intro – Introduces core concepts 
D3 – Specific chart examples 
NVD3 – Examples using a D3 framework 
Project source code 
 https://github.com/johnbaldwin/visdjango
JSON Data via AJAX 
 Set your request url in your app urls.py 
url(r’^mychart-data/', views.mychart_data), 
 Create your view method in your app views.py 
def mychart_data(request): 
response_data = { 
# Build your data in a dict/list 
} 
return HttpResponse(json.dumps(response_data), 
content_type = 'application/json') 
 Show the D3 parts in your JavaScript 
d3.json("/app/mychart-data/", type, 
function(error, data) { 
// code block 
} 
 It really is that simple 
 Unless you are doing cross site XHR requests
NVD3 
 NVD3 is a JavaScript library to provide reusable charts 
 Home page: http://nvd3.org/ 
 Built on D3.js 
 There is a Django package for NVD3 
 https://github.com/areski/django-nvd3 
 Under active development 
 Here are the chart types available now: 
 http://nvd3.org/examples/ 
 Other frameworks (I haven’t tried yet) 
 Cubism.js 
 Dimple 
 Ref: https://en.wikipedia.org/wiki/D3.js#Related_Tools_and_Libraries
More D3 topics 
 Mike Bostock’s workshop slides 
 http://bost.ocks.org/mike/d3/workshop/#0 
 Thinking with Joins 
 http://bost.ocks.org/mike/join/ 
 Layouts 
 https://github.com/mbostock/d3/wiki/Layouts 
 Queues 
 https://github.com/mbostock/queue 
 Geographic maps 
 https://github.com/mbostock/topojson 
 Visualizing algorithms 
 http://bost.ocks.org/mike/algorithms/
Takeaways – D3 
 D3 
 I’ve only scratched the surface of what is 
possible with D3 
 D3 is broad and somewhat deep 
 Lots of examples, play with them 
 Start out small 
 Get to know how to use SVG. This will help you 
debug 
 Remember, D3 stands for Data Driven 
Documents 
 Learn and use its data binding capability 
 D3 doesn’t get in your way 
 Data Tip 
 If you are working with a lot of data: 
 Break your data down into chunks and use queue 
to “stream” the data into your page
Takeaways - JavaScript 
 Link to trusted remote resource 
 Such as a CDN 
 Note: Referrer link is tracked in the request header 
 Allow linking to local assets in development mode 
 Code offline
Thanks! 
Email: jlbaldwin@gmail.com

More Related Content

What's hot

Python, web scraping and content management: Scrapy and Django
Python, web scraping and content management: Scrapy and DjangoPython, web scraping and content management: Scrapy and Django
Python, web scraping and content management: Scrapy and Django
Sammy Fung
 
Javascript Libraries & Frameworks | Connor Goddard
Javascript Libraries & Frameworks | Connor GoddardJavascript Libraries & Frameworks | Connor Goddard
Javascript Libraries & Frameworks | Connor Goddard
Connor Goddard
 
GPars howto - when to use which concurrency abstraction
GPars howto - when to use which concurrency abstractionGPars howto - when to use which concurrency abstraction
GPars howto - when to use which concurrency abstraction
Vaclav Pech
 

What's hot (20)

Do something in 5 with gas 7-email log
Do something in 5 with gas 7-email logDo something in 5 with gas 7-email log
Do something in 5 with gas 7-email log
 
How to Scrap Any Website's content using ScrapyTutorial of How to scrape (cra...
How to Scrap Any Website's content using ScrapyTutorial of How to scrape (cra...How to Scrap Any Website's content using ScrapyTutorial of How to scrape (cra...
How to Scrap Any Website's content using ScrapyTutorial of How to scrape (cra...
 
Downloading the internet with Python + Scrapy
Downloading the internet with Python + ScrapyDownloading the internet with Python + Scrapy
Downloading the internet with Python + Scrapy
 
JavaScript client API for Google Apps Script API primer
JavaScript client API for Google Apps Script API primerJavaScript client API for Google Apps Script API primer
JavaScript client API for Google Apps Script API primer
 
Web Crawling Modeling with Scrapy Models #TDC2014
Web Crawling Modeling with Scrapy Models #TDC2014Web Crawling Modeling with Scrapy Models #TDC2014
Web Crawling Modeling with Scrapy Models #TDC2014
 
Python, web scraping and content management: Scrapy and Django
Python, web scraping and content management: Scrapy and DjangoPython, web scraping and content management: Scrapy and Django
Python, web scraping and content management: Scrapy and Django
 
Gaelyk
GaelykGaelyk
Gaelyk
 
G* on GAE/J 挑戦編
G* on GAE/J 挑戦編G* on GAE/J 挑戦編
G* on GAE/J 挑戦編
 
Javascript Libraries & Frameworks | Connor Goddard
Javascript Libraries & Frameworks | Connor GoddardJavascript Libraries & Frameworks | Connor Goddard
Javascript Libraries & Frameworks | Connor Goddard
 
UIKonf App & Data Driven Design @swift.berlin
UIKonf App & Data Driven Design @swift.berlinUIKonf App & Data Driven Design @swift.berlin
UIKonf App & Data Driven Design @swift.berlin
 
GPars howto - when to use which concurrency abstraction
GPars howto - when to use which concurrency abstractionGPars howto - when to use which concurrency abstraction
GPars howto - when to use which concurrency abstraction
 
Python and Data Analysis
Python and Data AnalysisPython and Data Analysis
Python and Data Analysis
 
Gpars workshop
Gpars workshopGpars workshop
Gpars workshop
 
Using YQL Sensibly - YUIConf 2010
Using YQL Sensibly - YUIConf 2010Using YQL Sensibly - YUIConf 2010
Using YQL Sensibly - YUIConf 2010
 
Do something in 5 with gas 8-copy between databases
Do something in 5 with gas 8-copy between databasesDo something in 5 with gas 8-copy between databases
Do something in 5 with gas 8-copy between databases
 
Scaling up data science applications
Scaling up data science applicationsScaling up data science applications
Scaling up data science applications
 
Kotlin decoration - February Berlin Kotlin Meetup
Kotlin decoration - February Berlin Kotlin MeetupKotlin decoration - February Berlin Kotlin Meetup
Kotlin decoration - February Berlin Kotlin Meetup
 
library(sparkline)
library(sparkline)library(sparkline)
library(sparkline)
 
Android architecture components
Android architecture componentsAndroid architecture components
Android architecture components
 
Moar tools for asynchrony!
Moar tools for asynchrony!Moar tools for asynchrony!
Moar tools for asynchrony!
 

Similar to Visdjango presentation django_boston_oct_2014

D3.js capita selecta
D3.js capita selectaD3.js capita selecta
D3.js capita selecta
Joris Klerkx
 
Web app and more
Web app and moreWeb app and more
Web app and more
faming su
 
MPhil Lecture of Data Vis for Presentation
MPhil Lecture of Data Vis for PresentationMPhil Lecture of Data Vis for Presentation
MPhil Lecture of Data Vis for Presentation
Shawn Day
 

Similar to Visdjango presentation django_boston_oct_2014 (20)

D3.js capita selecta
D3.js capita selectaD3.js capita selecta
D3.js capita selecta
 
Introduction to D3.js
Introduction to D3.jsIntroduction to D3.js
Introduction to D3.js
 
D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)
D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)
D3.JS Tips & Tricks (export to svg, crossfilter, maps etc.)
 
"Визуализация данных с помощью d3.js", Михаил Дунаев, MoscowJS 19
"Визуализация данных с помощью d3.js", Михаил Дунаев, MoscowJS 19"Визуализация данных с помощью d3.js", Михаил Дунаев, MoscowJS 19
"Визуализация данных с помощью d3.js", Михаил Дунаев, MoscowJS 19
 
3d web
3d web3d web
3d web
 
The Server Side of Responsive Web Design
The Server Side of Responsive Web DesignThe Server Side of Responsive Web Design
The Server Side of Responsive Web Design
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and more
 
Web app and more
Web app and moreWeb app and more
Web app and more
 
Svcc 2013-css3-and-mobile
Svcc 2013-css3-and-mobileSvcc 2013-css3-and-mobile
Svcc 2013-css3-and-mobile
 
MPhil Lecture of Data Vis for Presentation
MPhil Lecture of Data Vis for PresentationMPhil Lecture of Data Vis for Presentation
MPhil Lecture of Data Vis for Presentation
 
HTML5 Intro
HTML5 IntroHTML5 Intro
HTML5 Intro
 
Yeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web appsYeoman AngularJS and D3 - A solid stack for web apps
Yeoman AngularJS and D3 - A solid stack for web apps
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
 
Get Ahead with HTML5 on Moible
Get Ahead with HTML5 on MoibleGet Ahead with HTML5 on Moible
Get Ahead with HTML5 on Moible
 
Utahjs D3
Utahjs D3Utahjs D3
Utahjs D3
 
RESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web DesignRESS: An Evolution of Responsive Web Design
RESS: An Evolution of Responsive Web Design
 
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
Progressive Enhancement 2.0 (jQuery Conference SF Bay Area 2011)
 
D3.js and SVG
D3.js and SVGD3.js and SVG
D3.js and SVG
 
Streaming of SVG animations on the Web
Streaming of SVG animations on the WebStreaming of SVG animations on the Web
Streaming of SVG animations on the Web
 
Grails for hipsters
Grails for hipstersGrails for hipsters
Grails for hipsters
 

Recently uploaded

Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 

Recently uploaded (20)

Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 

Visdjango presentation django_boston_oct_2014

  • 1. D3.js meets Django Visualizing Data in Your Web Application
  • 2. About me: Name: John Baldwin Occupation: Software developer Professional background TL;DR – Go here: http://www.linkedin.com/in/baldwinsplace/ Email: jlbaldwin@gmail.com Twitter: @john_baldwin
  • 3. What is D3.js? “D3.js is a JavaScript library for manipulating documents base on data.” - D3.js home page (http://d3js.org/ )  Created in 2011  D3 = “Data-Driven Documents”  This refers to the W3C Document Object Model  Visualization is constructing a DOM from Data  Rich ecosystem, very active community
  • 4. Selection of D3.js Examples  Epicyclic Gearing  http://bl.ocks.org/mbostock/1353700  Parallel Sets – Titanic Survivors  http://www.jasondavies.com/parallel-sets/  World Tour  http://bl.ocks.org/mbostock/4183330  Front Row to Fashion Week  http://www.nytimes.com/newsgraphics/2013/09/13/fashion-week-editors-picks/  Collapsible Tree  http://bl.ocks.org/mbostock/4339083  Force Directed Graph  http://bl.ocks.org/mbostock/4062045  Bright Point examples  http://www.brightpointinc.com/project-list/
  • 5. D3 Ecosystem at a Glance  API Reference:  https://github.com/mbostock/d3/wiki  Tutorials collection  https://github.com/mbostock/d3/wiki/Tutorials  Three recommended starting points  Code Academy - Interactive website tutorial  http://www.codecademy.com/courses/web-beginner-en-kcP9b/0/1  DashingD3js – Extensive flow from basic concepts to more advanced steps  Provides a great reference to keep on hand as you develop your first D3 visualizations  https://www.dashingd3js.com/  Free online book: Interactive Data Visualization for the Web  http://chimera.labs.oreilly.com/books/1230000000345  Lots of examples on the web  http://techslides.com/over-2000-d3-js-examples-and-demos/
  • 6. The D3.js “Tech Stack” D3.js SVG HTML JavaScript CSS Data (JSON, XML, et al)
  • 7. The Keys to Understanding D3 Mechanics SVG Selection Transition Data binding Image source: https://www.flickr.com/photos/practicalowl/256628505/
  • 8. SVG=Scalable Vector Graphics  It is a markup language for describing two-dimensional graphics  It supports interaction and animation  It is a W3C open standard  http://www.w3.org/Graphics/SVG/  Supported by major modern web browsers  http://caniuse.com/#feat=svg  But the spec is extensive  http://www.w3.org/TR/SVG11/  It doesn’t need Flash!
  • 9. What can SVG do? Render basic shapes  Rectangle  Circle  Ellipse  Line  Polyline  Polygon Advanced shape functionality  path, fills, gradients, patterns Text Animation And much, MUCH More!!! Ref: http://www.w3.org/TR/SVG11/ Image credits: Saturday Night Live, NBC Studios
  • 11. SVG ‘g’ Element  Groups together related SVG elements (‘g’)  Allows you to  Inherit styles  Transform as a group  Translate  Scale  Rotate  Skew  See  http://www.w3.org/TR/SVG/struct.html#GElement  http://www.w3.org/TR/SVG/coords.html
  • 12. So Why D3? OK, SVG is great! So why do we need D3? Answer: Same reason we use jQuery
  • 13. D3 Fundamentals Selection, Transition, and Data Binding  Demo with our sample app…
  • 14. Visdjango Django project to demonstrate visualizations Apps  Intro – Introduces core concepts D3 – Specific chart examples NVD3 – Examples using a D3 framework Project source code  https://github.com/johnbaldwin/visdjango
  • 15. JSON Data via AJAX  Set your request url in your app urls.py url(r’^mychart-data/', views.mychart_data),  Create your view method in your app views.py def mychart_data(request): response_data = { # Build your data in a dict/list } return HttpResponse(json.dumps(response_data), content_type = 'application/json')  Show the D3 parts in your JavaScript d3.json("/app/mychart-data/", type, function(error, data) { // code block }  It really is that simple  Unless you are doing cross site XHR requests
  • 16. NVD3  NVD3 is a JavaScript library to provide reusable charts  Home page: http://nvd3.org/  Built on D3.js  There is a Django package for NVD3  https://github.com/areski/django-nvd3  Under active development  Here are the chart types available now:  http://nvd3.org/examples/  Other frameworks (I haven’t tried yet)  Cubism.js  Dimple  Ref: https://en.wikipedia.org/wiki/D3.js#Related_Tools_and_Libraries
  • 17. More D3 topics  Mike Bostock’s workshop slides  http://bost.ocks.org/mike/d3/workshop/#0  Thinking with Joins  http://bost.ocks.org/mike/join/  Layouts  https://github.com/mbostock/d3/wiki/Layouts  Queues  https://github.com/mbostock/queue  Geographic maps  https://github.com/mbostock/topojson  Visualizing algorithms  http://bost.ocks.org/mike/algorithms/
  • 18. Takeaways – D3  D3  I’ve only scratched the surface of what is possible with D3  D3 is broad and somewhat deep  Lots of examples, play with them  Start out small  Get to know how to use SVG. This will help you debug  Remember, D3 stands for Data Driven Documents  Learn and use its data binding capability  D3 doesn’t get in your way  Data Tip  If you are working with a lot of data:  Break your data down into chunks and use queue to “stream” the data into your page
  • 19. Takeaways - JavaScript  Link to trusted remote resource  Such as a CDN  Note: Referrer link is tracked in the request header  Allow linking to local assets in development mode  Code offline