SlideShare une entreprise Scribd logo
1  sur  55
The D3 Toolbox
Morphing and projecting visual data

                      Mark Rickerby
Data
Set of items from which
information and knowledge
are derived
Visualisation
Communicates the internal
structure and relationships
within data
Visualisation
Amplifies knowledge
and cognition
D3.js
 d3js.org
Data-Driven Documents
Created by Mike Bostock
Stanford Vis Group, New York Times
Data-Driven Documents
Mapping data to elements in
a document
Data-Driven Documents
§ HTML
§ CSS
§ DOM
§ JavaScript
§ SVG
D3 API
• Selecting elements
• Joining data to selections
• Transforming selections
• Group selections in layouts
Selections
Target an array of elements
in the current document
using CSS3
Selections
// single element
d3.select(node)
d3.select(selector)

// array of elements
d3.selectAll(nodes)
d3.selectAll(selector)
Selections
viz = d3.select("#viz svg")
        .attr("width", w)
        .attr("height", h);

viz.selectAll("circle")
   .attr("x", x)
   .attr("y", y);
API Style
Method chaining pattern
Data
Join values in a dataset to
elements in a selection
Data
// joining data
selection.data(dataset);
Data
// datasets must be arrays
var dataset1 = [1, 2, 3];
var dataset2 = [
   { x: 1, y: 1 },
   { x: 2, y: 2 },
   { x: 3, y: 4 }
];
Data Selections
selection.data()  returns the
selection of elements joined
to the give data values
Data Selections
What happens when there
are no existing elements for
the data values to join?
Update Selections
selection.data()




   Data            Elements
Enter & Exit Selections
Create new elements for
incoming data and remove
outgoing elements when data
selection changes
Enter Selections
selection.data().enter()
where there are fewer
existing elements than
incoming data values
Enter Selections
selection.data().enter()




   Data         Elements
Exit Selections
selection.data().exit()
where there are more
existing elements than
current data values
Exit Selections
selection.data().exit()




   Data         Elements
D3 philosophy
Emphasis on transforming
documents, not visual
representations
Transitions
Selections where the
operations apply smoothly
over time
Transitions
Apply attribute changes
across elements in a
selection
Transitions
// animate a style change
d3.select("#a").transition()
    .style("color", value);
Interpolators
Simplify transforming
attributes for various data
types
Interpolators
§ Numbers
§ Strings
§ Colors
§ Arrays and Objects
§ Affine transforms
Layouts
Organise data for specific
types of visualisation
Layouts
§ Bundle      § Pack
§ Chord       § Partition
§ Cluster     § Pie
§ Force       § Stack
§ Hierarchy   § Tree
§ Histogram   § Treemap
D3 philosophy
Representational transparency
D3 philosophy
Not a charting library
Computing Data
var languages = [
   {"key":"PHP","projects":4283},
   {"key":"Ruby","projects":9162},
   {"key":"Python","projects":3102}
];

var pie = d3.layout.pie()
            .value(function(d){
                  return d.projects;
              });
selection.data(pie(languages));
API Style
Constructors return functions
Scales
Mapping from data to
attributes (data-space to
visual-space)
Scales
Domain —› Range
Scales
§ Linear        § Threshold
§ Square Root   § Quantile
§ Exponential   § Identity
§ Logarithmic   § Ordinal
§ Quantize
Ordinal Scales
Often used to assign colours
Ordinal Scales
var colors = ["#98abc5",
      "#8a89a6", "#7b6888"];

// create a color function
var col = d3.scale.ordinal()
            .range(colors);
Geography
Display geographic shapes
and project location values
to pixel coordinates
Projections
§ Mercator
§ Albers
§ Azimuthal
Choropleth Map
d3.geo.path + d3.scale.quantize:
Sunburst Chart
d3.layout.partition + d3.svg.arc:
Streamgraph
d3.layout.stack + d3.scale.linear:
Composition
D3 visualisations are
composed from atomic
functions and chained
operations
Representation
Operating directly on data
and the DOM is more
complex, but also more
flexible and powerful than
traditional tools
Learn
§ Functional programming
§ Statistics and algebra
§ Information design
Programming as play
The best results with D3
come from trial and error,
experimentation, and
constant visual tweaking
Documentation
https://github.com/mbostock/d3/wiki


The D3 API documentation is
amazingly detailed
Exploration
http://bl.ocks.org/

Converts GitHub Gists into
interactive demos
Exploration
http://enjalot.com/

An experimental
environment for prototyping
visualisations
Thanks
@maetl
mark.rickerby@bigcommerce.com

Contenu connexe

Tendances

Datapreprocessingppt
DatapreprocessingpptDatapreprocessingppt
DatapreprocessingpptShree Hari
 
Data Preprocessing || Data Mining
Data Preprocessing || Data MiningData Preprocessing || Data Mining
Data Preprocessing || Data MiningIffat Firozy
 
Data preprocessing
Data preprocessingData preprocessing
Data preprocessingHarry Potter
 
Data preprocessing
Data preprocessingData preprocessing
Data preprocessingAmuthamca
 
Bringing Data to Life with MongoDB Charts
Bringing Data to Life with MongoDB ChartsBringing Data to Life with MongoDB Charts
Bringing Data to Life with MongoDB ChartsMongoDB
 
1.6.data preprocessing
1.6.data preprocessing1.6.data preprocessing
1.6.data preprocessingKrish_ver2
 
Data preprocessing
Data preprocessingData preprocessing
Data preprocessingSlideshare
 
Data preprocessing using Machine Learning
Data  preprocessing using Machine Learning Data  preprocessing using Machine Learning
Data preprocessing using Machine Learning Gopal Sakarkar
 
Statistics and Data Mining
Statistics and  Data MiningStatistics and  Data Mining
Statistics and Data MiningR A Akerkar
 
Data preprocessing
Data preprocessingData preprocessing
Data preprocessingHarry Potter
 

Tendances (15)

Data1
Data1Data1
Data1
 
Datapreprocessingppt
DatapreprocessingpptDatapreprocessingppt
Datapreprocessingppt
 
Data Preprocessing || Data Mining
Data Preprocessing || Data MiningData Preprocessing || Data Mining
Data Preprocessing || Data Mining
 
Data preprocessing ng
Data preprocessing   ngData preprocessing   ng
Data preprocessing ng
 
Data preprocessing
Data preprocessingData preprocessing
Data preprocessing
 
Data preprocessing
Data preprocessingData preprocessing
Data preprocessing
 
4 preprocess
4 preprocess4 preprocess
4 preprocess
 
Bringing Data to Life with MongoDB Charts
Bringing Data to Life with MongoDB ChartsBringing Data to Life with MongoDB Charts
Bringing Data to Life with MongoDB Charts
 
Viewpic
ViewpicViewpic
Viewpic
 
Data PreProcessing
Data PreProcessingData PreProcessing
Data PreProcessing
 
1.6.data preprocessing
1.6.data preprocessing1.6.data preprocessing
1.6.data preprocessing
 
Data preprocessing
Data preprocessingData preprocessing
Data preprocessing
 
Data preprocessing using Machine Learning
Data  preprocessing using Machine Learning Data  preprocessing using Machine Learning
Data preprocessing using Machine Learning
 
Statistics and Data Mining
Statistics and  Data MiningStatistics and  Data Mining
Statistics and Data Mining
 
Data preprocessing
Data preprocessingData preprocessing
Data preprocessing
 

Similaire à The D3 Toolbox: Morphing and projecting visual data

Advanced D3 Charting
Advanced D3 ChartingAdvanced D3 Charting
Advanced D3 Chartingdcryan
 
Dreamforce 2014 - Introduction to d3.js
Dreamforce 2014 - Introduction to d3.jsDreamforce 2014 - Introduction to d3.js
Dreamforce 2014 - Introduction to d3.jsramanathanp82
 
Data Visualizations with D3
Data Visualizations with D3Data Visualizations with D3
Data Visualizations with D3Doug Domeny
 
"Визуализация данных с помощью d3.js", Михаил Дунаев, MoscowJS 19
"Визуализация данных с помощью d3.js", Михаил Дунаев, MoscowJS 19"Визуализация данных с помощью d3.js", Михаил Дунаев, MoscowJS 19
"Визуализация данных с помощью d3.js", Михаил Дунаев, MoscowJS 19MoscowJS
 
D3.js 30-minute intro
D3.js   30-minute introD3.js   30-minute intro
D3.js 30-minute introFelipe
 
Structuring Spark: DataFrames, Datasets, and Streaming
Structuring Spark: DataFrames, Datasets, and StreamingStructuring Spark: DataFrames, Datasets, and Streaming
Structuring Spark: DataFrames, Datasets, and StreamingDatabricks
 
D3 meetup (Backbone and D3)
D3 meetup (Backbone and D3)D3 meetup (Backbone and D3)
D3 meetup (Backbone and D3)Alpine Data
 
Visualization of Big Data in Web Apps
Visualization of Big Data in Web AppsVisualization of Big Data in Web Apps
Visualization of Big Data in Web AppsEPAM
 
D3 Mapping Visualization
D3 Mapping VisualizationD3 Mapping Visualization
D3 Mapping VisualizationSudhir Chowbina
 
Structuring Apache Spark 2.0: SQL, DataFrames, Datasets And Streaming - by Mi...
Structuring Apache Spark 2.0: SQL, DataFrames, Datasets And Streaming - by Mi...Structuring Apache Spark 2.0: SQL, DataFrames, Datasets And Streaming - by Mi...
Structuring Apache Spark 2.0: SQL, DataFrames, Datasets And Streaming - by Mi...Databricks
 
D3 data visualization
D3 data visualizationD3 data visualization
D3 data visualizationVinod Wilson
 
Structuring Spark: DataFrames, Datasets, and Streaming by Michael Armbrust
Structuring Spark: DataFrames, Datasets, and Streaming by Michael ArmbrustStructuring Spark: DataFrames, Datasets, and Streaming by Michael Armbrust
Structuring Spark: DataFrames, Datasets, and Streaming by Michael ArmbrustSpark Summit
 
GraphX: Graph Analytics in Apache Spark (AMPCamp 5, 2014-11-20)
GraphX: Graph Analytics in Apache Spark (AMPCamp 5, 2014-11-20)GraphX: Graph Analytics in Apache Spark (AMPCamp 5, 2014-11-20)
GraphX: Graph Analytics in Apache Spark (AMPCamp 5, 2014-11-20)Ankur Dave
 
Learn D3.js in 90 minutes
Learn D3.js in 90 minutesLearn D3.js in 90 minutes
Learn D3.js in 90 minutesJos Dirksen
 
managing big data
managing big datamanaging big data
managing big dataSuveeksha
 

Similaire à The D3 Toolbox: Morphing and projecting visual data (20)

Advanced D3 Charting
Advanced D3 ChartingAdvanced D3 Charting
Advanced D3 Charting
 
Introduction to D3.js
Introduction to D3.jsIntroduction to D3.js
Introduction to D3.js
 
Dreamforce 2014 - Introduction to d3.js
Dreamforce 2014 - Introduction to d3.jsDreamforce 2014 - Introduction to d3.js
Dreamforce 2014 - Introduction to d3.js
 
D3 data visualization
D3 data visualizationD3 data visualization
D3 data visualization
 
D3
D3D3
D3
 
Introduction to D3
Introduction to D3 Introduction to D3
Introduction to D3
 
Data Visualizations with D3
Data Visualizations with D3Data Visualizations with D3
Data Visualizations with D3
 
"Визуализация данных с помощью d3.js", Михаил Дунаев, MoscowJS 19
"Визуализация данных с помощью d3.js", Михаил Дунаев, MoscowJS 19"Визуализация данных с помощью d3.js", Михаил Дунаев, MoscowJS 19
"Визуализация данных с помощью d3.js", Михаил Дунаев, MoscowJS 19
 
D3.js 30-minute intro
D3.js   30-minute introD3.js   30-minute intro
D3.js 30-minute intro
 
Structuring Spark: DataFrames, Datasets, and Streaming
Structuring Spark: DataFrames, Datasets, and StreamingStructuring Spark: DataFrames, Datasets, and Streaming
Structuring Spark: DataFrames, Datasets, and Streaming
 
D3 meetup (Backbone and D3)
D3 meetup (Backbone and D3)D3 meetup (Backbone and D3)
D3 meetup (Backbone and D3)
 
