d3-module-faces | more modules
This visualization maps d3 modules along logarithmic scales of GitHub stars and NPM downloads, with each module represented as a Chernoff face whose facial features encode other attributes like repository size, contributor count, and issue count. A force simulation positions the faces, while color distinguishes module authors. The code uses `d3.forceSimulation`, `d3.forceX`, `d3.forceY`, `d3.forceCollide`, and a custom force container, with annotations rendered via `d3.swoopyDrag`. Data comes from npms.io.
AI-generated descriptionnow with d3-sankey and d3-hexbin
as requested by @xaranke
an iteration on d3-module-faces | standard notation from @micahstubbs
Original README.md text
an iteration that shows axis tick labels in standard notation.
I found the tickFormat snippet to do this at this stackoverflow answer
along the way, I also fiddled with the width and the annotation placement to get everything inside of the 960px bl.ocks.org frame
an iteration on d3-module-faces from @adamrpearce
To visualize the d3 modules being used, I made a qr. By transforming many different attributes of our dataset into friendly glyphs, Chernoff faces allow us to understand multidimensional datasets. The encoding scheme is probably self explanatory, but I've included it below just in case:
'face': ƒ('dependentsCount')
'hair': ƒ('description', 'length')
'mouth': ƒ('downloads')
'nosew': ƒ('githubContributers')
'noseh': ƒ('githubIssues')
'eyew': ƒ('githubStars')
'eyeh': d => Math.random()
'brow': ƒ('repoSize')
I used the following modules:
- swoopy-drag
- d3-jetpack-module
- d3-force-container
- d3-chernoff
- d3-axis
- d3-force
- d3-scale
- d3-request
- d3-selection
Data is from nprms.io - see download-data.js to your generate your own listing of modules with different data points.
forked from <a href='http://bl.ocks.org/micahstubbs/'>micahstubbs</a>'s block: <a href='http://bl.ocks.org/micahstubbs/264454a671a6785cbc652cd79460fd2f'>d3-module-faces | more modules</a>