This is the simplest circle pack diagram I could create. Let me know if you think I can make it tighter.
Build notes:
d.size
when moving from json to csv. While size
is a feature of my data, I had to now access it from d.data.size
.)From https://bl.ocks.org/denjn5/6d5ddd4226506d644bb20062fc60b53f
xxxxxxxxxx
<meta charset="utf-8">
<head>
<title>Simple Circle Pack (d3 v4; CSV; 50 Lines)</title>
<script src="https://d3js.org/d3.v4.min.js"></script>
</head>
<style>
circle {
stroke: white;
fill: #05668D;
opacity: 0.3;
stroke-width: 2px;
}
</style>
<svg>
<g></g>
</svg>
<script>
var vWidth = 300;
var vHeight = 200;
// Prepare our physical space
var g = d3.select('svg').attr('width', vWidth).attr('height', vHeight).select('g');
// Get the data from our CSV file
d3.csv('data.csv', function(error, vCsvData) {
if (error) throw error;
vData = d3.stratify()(vCsvData);
drawViz(vData);
});
function drawViz(vData) {
// Declare d3 layout
var vLayout = d3.pack().size([vWidth, vHeight]);
// Layout + Data
var vRoot = d3.hierarchy(vData).sum(function (d) { return d.data.size; });
var vNodes = vRoot.descendants();
vLayout(vRoot);
var vSlices = g.selectAll('circle').data(vNodes).enter().append('circle');
// Draw on screen
vSlices.attr('cx', function (d) { return d.x; })
.attr('cy', function (d) { return d.y; })
.attr('r', function (d) { return d.r; });
}
</script>
https://d3js.org/d3.v4.min.js