Visualization of Big Data in Web Apps
Visualization of Big Data in Web AppsVisualization of Big Data in Web Apps
Visualization of Big Data in Web Apps
 
D3 Mapping Visualization
D3 Mapping VisualizationD3 Mapping Visualization
D3 Mapping Visualization
 
Structuring Apache Spark 2.0: SQL, DataFrames, Datasets And Streaming - by Mi...
Structuring Apache Spark 2.0: SQL, DataFrames, Datasets And Streaming - by Mi...Structuring Apache Spark 2.0: SQL, DataFrames, Datasets And Streaming - by Mi...
Structuring Apache Spark 2.0: SQL, DataFrames, Datasets And Streaming - by Mi...
 
D3 data visualization
D3 data visualizationD3 data visualization
D3 data visualization
 
SVGD3Angular2React
SVGD3Angular2ReactSVGD3Angular2React
SVGD3Angular2React
 
Structuring Spark: DataFrames, Datasets, and Streaming by Michael Armbrust
Structuring Spark: DataFrames, Datasets, and Streaming by Michael ArmbrustStructuring Spark: DataFrames, Datasets, and Streaming by Michael Armbrust
Structuring Spark: DataFrames, Datasets, and Streaming by Michael Armbrust
 
GraphX: Graph Analytics in Apache Spark (AMPCamp 5, 2014-11-20)
GraphX: Graph Analytics in Apache Spark (AMPCamp 5, 2014-11-20)GraphX: Graph Analytics in Apache Spark (AMPCamp 5, 2014-11-20)
GraphX: Graph Analytics in Apache Spark (AMPCamp 5, 2014-11-20)
 
Learn D3.js in 90 minutes
Learn D3.js in 90 minutesLearn D3.js in 90 minutes
Learn D3.js in 90 minutes
 
managing big data
managing big datamanaging big data
managing big data
 

Plus de Mark Rickerby

Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven DevelopmentMark Rickerby
 
Readme Driven Development
Readme Driven DevelopmentReadme Driven Development
Readme Driven DevelopmentMark Rickerby
 
Relentless Refactoring
Relentless RefactoringRelentless Refactoring
Relentless RefactoringMark Rickerby
 
Evolving Software Patterns
Evolving Software PatternsEvolving Software Patterns
Evolving Software PatternsMark Rickerby
 
Understanding Uncertainty
Understanding UncertaintyUnderstanding Uncertainty
Understanding UncertaintyMark Rickerby
 
Getting to Grips with SilverStripe Testing
Getting to Grips with SilverStripe TestingGetting to Grips with SilverStripe Testing
Getting to Grips with SilverStripe TestingMark Rickerby
 
The Relativity of Rates
The Relativity of RatesThe Relativity of Rates
The Relativity of RatesMark Rickerby
 
Adaptive Design & Rapid Prototyping
Adaptive Design & Rapid PrototypingAdaptive Design & Rapid Prototyping
Adaptive Design & Rapid PrototypingMark Rickerby
 

Plus de Mark Rickerby (10)

Behaviour Driven Development
Behaviour Driven DevelopmentBehaviour Driven Development
Behaviour Driven Development
 
Readme Driven Development
Readme Driven DevelopmentReadme Driven Development
Readme Driven Development
 
Relentless Refactoring
Relentless RefactoringRelentless Refactoring
Relentless Refactoring
 
Evolving Software Patterns
Evolving Software PatternsEvolving Software Patterns
Evolving Software Patterns
 
NetArt History
NetArt HistoryNetArt History
NetArt History
 
Understanding Uncertainty
Understanding UncertaintyUnderstanding Uncertainty
Understanding Uncertainty
 
Getting to Grips with SilverStripe Testing
Getting to Grips with SilverStripe TestingGetting to Grips with SilverStripe Testing
Getting to Grips with SilverStripe Testing
 
Historiographica
HistoriographicaHistoriographica
Historiographica
 
The Relativity of Rates
The Relativity of RatesThe Relativity of Rates
The Relativity of Rates
 
Adaptive Design & Rapid Prototyping
Adaptive Design & Rapid PrototypingAdaptive Design & Rapid Prototyping
Adaptive Design & Rapid Prototyping
 

The D3 Toolbox: Morphing and projecting visual data