Skip to content

Instantly share code, notes, and snippets.

@petergpython
Last active July 15, 2019 13:59
Show Gist options
  • Save petergpython/78453b793551e33f766f4ca68972e925 to your computer and use it in GitHub Desktop.
Save petergpython/78453b793551e33f766f4ca68972e925 to your computer and use it in GitHub Desktop.
test2 sunburst
{ "name": "banana",
"children": [{
"name": "Ensete",
"children": [{
"name": "E. gilletii",
"size": 1
}, {
"name": "E. glaucum",
"size": 1
}, {
"name": "E. ventricosum",
"size": 2
}, {
"name": "Others Ensete",
"size": 0
}]
}, {
"name": "Musa",
"children": [{
"name": "Section_Calimusa",
"children": [{
"name": "Calimusa cluster",
"children": [{
"name": "M. beccarii",
"size": 3
}, {
"name": "M. borneensis",
"size": 1
}, {
"name": "M. campestris",
"size": 2
}, {
"name": "M. coccinea",
"size": 3
}, {
"name": "M. monticola",
"size": 1
}, {
"name": "M. violascens",
"size": 1
}, {
"name": "M. viridis",
"size": 1
}]
}, {
"name": "Australimusa cluster",
"children": [{
"name": "Fe'i",
"children": [{
"name": "Fe'i PNG",
"size": 9
}, {
"name": "Fe'i FSM",
"size": 0
}, {
"name": "Fe'i FJI",
"size": 0
}, {
"name": "Fe'i PYF",
"size": 0
}, {
"name": "Fe'i USA",
"size": 0
}, {
"name": "Fe'i MHL",
"size": 0
}, {
"name": "Fe'i NRU",
"size": 0
}, {
"name": "Fe'i NCL",
"size": 0
}, {
"name": "Fe'i PLW",
"size": 0
}, {
"name": "Fe'i SLB",
"size": 0
}, {
"name": "Fe'i TON",
"size": 0
}, {
"name": "Fe'i TUV",
"size": 0
}, {
"name": "Fe'i VUT",
"size": 0
}]
}, {
"name": "Wild",
"children": [{
"name": "M. boman",
"size": 1
}, {
"name": "M. jackeyi",
"size": 1
}, {
"name": "M. lolodensis",
"size": 2
}, {
"name": "M. textilis",
"size": 4
}, {
"name": "M. maclayi",
"size": 7
}, {
"name": "M. peekelii",
"size": 5
}]
}]
}]
}, {
"name": "Section_Musa",
"children": [{
"name": "Rhodochlamys genetic cluster",
"children": [{
"name": "M. aurantiaca",
"size": 0
}, {
"name": "M. kattuvazhana",
"size": 0
}, {
"name": "M. ornata",
"size": 6
}, {
"name": "M. laterita",
"size": 4
}, {
"name": "M. velutina",
"size": 2
}, {
"name": "M. mannii",
"size": 1
}, {
"name": "M. rosea",
"size": 1
}, {
"name": "M. rubra",
"size": 1
}, {
"name": "M. sanguinea",
"size": 1
}, {
"name": "M. mannii",
"size": 1
}, {
"name": "M. rosea",
"size": 1
}, {
"name": "M. chunii",
"size": 0
}, {
"name": "M. rubinea",
"size": 0
}, {
"name": "M. zaifui",
"size": 0
}]
}, {
"name": "Eumusa genetic cluster",
"children": [{
"name": "Eumusa cluster-Wild",
"children": [{
"name": "M. acuminata",
"children": [{
"name": "M. acuminata subsp. banksii",
"size": 30
}, {
"name": "M. acuminata subsp. malaccensis",
"size": 14
}, {
"name": "M. acuminata subsp. zebrina",
"size": 6
}, {
"name": "M. acuminata subsp. siamea",
"size": 4
}, {
"name": "M. acuminata subsp. burmannica",
"size": 4
}, {
"name": "M. acuminata subsp. microcarpa",
"size": 1
}, {
"name": "M. acuminata subsp. truncata",
"size": 1
}, {
"name": "M. acuminata subsp. errans",
"size": 0
}, {
"name": "M. acuminata subsp. truncata",
"size": 1
}, {
"name": "Others M. acuminata",
"size": 29
}]
}, {
"name": "M. balbisiana",
"children": [{
"name": "M. balbisiana PHL",
"size": 8
}, {
"name": "M. balbisiana VNM",
"size": 2
}, {
"name": "M. balbisiana CHN",
"size": 1
}, {
"name": "M. balbisiana IND",
"size": 0
}, {
"name": "M. balbisiana MMR",
"size": 0
}, {
"name": "M. balbisiana LAO",
"size": 0
}, {
"name": "M. balbisiana LKA",
"size": 0
}, {
"name": "M. balbisiana THA",
"size": 0
}, {
"name": "M. balbisiana other or unknown origin",
"size": 20
}]
}, {
"name": "M. schizocarpa",
"size": 13
}, {
"name": "M. itinerans",
"size": 2
}, {
"name": "M. cheesmani",
"size": 1
}, {
"name": "M. basjoo",
"size": 1
}, {
"name": "M. griersonii",
"size": 0
}, {
"name": "M. insularimontana",
"size": 0
}, {
"name": "M. lanceolata",
"size": 0
}, {
"name": "M. nagensium",
"size": 0
}, {
"name": "M. ochracea",
"size": 0
}, {
"name": "M. shankarii",
"size": 0
}, {
"name": "M. siamensis",
"size": 0
}, {
"name": "M. sikkimensis",
"size": 0
}, {
"name": "M. thomsonii",
"size": 0
}, {
"name": "M. yamiensis",
"size": 0
}, {
"name": "M. yunnanensis",
"size": 0
}, {
"name": "M. celebica",
"size": 0
}, {
"name": "M. flaviflora",
"size": 0
}, {
"name": "M. tomentosa",
"size": 0
}, {
"name": "M. tonkinensis",
"size": 0
}]
}, {
"name": "Eumusa cluster-Domesticated",
"children": [{
"name": "Cultivars",
"children": [{
"name": "Diploids",
"children": [{
"name": "AA",
"children": [{
"name": "AA PNG",
"children": [{
"name": "Autonomus region of Bouganville",
"size": 0
}, {
"name": "East New Britain",
"size": 32
}, {
"name": "East Sepik",
"size": 3
}, {
"name": "Eastern highlands",
"size": 5
}, {
"name": "Hela",
"size": 1
}, {
"name": "Madang",
"size": 19
}, {
"name": "Manus",
"size": 1
}, {
"name": "Milne bay",
"size": 13
}, {
"name": "New Ireland",
"size": 5
}, {
"name": "Oro",
"size": 11
}, {
"name": "Southern highlands",
"size": 2
}, {
"name": "West New Britain",
"size": 0
}, {
"name": "West Sepik",
"size": 4
}, {
"name": "Western Highlands",
"size": 3
}, {
"name": "Western province",
"size": 6
}, {
"name": "origin not known",
"size": 20
}, {
"name": "Simbu",
"size": 0
}, {
"name": "Enga",
"size": 0
}, {
"name": "Gulf",
"size": 0
}, {
"name": "Jiwaka",
"size": 0
}]
}, {
"name": "AA IDN",
"size": 27
}, {
"name": "AA PHL",
"size": 10
}, {
"name": "AA MYS",
"size": 12
}, {
"name": "AA VNM",
"size": 11
}, {
"name": "AA THA",
"size": 6
}, {
"name": "AA TZA",
"size": 20
}, {
"name": "AA other origin",
"size": 77
}, {
"name": "AA TLS",
"size": 0
}, {
"name": "AA IND",
"size": 0
}, {
"name": "AA SLB",
"size": 0
}, {
"name": "AA MDG",
"size": 0
}]
}, {
"name": "AB",
"children": [{
"name": "Kunnan",
"size": 5
}, {
"name": "Ney Poovan",
"size": 7
}, {
"name": "Others AB",
"size": 10
}]
}, {
"name": "AS",
"size": 6
}]
}, {
"name": "Triploids",
"children": [{
"name": "AAA",
"children": [{
"name": "mutika/lujugira",
"size": 76
}, {
"name": "Cavendish",
"size": 51
}, {
"name": "red",
"size": 10
}, {
"name": "Gros Michel",
"size": 9
}, {
"name": "Ibota",
"size": 7
}, {
"name": "Orotava",
"size": 3
}, {
"name": "Rio",
"size": 3
}, {
"name": "Ambon",
"size": 1
}, {
"name": "Ambon",
"size": 1
}, {
"name": "Others AAA",
"size": 58
}]
}, {
"name": "AAB",
"children": [{
"name": "Plantain",
"size": 291
}, {
"name": "Silk",
"size": 24
}, {
"name": "Mysore",
"size": 10
}, {
"name": "Laknao",
"size": 7
}, {
"name": "Maia maoli/Popoulu",
"size": 7
}, {
"name": "Pisang Kelat",
"size": 5
}, {
"name": "Pisang Raja",
"size": 4
}, {
"name": "Iholena",
"size": 2
}, {
"name": " Pome hybrid",
"size": 0
}, {
"name": "Others AAB",
"size": 75
}]
}, {
"name": "ABB",
"children": [{
"name": "Pisang Awak",
"size": 17
}, {
"name": "Bluggoe",
"size": 16
}, {
"name": "Monthan",
"size": 10
}, {
"name": "Saba",
"size": 6
}, {
"name": "Pelipita",
"size": 3
}, {
"name": "Kalapua",
"size": 1
}, {
"name": "Teparod",
"size": 0
}, {
"name": "Others ABB",
"size": 57
}]
}, {
"name": "AAT",
"size": 5
}, {
"name": "other triploids",
"size": 4
}]
}, {
"name": "Tetraploids",
"children": [{
"name": "AAAA",
"size": 15
}, {
"name": "AAAB",
"size": 73
}, {
"name": "AABB",
"size": 2
}, {
"name": "ABBB",
"size": 1
}, {
"name": "ABBT",
"size": 2
}]
}]
}]
}]
}]
}]
}]
}
<!DOCTYPE html>
<meta charset="utf-8">
<style>
path {
stroke: #fff;
}
</style>
<body>
<script src="//d3js.org/d3.v3.min.js"></script>
<script>
var width = 960,
height = 700,
radius = (Math.min(width, height) / 2) - 10;
var formatNumber = d3.format(",d");
var x = d3.scale.linear()
.range([0, 2 * Math.PI]);
var y = d3.scale.sqrt()
.range([0, radius]);
var color = d3.scale.category20c();
var partition = d3.layout.partition()
.value(function(d) { return d.size; });
var arc = d3.svg.arc()
.startAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x))); })
.endAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx))); })
.innerRadius(function(d) { return Math.max(0, y(d.y)); })
.outerRadius(function(d) { return Math.max(0, y(d.y + d.dy)); });
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height)
.append("g")
.attr("transform", "translate(" + width / 2 + "," + (height / 2) + ")");
d3.json("flare.json", function(error, root) {
if (error) throw error;
svg.selectAll("path")
.data(partition.nodes(root))
.enter().append("path")
.attr("d", arc)
.style("fill", function(d) { return color((d.children ? d : d.parent).name); })
.on("click", click)
.append("title")
.text(function(d) { return d.name + "\n" + formatNumber(d.value); });
});
function click(d) {
svg.transition()
.duration(750)
.tween("scale", function() {
var xd = d3.interpolate(x.domain(), [d.x, d.x + d.dx]),
yd = d3.interpolate(y.domain(), [d.y, 1]),
yr = d3.interpolate(y.range(), [d.y ? 20 : 0, radius]);
return function(t) { x.domain(xd(t)); y.domain(yd(t)).range(yr(t)); };
})
.selectAll("path")
.attrTween("d", function(d) { return function() { return arc(d); }; });
}
d3.select(self.frameElement).style("height", height + "px");
</script>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment