Skip to content

Instantly share code, notes, and snippets.

@Vintharas

Vintharas/.block

Last active Oct 14, 2019
Embed
What would you like to do?
Testing drawing tree like structures
license: mit
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<script src="https://d3js.org/d3.v4.min.js"></script>
<style>
body { margin:0;position:fixed;top:0;right:0;bottom:0;left:0; }
</style>
</head>
<body>
<script>
// Feel free to change or delete any of the code you see in this editor!
var data = [
{value: 1, children: [1,2,3], badge: undefined},
{value: 2, children: [1,4,2], badge: 'blue'},
{value: 3, children: [2,1,1, 3, 2], badge: 'green'}];
var svg = d3.select("body")
.append("svg")
.attr("width", 500)
.attr("height", 500)
.style('background-color', '#eee')
var rectGs = svg
.selectAll('g')
.data(data)
.enter()
.append('g');
rectGs
.append('rect')
.attr('height', 100)
.attr('width', d => d.value*100)
.attr('fill', 'black')
.attr('x', 0)
.attr('y', (d, i) => i*100)
rectGs
.append('g')
.selectAll('circle')
.data((d,i) => d.children.map(c => ({c, parentIdx: i})))
.enter()
.append('circle')
.attr('cx', (d,i) => (i+1)*50)
.attr('cy', (d,i) => (d.parentIdx*100)+50)
.attr('r', d => d.c*5)
.attr('fill', 'red')
.attr('stroke', 'red')
rectGs
.append('g')
.append('circle')
.attr('cx', (d,i) => (i+1)*50)
.attr('cy', (d,i) => (i*100)+50)
.attr('r', 20)
.attr('fill', d => d.badge || 'none') // if
</script>
</body>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment