63
CS50 for MBAs Maria Zlatkova [email protected]

CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

  • Upload
    others

  • View
    18

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

CS50forMBAsMariaZlatkova

[email protected]

Page 2: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

DataVisualizationwithD3

Page 3: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

DataVisualizationwithD3

• PresentationslidesuseexamplesfromInteractiveDataVisualizationfortheWebbyScottMurray• AdditionalexamplesusesourcecodeadaptedfromHarvard’sCS171

Page 4: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

WhyDataVisualization?

• Mapping informationtovisualsbycreatingrulesthatinterpretdataandexpressitsvaluesasvisualproperties

Page 5: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Whycode?

• Thealternativetocomputationisslowandtedious,yetwewanttoworkwithlargedatasetsofthousandsormillionsofvalues;whatwouldhavetakenyearsofeffortbyhandcanbemappedinamoment• Wecaneasilyexperimentwith alternatemappings,tweakingourrulesandseeingtheiroutputre-renderedimmediately.Thisloopofwrite/render/evaluateiscriticaltotheiterativeprocessofrefiningadesign• Setsofmappingrulesfunctionas designsystems

Page 6: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Whyinteractive?

• Staticvisualizationscanofferonlyprecomposed “views”ofdata• Thenumberofdimensionsofdataarelimited• Dynamic,interactivevisualizationscanempowerpeopletoexplorethedataforthemselves• Theymakethedataaccessibletodifferentaudiences,fromthosewhoaremerelybrowsingorexploringthedatasettothosewhoapproachthevisualizationwithaspecificquestioninsearchofananswer• Theyencourageengagementwiththedata

Page 7: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

D3

• D3(D3 ord3.js)—isaJavaScriptlibraryforcreatingdatavisualizations• Data-DrivenDocuments• The data isprovided,the documents areweb-based,andD3doesthe driving,inconnectingthedatatothedocuments

• d3js.org

Page 8: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

WhatdoesD3do?

• Allowsustogenerateandmanipulatewebdocumentsby:• Loading dataintothebrowser’smemory• Binding datatoelementswithinthedocument,creatingnewelementsasneeded• Transforming thoseelementsbyinterpretingeachelement’sbounddatumandsettingitsvisualpropertiesaccordingly• Transitioning elementsbetweenstatesinresponsetouserinput

• LearningD3=learningthesyntaxtellithowyouwantittoloadandbinddata,andtransformandtransitionelements

Page 9: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

WhatdoesD3do?

• The transformation stepismostimportant;it’swherethemapping happens• D3providesastructureforapplyingthesetransformations,butdevelopersdefinethemappingrules

Page 10: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Alternatives

• D3mightnotbeperfectforeveryproject– youmightjustneedaquickchartanddon’thavetimetocodeitfromscratchoryoumightneedtosupportolderbrowsers&can’trelyonnewertechnologieslikeSVG

Page 11: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Alternatives

EasyCharts• DataWrapper• Flot• ImageChartsAPI• gRaphaël• HighchartsJS• JavaScriptInfoVisToolkit• jqPlot• jQuerySparklines• Peity• Timeline.js• YUI

GraphVisualizations• Arbor.js• Sigma.js

Geomapping• Kartograph• Leaflet• ModestMaps• Polymaps

Three-Dimensional• PhiloGL• Three.js

Page 12: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

SomecoolD3Visualizations

• WhereWeCameFromandWhereWeWent,StatebyState• AttheNationalConventions,theWordsTheyUsed• TheAmerica’sCupFinale:Oracle’sPathtoVictory• Simpson’sParadox• AnInteractiveVisualizationofNYCStreetTrees• FourWaystoSliceObama’s2013BudgetProposal

Page 13: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

JSON(JavaScriptObjectNotation)

• JSONisaspecificsyntaxforstoringandexchangingdata• Populardata-interchangeformatforAPIs(applicationprograminterfaces).ItisessentiallyaJSobject,withtheonlydifferencebeingthatthepropertynamesaresurroundedbydoublequotationmarks

// JSON object var course = {

"id": "CS50", "name": "CS50 for MBAs", "students": 100, "active": true

}

Page 14: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

var course = { id: "CS50", name: "CS50 for MBAs", students: 100, active: true

} course.id; course.students;

var course = { id: ”CS50", TFs: "Maria", "Will", "Christine”, "Daniel", "Christian", "Alex"]

};

var courses = [ {id: "CS50", name: " Introduction to Computer Science " },

{ id: "CS51", name: "Introduction to Computer Science II" }

];

courses[1].id;

Page 15: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

SVGs• ScalableVectorGraphics(SVG)– morereliable,visuallyconsistent,andfaster• IllustratorcangenerateSVGfiles,butgeneratingthemwithcodeismorescalable

<svg width="50" height="50"> <circle cx="25" cy="25" r="22" fill="blue" stroke="gray" stroke-width="2"/>

</svg>

Page 16: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

SVGs

<svg width="500" height="50"> </svg>rect, circle, ellipse, line, text, path

• SVGcoordinatessystem

Page 17: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

SVGs

<rect x="0" y="0" width="500" height="50"/>

Page 18: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

SVGs

<circle cx="250" cy="25" r="25"/>

Page 19: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

SVGs

<ellipse cx="250" cy="25" rx="100" ry="25"/>

Page 20: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

SVGs

<line x1="0" y1="0" x2="500" y2="50" stroke="black"/>

Page 21: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

SVGs

<circle cx="25" cy="25" r="22" fill="yellow" stroke="orange" stroke-width="5"/>

Page 22: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

SVGs

<rect x="0" y="0" width="30" height="30" fill="purple"/>

<rect x="20" y="5" width="30" height="30" fill="blue"/>

<rect x="40" y="10" width="30" height="30" fill="green"/>

<rect x="60" y="15" width="30" height="30" fill="yellow"/>

<rect x="80" y="20" width="30" height="30" fill="red"/>

Page 23: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

SVGs

<circle cx="25" cy="25" r="20" fill="rgba(128, 0, 128, 1.0)"/>

<circle cx="50" cy="25" r="20" fill="rgba(0, 0, 255, 0.75)"/>

<circle cx="75" cy="25" r="20" fill="rgba(0, 255, 0, 0.5)"/>

<circle cx="100" cy="25" r="20" fill="rgba(255, 255, 0, 0.25)"/>

<circle cx="125" cy="25" r="20" fill="rgba(255, 0, 0, 0.1)"/>

Page 24: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

ReferencingD3

project-folder/ d3/

d3.v3.js d3.v3.min.js (optional)

index.html

Page 25: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

ReferencingD3

Page 26: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Settingupawebserver

python -m SimpleHTTPServer 8888 &.

http://localhost:8888/

Page 27: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

ChainingMethods

d3.select("body").append("p").text("New paragraph!");

d3.select("body") .append("p") .text("New paragraph!");

Page 28: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Chainingmethods

• D3• ReferencestheD3object,sowecanaccessitsmethods.OurD3adventurebeginshere.

• .select("body")• CSSselectorasinput,returnsareferencetothefirstelementintheDOMthatmatches• selectAll()

• .append("p")• createswhatevernewDOMelementyouspecifyandappendsittotheend(but justinside)ofwhateverselectionit’sactingon

• handsoffareferencetothenewelementitjustcreated.• .text("Newparagraph!")

• takesastringandinsertsitbetweentheopeningandclosingtagsofthecurrentselection• ;

• Chainover

Page 29: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Goingchainless

var body = d3.select("body"); var p = body.append("p"); p.text("New paragraph!");

Page 30: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Bindingdata

• Webind ourdatainputvaluestoelementsintheDOM• Like“attaching”orassociatingdatatospecificelements,sothatlateryoucanreferencethosevaluestoapplymappingrules• selection.data()methodtobinddatatoDOMelements• First,weneedthedataandaselectionofDOMelements

Page 31: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Bindingdata

// could also use JSON or CSV datavar dataset = [ 5, 10, 15, 20, 25 ];

d3.select("body").selectAll("p").data(dataset) .enter() .append("p") .text("New paragraph!");

Page 32: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Bindingdata

• d3.select("body")• Findsthe body intheDOMandhandsoffareferencetothenextstepinthechain.

• .selectAll("p")• SelectsallparagraphsintheDOM.Becausenoneexistyet,thisreturnsanemptyselection

• .data(dataset)• Countsandparsesourdatavalues• Therearefivevaluesinourarraycalled dataset,soeverythingpastthispointisexecutedfivetimes

• .enter()• Createsnew,data-boundelements;looksatthecurrentDOMselection,thenatthedatabeinghandedtoit• IfmoredatavaluesthancorrespondingDOMelements, createsanewplaceholderelement,thenhandsoffa

referencetothisnewplaceholdertothenextstepinthechain• .append("p")

• Takestheemptyplaceholderselectioncreatedby enter() andappendsa p elementintotheDOM.• handsoffareferencetotheelementitjustcreatedtothenextstepinthechain.

• .text("Newparagraph!")- Takesthereferencetothenewlycreated p andinsertsatextvalue.

Page 33: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Bindingdata

• Whenbindingdata,ordermatters!• Methodsoftenreturnreferencestoselections

Page 34: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Bindingdata

d3.select("body").selectAll("p").data(dataset) .enter() .append("p") .text("New paragraph!");

Page 35: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Bindingdata

• Typicallyuseanonymousfunctions• Datalikesbeingheld– weneedtoknowwhereitcomesfrom• Wecan’tjustdo:

.text(d)

// instead need to do:.text(function(d) {

return d; });

Page 36: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Bindingdata

d3.select("body").selectAll("p").data(dataset) .enter() .append("p") .text("New paragraph!");

// change last line to.text(function(d) {

return d; });

Page 37: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Bindingdata

d3.select("body").selectAll("p").data(dataset) .enter() .append("p") .text("New paragraph!");

// change last line to.text(function(d) { return "I can count up to " + d;

});

Page 38: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Bindingdata

.style("color", "red");

.style("color", function(d) { if (d > 15) {

//Threshold of 15 return "red";

} else { return "black";

} });

Page 39: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

DrawingwithData

var dataset = [ 5, 10, 15, 20, 25 ]; d3.select("body")

.selectAll("div")

.data(dataset)

.enter()

.append("div")

.attr("class", "bar");

Page 40: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

DrawingwithData

var dataset = [ 5, 10, 15, 20, 25 ]; d3.select("body")

.selectAll("div")

.data(dataset)

.enter()

.append("div")

.attr("class", "bar");

Page 41: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

DrawingwithData

Page 42: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

DrawingwithData

.style("height", function(d) { return d + "px";

});

.style("height", function(d) { var barHeight = d * 5; //Scale up by factor of 5 return barHeight + "px";

});

margin-right: 2px;

Page 43: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

data()Flexibility

var dataset = [ 25, 7, 5, 26, 11, 8, 25, 14, 23, 19, 14, 11, 22, 29, 11, 13, 12, 17, 18, 10, 24, 18, 25, 9, 3 ];

Page 44: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Data-drivenshapeswithSVGsvar svg = d3.select("body").append("svg");

// width and height var w = 500; var h = 50;

var svg = d3.select("body") .append("svg") .attr("width", w) .attr("height", h);

var circles = svg.selectAll("circle") .data(dataset) .enter() .append("circle");

Page 45: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Data-drivenshapeswithSVGs

circles.attr("cx", function(d, i) { return (i * 50) + 25;

}) .attr("cy", h/2) .attr("r", function(d) {

return d;});

Page 46: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Data-drivenshapeswithSVGs

.attr("fill", "yellow")

.attr("stroke", "orange")

.attr("stroke-width", function(d) {return d/2;

});

Page 47: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Data-drivenshapeswithSVGsvar dataset = [ 5, 10, 13, 19, 21, 25, 22, 18, 15, 13, 11, 12, 15, 20, 18, 17, 16, 18, 23, 25 ];

//Create SVG element var svg = d3.select("body") .append("svg") .attr("width", w) .attr("height", h);

svg.selectAll("rect").data(dataset).enter() .append("rect") .attr("x", 0) .attr("y", 0) .attr("width", 20) .attr("height", 100);

Page 48: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Data-drivenshapeswithSVGs

.attr("x", function(d, i) { return i * 21; //Bar width of 20 + 1 for padding

})

Fixedwidthmaycutoffsomevalues

Page 49: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Data-drivenshapeswithSVGs

.attr("x", function(d, i) { return i * (w / dataset.length);

})

.attr("width", w / dataset.length - barPadding)

Page 50: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Data-drivenshapeswithSVGs

Page 51: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Data-drivenshapeswithSVGs

.attr("height", function(d) { return d;

});

.attr("height", function(d) { return d * 4;

});

Page 52: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Data-drivenshapeswithSVGs

.attr("y", function(d) { return h - d; //Height minus data value

})

.attr("height", function(d) { return d; //Just the data value

});

Page 53: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Moreattributes:Color

.attr("fill", "teal");

Page 54: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Data-drivenshapeswithSVGs

.attr("fill", function(d) { return "rgb(0, 0, " + (d * 10) + ")";

});

Page 55: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Data-drivenshapeswithSVGs

.text(function(d) { return d;

}).attr("x", function(d, i) {

return i * (w / dataset.length); }) .attr("y", function(d) {

return h - (d * 4); });

Page 56: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Data-drivenshapeswithSVGs

.attr("x", function(d, i) { return i * (w / dataset.length) + 5; // +5

}) .attr("y", function(d) {

return h - (d * 4) + 15; // +15 });.attr("font-family", "sans-serif") .attr("font-size", "11px") .attr("fill", "white");

Page 57: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

MakingaScatterplot

var dataset = [ [5, 20], [480, 90], [250, 50], [100, 33], [330,

95], [410, 12], [475, 44], [25, 67], [85, 21], [220, 88] ];

Page 58: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

MakingaScatterplot

//Create SVG element var svg = d3.select("body")

.append("svg")

.attr("width", w)

.attr("height", h);

svg.selectAll("circle") .data(dataset) .enter() .append("circle”).attr("cx", function(d) {

return d[0]; }) .attr("cy", function(d) {

return d[1]; }) .attr("r", 5);

Page 59: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

MakingaScatterplot

.attr("r", function(d) { return Math.sqrt(h - d[1]);

});

Page 60: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

MakingaScatterplot

svg.selectAll("text") // <-- Note "text", not "circle" or "rect" .data(dataset) .enter() .append("text") // <-- Same here!.text(function(d) {

return d[0] + "," + d[1]; }).attr("x", function(d) { return d[0]; }) .attr("y", function(d) { return d[1]; }).attr("font-family", "sans-serif")

.attr("font-size", "11px")

.attr("fill", "red");

Page 61: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Let’svisualizesomedata

• 3attractionsinanamusementparkthatwewanttostore.Eachamusementridehasseveralattributes• ID• Name• PriceinUSD• Listwithopeningdays(someattractionsareopenonlyonspecificdays,likeweekends)• Limitedaccessforchildren(yes/no)

Page 62: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization
Page 63: CS50 for MBAscdn.cs50.net/2017/mba/seminars/data_visualization_with_d3/data... · Data Visualization with D3 • Presentation slides use examples from Interactive Data Visualization

Thankyou!J

• TolearnmoreaboutD3:• d3js.org