console.clear() var data = d3.csvParse(`Starters,Tm,MP,FG,FGA,3P,3PA,FT,FTA,ORB,DRB,TRB,AST,STL,BLK,TOV,PF,PTS,FG%,3P%,FT% James Harden\hardeja01,HOU,27:04,5,19,2,13,0,0,1,6,7,8,1,1,3,1,12,.263,.154, DeMar DeRozan\derozde01,TOR,26:46,7,13,1,3,6,7,2,4,6,2,2,0,2,1,21,.538,.333,.857 Stephen Curry\curryst01,GSW,26:35,4,14,3,11,0,0,2,4,6,5,1,0,6,0,11,.286,.273, Giannis Antetokounmpo\antetgi01,MIL,26:34,6,14,0,2,4,6,4,3,7,2,0,0,2,2,16,.429,.000,.667 Joel Embiid\embiijo01,PHI,20:05,8,13,2,4,1,1,3,5,8,1,1,2,0,3,19,.615,.500,1.000 Kyle Lowry\lowryky01,TOR,21:26,2,11,0,8,0,0,2,5,7,11,3,0,1,1,4,.182,.000, Klay Thompson\thompkl01,GSW,21:25,5,11,5,10,0,0,1,3,4,0,0,0,1,0,15,.455,.500, Damian Lillard\lillada01,POR,20:56,9,14,3,8,0,0,2,1,3,2,0,0,1,0,21,.643,.375, Draymond Green\greendr01,GSW,18:14,0,0,0,0,3,4,3,2,5,2,1,2,0,0,3,,,.750 Karl-Anthony Towns\townska01,MIN,18:11,7,11,1,4,2,2,4,6,10,0,0,0,1,0,17,.636,.250,1.000 Al Horford\horfoal01,BOS,12:46,2,4,0,2,2,2,0,5,5,2,1,0,0,0,6,.500,.000,1.000 LeBron James\jamesle01,LAL,31:17,12,17,4,8,1,1,0,10,10,8,1,0,5,2,29,.706,.500,1.000 Kevin Durant\duranke01,GSW,29:57,7,13,3,8,2,2,1,5,6,5,3,1,2,3,19,.538,.375,1.000 Russell Westbrook\westbru01,OKC,28:28,4,11,1,6,2,3,3,5,8,8,0,0,2,2,11,.364,.167,.667 Kyrie Irving\irvinky01,BOS,27:36,6,16,1,5,0,0,2,5,7,9,1,0,1,2,13,.375,.200, Anthony Davis\davisan02,NOP,16:40,6,9,0,1,0,0,1,1,2,1,0,0,1,2,12,.667,.000, Paul George\georgpa01,OKC,26:30,6,15,4,10,0,0,1,4,5,4,1,0,0,2,16,.400,.400, Andre Drummond\drumman01,DET,17:36,7,7,0,0,0,0,1,2,3,0,0,1,1,2,14,1.000,, Bradley Beal\bealbr01,WAS,16:51,5,10,4,8,0,0,0,0,0,0,1,0,1,1,14,.500,.500, Victor Oladipo\oladivi01,IND,15:00,3,8,1,6,0,0,0,2,2,3,3,0,0,0,7,.375,.167, Kemba Walker\walkeke02,CHO,14:09,5,10,1,5,0,0,1,1,2,1,0,0,0,0,11,.500,.200, Goran Dragic\dragigo01,MIA,11:28,1,3,0,1,0,0,0,4,4,1,0,0,1,2,2,.333,.000, LaMarcus Aldridge\aldrila01,SAS,4:28,0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,.000,, Cousins,GSW Love,CLE Porzingis,NYK Wall,WAS Butler,MIN `) var teams = ` TOR* (1) F C $ 59 23 BOS* (2) F C $ 55 27 PHI* (3) F C $ 52 30 CLE* (4) F C $ 50 32 IND* (5) F C $ 48 34 MIA* (6) F C $ 44 38 MIL* (7) F C $ 44 38 WAS* (8) F C $ 43 39 DET (9) F C $ 39 43 CHO (10) F C $ 36 46 NYK (11) F C $ 29 53 BRK (12) F C $ 28 54 CHI (13) F C $ 27 55 ORL (14) F C $ 25 57 ATL (15) F C $ 24 58 HOU* (1) F C $ 65 17 GSW* (2) F C $ 58 24 POR* (3) F C $ 49 33 OKC* (4) F C $ 48 34 UTA* (5) F C $ 48 34 NOP* (6) F C $ 48 34 SAS* (7) F C $ 47 35 MIN* (8) F C $ 47 35 DEN (9) F C $ 46 36 LAC (10) F C $ 42 40 LAL (11) F C $ 35 47 SAC (12) F C $ 27 55 DAL (13) F C $ 24 58 MEM (14) F C $ 22 60 PHO (15) F C $ 21 61 `.split('\n').filter(d => d).map(d => d.substr(0, 3)) byTeam = d3.nestBy(data, d => d.Tm) teams.forEach(team => { var m = _.find(byTeam, {key: team}) var rv = [] rv.key = team if (!m) byTeam.push(rv) }) byLength = d3.nestBy(byTeam, d => d.length) d3.select('body').selectAppend('div.tooltip.tooltip-hidden') var sel = d3.select('#graph').html('') var c = d3.conventions({sel, margin: {left: 100}, width: 390, height: 300}) c.x.domain([0, 5]) c.y.domain([0, 15]) c.xAxis.tickFormat(d => d).ticks(5) d3.drawAxis(c) c.svg.appendMany('g', byLength) .translate(d => c.x(d.key), 0) .appendMany('text.team', d => d) .translate((d, i) => c.y(i) - 10, 1) .text(d => d.key) c.svg.append('text.title') .text("Number of Last Season's All-Stars on Each Team") .at({textAnchor: 'middle', x: c.width/2, y: c.height + 80 })