Download - Visualizzare i dati con D3js

Transcript
Page 1: Visualizzare i dati con D3js

VisualizzareidaticonD3jsAlessioCimarelli( )@jenkin27

www.dataninja.it

Bari,23novembre2013

Page 2: Visualizzare i dati con D3js

DatiUndato(dallatinodatumchesignificaletteralmentefatto)èunadescrizioneelementare,

spessocodificata,diunacosa,diunatransazione,diunavvenimento.

L'elaborazionedeidatipuòportareallaconoscenzadiun'informazione.

Ognitipodidatodipendedalcodiceedalformatoimpiegati.

Idatipossonopresentarsisottodiverseforme(Wikipediadixit)

Sonoentitàmisurabiliconunsignificatorelativoalcontestoincuisipresentanoovengonoraccontate.

Percomprenderliemanipolarliènecessariorappresentarli!

Page 3: Visualizzare i dati con D3js

Rappresentareidati

Numeriecollezionidinumeri

Unitàdimisura

Relazioni

Logicaformale,matematica,statistica...

Page 4: Visualizzare i dati con D3js

Immagini

Aristotele,Metafisica,Incipit(IVsecoloa.C.)

Tuttigliuominitendonopernaturaalsapere.Losegnalaillorol'amoreperlesensazioni,amatepersestesse,

indipendentementedall'utilità,preferitatratuttelavista,nonsoloinvista

dell'azione,maanchesenzaintenzionepratica.Ilmotivoèche,mostrandolamolteplicitàdelledifferenze,lavistafaacquisirepiùdellealtresensazioni

[nuove]conoscenze.

Page 5: Visualizzare i dati con D3js

Elementigrafici

Page 6: Visualizzare i dati con D3js

GraficaegeometriaSpessoredelbordoColoredelbordoColoredelriempimentoTrasparenzaPosizionedelcentroLunghezzadelraggio(lunghezzadegliassi)(angolodirotazione)

Ognielementograficoèunivocamentedefinitodauncertonumerodiparametri

Page 7: Visualizzare i dati con D3js

Arte...?

Page 8: Visualizzare i dati con D3js

Visualizzareidati

Datiinunamano,immagininell'altra

Datirappresentatidanumeri,parametrigraficimisuraticonnumeri

Lachiavestanelconnettereopportunamenteidatiaiparametrideglielementidavisualizzare

Page 9: Visualizzare i dati con D3js

Data-DrivenDocuments

HTML&SVG+

CSS+

Javascript

Generareemanipolarepaginewebinbaseaundataset,definendolaconnessionetradatie

attributideglielementiXML

Page 10: Visualizzare i dati con D3js

D3.jsD3.jsisaJavaScriptlibraryfor

manipulatingdocumentsbasedondata.D3helpsyoubringdatatolifeusing

HTML,SVGandCSS.D3’semphasisonwebstandardsgivesyouthefull

capabilitiesofmodernbrowserswithouttyingyourselftoaproprietaryframework,

combiningpowerfulvisualizationcomponentsandadata-drivenapproach

toDOMmanipulation.

Page 11: Visualizzare i dati con D3js

DalPh.D.alNewYorkTimes

,insiemealProf.JeffHeereaVadimOgievetsky,unaltrostudente,pubblicala

libreriaProtoVispervisualizzazioniinterattiveduranteilsuocorsodidottorato(2009).

MikeBostocks

Nel2011itrereimplementanotuttoenasceD3:propostainun ,èarrivataoggialla ,da

sempreopen-source.papersuunIEEE versione3.3.10

Dall'ambienteaccademico,Mikeentranegliufficidellagrandeeditoriainternazionale.

Page 12: Visualizzare i dati con D3js

SelezionareeassociareIlselettorisonoquelliCSS,elementieattributisonoquelli

HTMLeSVGcosìcomedefinitidalW3C.

d3.selectAll("p").style("font-size","12px");

d3.selectAll("p").style("font-size",function(){return(Math.random()*12)+"px";});

d3.selectAll("p").data([4,8,12,16,24,36]).style("font-size",function(d){returnd+"px";});

Page 13: Visualizzare i dati con D3js

Creare,aggiornare,distruggereIlcuoredellalibreriastanellacapacitàdiassociareinostridati(tipicamentearray)aelementidelDOMpermettendodiaccedereaquellimodificati,aquellinonancoraesistenti,a

quellinonpiùutili.

varp=d3.select("body").selectAll("p").data([4,8,12,16,24,36]).enter().append("p").style("font-size",function(d){returnd+"px";}).text(function(d){return"Sonogrande"+d+"px";});

p.data([36,24,16,12,8,4]).style("font-size",function(d){returnd+"px";});

p.data([16,12,8]).exit().remove();

Page 14: Visualizzare i dati con D3js

AssociazioneperchiaveIlmetododata()associaidatiaglielementidelDOM.Può

farloperindice,maancheperchiave.

varsizes=[{id:"a",size:12},{id:"b",size:16},{id:"c",size:24}];

varp=d3.select("body").selectAll("p").data(sizes).enter().append("p").style("font-size",function(d){returnd.size+"px";}).text(function(d){return"Sono"+d.id+"esonogrande"+d.size+"px";});

Page 15: Visualizzare i dati con D3js

Associazioneperchiave(2)Ilmetododata()associaidatiaglielementidelDOM.Può

farloperindice,maancheperchiave.varnewSizes=[{id:"b",size:6},//era{id:"a",size:6},{id:"c",size:8},//era{id:"b",size:8},{id:"d",size:12}//era{id:"c",size:12}];p.data(newSizes,function(d){returnd.id;}).style("font-size",function(d){returnd.size+"px";}).text(function(d){return"Sonosempre"+d.id+",maorasonogrande"+d.size+"px";});p.enter().append("p").style("font-size",function(d){returnd.size+"px";}).text(function(d){return"Sono"+d.id+"esonogrande"+d.size+"px";});p.exit().remove();

Page 16: Visualizzare i dati con D3js

NullaèistantaneoLalibreriaèingradodiinterpolareivaloridellamaggior

partedegliattributinumericidefinitinell'HTMLesoprattuttonell'SVG.

varp=d3.select("body").selectAll("p").data([4,8,12,16,24,36]).enter().append("p").style("font-size","0px").text(function(d){return"Sonogrande"+d+"px";});

p.transition().duration(750).delay(function(d,i){returni*10;}).style("font-size",function(d){returnd+"px";});

Page 17: Visualizzare i dati con D3js

IlmondoèfattoascaleNonbastaassociareunaseriedidatiaspecificielementidel

DOMemodificarnedirettamentegliattributi.

Ildominiodeinostridatipotrebbenonesseredirettamentecompatibileconl'intervalloincuisonodefinitiivaloridegli

attributi.

Es.Hoglistipendideiministriecivogliofareungraficoabarre"ministro->stipendioin

euro".Sel'altezzadellebarreèugualeallostipendioinpixel,mibucanoilsoffitto!

Hobisognodifunzionidiscala

Page 18: Visualizzare i dati con D3js

Ilmondoèfattoascale(2)Idatipossonoaveredominicontinui(numerireali)odiscreti

(categorie).

GliattributideglielementiHTMLoSVGsonosemprediscreti(pixel!)ehannounintervallolimitato(risoluzione

delloschermo,codiciesadecimali,ecc.).

Neancheadirlo,D3hamoltimetodiperdefiniretrasformazioniopportunedeidati,siachesitrattididominicontinui(scalelineari,apotenza,logaritmiche,quantizzate,

temporali)odidominidiscreti.

Page 19: Visualizzare i dati con D3js

Metodidibase

UnavoltaselezionatiglielementidelDOM,lalibreriaoffremetodipercrearli/distruggerli,riordinarli,modificare/

animareiloroattributi,associarvieventi,applicarvifunzioni.

Tuttoruotaattornoad3.selectAll([selettore]).

Eilchainingfornisceun'interfacciasempliceepulita!

Page 20: Visualizzare i dati con D3js

Metodidibase(2)

D3nonèunalibreriaperlamanipolazionedidataset,maincludeunaseriecompletadimetodiutilipergestiree

manipolaregliarray.

Hatuttociòcheserveperrecuperaredatidasorgentiremote:XMLHttpRequestrulez!

Èingradodieffettuareilparsingdeipiùcomuniformatiperloscambiodidati:csv,tsvevolendo*sv(oltrealjsone

formatibasatisudiesso,ovviamente).

Page 21: Visualizzare i dati con D3js

Metodidibase(3)L'accoppiataHTML5+CSS3ègraficamentemoltopotente,manonpuòessereversatilequantoun'applicazioneXML

dedicataallagraficavettoriale.

D3nasceconilpienosupportoallespecifichedell'SVGeconmoltimetodiperlagenerazioneelamanipolazionedioggetticomelinee,archi,curvediBézier,simboli,ecc.

Page 22: Visualizzare i dati con D3js

LayoutsIlcuoredellalibreriaagisceaunlivellomoltobasso:dati,

elementi,attributi.

Macisonovisualizzazionicherichiedonospecifichemanipolazionideidatiecalcoliperladeterminazionedell'aspettograficodeivarielementi(torte,barre

raggruppate,grafi,alberi,clustering,gerarchie,ecc.).

Lacomponented3.layouts()hametodicheimplementanonumerosialgoritmiutili.

Page 23: Visualizzare i dati con D3js

Geo

Dallaversione3.0lapartedimanipolazionedidatigeograficisièsviluppataenormemente.

Ilmetodod3.geo()permettedilavorareconleproiezioni,visualizzareemanipolareelementiespressiincoordinategeografiche,applicaretrasformazioniallegeometrie.

Ok,chiedovenia,questarobachiedetelaa !napo

Page 24: Visualizzare i dati con D3js

Plugins

Comeognilibreriajavascriptchesirispetti,ancheD3puòesserearricchitadaplugindedicati.

Quelliufficialisonositrovanonelrepository.https://github.com/d3/d3-plugins

Manonsonomoltiesonopococommentati...:(

Page 25: Visualizzare i dati con D3js

BasatosuD3Lalibreriaharaggiuntountalesuccessochecomincianoa

spuntaremoltiprogettiD3-based.

-Grandidatasetedashboardcomposite-Graficiriutilizzabili-Frameworkpercostruiregraficiriutilizzabili-Toolkitgraficoperjavascript-Datavizin3dimensioni!-Graficiinterattiviin4passi

-Vizcomplesseperdesigner-MioportingsuframeworkEnyo.js(appena

cominciato...)

DC.jsNVD3.jsd3.chartRickshawD3+Three.jsDatawrapperRawd3js4enyo

Page 26: Visualizzare i dati con D3js

Bastano~2000esempi?

http://christopheviau.com/d3list/gallery.html

Senzadimenticareil ela ...sitoufficiale documentazione

Page 27: Visualizzare i dati con D3js

Eoraavoi!

https://drive.google.com/folderview?id=0B6j_-GzOiSPsR2RPc0ZxNlZLd0U&usp=sharing

PergiocareconD3bastauneditorditesto( )eunbrowser( ).Oppure ...

notepad++chrome jsFiddle