Skip to content

Instantly share code, notes, and snippets.

@maelafifi
Last active May 1, 2017 03:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maelafifi/c31baf52fc620315617057c9dd24d508 to your computer and use it in GitHub Desktop.
Save maelafifi/c31baf52fc620315617057c9dd24d508 to your computer and use it in GitHub Desktop.
fresh block
license: mit
<!DOCTYPE html>
<meta charset="utf-8">
<style>
.node circle {
fill: #999;
}
.node text {
font: 10px sans-serif;
}
.node--internal circle {
fill: red;
}
.node--internal text {
text-shadow: 0 1px 0 #fff, 0 -1px 0 #fff, 1px 0 0 #fff, -1px 0 0 #fff;
}
.link {
fill: none;
stroke-opacity: 0.4;
stroke-width: 1px;
}
</style>
<svg width="1060" height="600"></svg>
<script src="//d3js.org/d3.v4.min.js"></script>
<script>
var svg = d3.select("svg"),
width = +svg.attr("width"),
height = +svg.attr("height"),
g = svg.append("g").attr("transform", "translate(40,0)");
var cluster = d3.cluster()
.size([height, width - 300]);
var stratify = d3.stratify()
.parentId(function(d) { return d.id.substring(0, d.id.lastIndexOf(".")); });
function count(s1)
{
return s1.split(".").length -1;
}
d3.csv("java.csv", function(error, data) {
if (error) throw error;
var root = stratify(data)
.sort(function(a, b) { return (a.height - b.height) || a.id.localeCompare(b.id); });
cluster(root);
var link = g.selectAll(".link")
.data(root.descendants().slice(1))
.enter().append("path")
.attr("class", "link")
.attr("d", function(d) {
var x = function(d) { return d.x; };
var y = function(d) { return d.y; };
var line = d3.line()
.curve(d3.curveLinear)
.x(x)
.y(y);
return "M" + d.y + "," + d.x
+ "C" + (d.parent.y + 100) + "," + d.x
+ " " + (d.parent.y + 100) + "," + d.parent.x
+ " " + d.parent.y + "," + d.parent.x;
})
.style("stroke", function (d)
{
var x = count(d.id);
if(x <= 0)
{
return "#000000";
}
else if(x <= 1)
{
return "red";
}
else if(x <= 2)
{
return "green";
}
else if(x <= 3)
{
return "brown";
}
else if(x <= 4)
{
return "brown";
}
else if(x <= 5)
{
return "pink";
}
});
var node = g.selectAll(".node")
.data(root.descendants())
.enter().append("g")
.attr("class", function(d) { return "node" + (d.children ? " node--internal" : " node--leaf"); })
.attr("transform", function(d) { return "translate(" + d.y + "," + d.x + ")"; })
node.append("circle")
.attr("r", 2.5)
.style("fill", function (d)
{
var x = count(d.id);
if(x <= 0)
{
return "#000000";
}
else if(x <= 1)
{
return "red";
}
else if(x <= 2)
{
return "green";
}
else if(x <= 3)
{
return "brown";
}
else if(x <= 4)
{
return "brown";
}
else if(x <= 5)
{
return "pink";
}
});
node.append("text")
.attr("dy", 3)
.attr("x", function(d) { return d.children ? -8 : 8; })
.style("text-anchor", function(d) { return d.children ? "end" : "start"; })
.text(function(d) { return d.id.substring(d.id.lastIndexOf(".") + 1); });
});
</script>
id value
java
java.util
java.util.concurrent
java.util.concurrent.AbstractExecutorService 41895.0
java.util.concurrent.ArrayBlockingQueue 71548.0
java.util.concurrent.atomic
java.util.concurrent.atomic.AtomicBoolean 19384.0
java.util.concurrent.atomic.AtomicInteger 36886.0
java.util.concurrent.atomic.AtomicIntegerArray 34818.0
java.util.concurrent.atomic.AtomicIntegerFieldUpdater 42839.0
java.util.concurrent.atomic.AtomicLong 36826.0
java.util.concurrent.atomic.AtomicLongArray 34754.0
java.util.concurrent.atomic.AtomicLongFieldUpdater 42658.0
java.util.concurrent.atomic.AtomicMarkableReference 23635.0
java.util.concurrent.atomic.AtomicReference 31478.0
java.util.concurrent.atomic.AtomicReferenceArray 35043.0
java.util.concurrent.atomic.AtomicReferenceFieldUpdater 40864.0
java.util.concurrent.atomic.AtomicStampedReference 23484.0
java.util.concurrent.atomic.DoubleAccumulator 25228.0
java.util.concurrent.atomic.DoubleAdder 23674.0
java.util.concurrent.atomic.LongAccumulator 25356.0
java.util.concurrent.atomic.LongAdder 24771.0
java.util.concurrent.BlockingDeque 95136.0
java.util.concurrent.BlockingQueue 44846.0
java.util.concurrent.BrokenBarrierException 13294.0
java.util.concurrent.Callable 11102.0
java.util.concurrent.CancellationException 13566.0
java.util.concurrent.CompletableFuture.AsynchronousCompletionTask 7644.0
java.util.concurrent.CompletableFuture 186898.0
java.util.concurrent.CompletionException 16557.0
java.util.concurrent.CompletionService 20087.0
java.util.concurrent.CompletionStage 115514.0
java.util.concurrent.ConcurrentHashMap 207497.0
java.util.concurrent.ConcurrentHashMap.KeySetView 58242.0
java.util.concurrent.ConcurrentLinkedDeque 91451.0
java.util.concurrent.ConcurrentLinkedQueue 50617.0
java.util.concurrent.ConcurrentMap 61075.0
java.util.concurrent.ConcurrentNavigableMap 55603.0
java.util.concurrent.ConcurrentSkipListMap 187419.0
java.util.concurrent.ConcurrentSkipListSet 103952.0
java.util.concurrent.CopyOnWriteArrayList 98649.0
java.util.concurrent.CopyOnWriteArraySet 64887.0
java.util.concurrent.CountDownLatch 24747.0
java.util.concurrent.CountedCompleter 65441.0
java.util.concurrent.CyclicBarrier 30973.0
java.util.concurrent.Delayed 10850.0
java.util.concurrent.DelayQueue 61308.0
java.util.concurrent.Exchanger 20688.0
java.util.concurrent.ExecutionException 16505.0
java.util.concurrent.Executor 13814.0
java.util.concurrent.ExecutorCompletionService 30763.0
java.util.concurrent.Executors 59284.0
java.util.concurrent.ExecutorService 43148.0
java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory 10730.0
java.util.concurrent.ForkJoinPool 87843.0
java.util.concurrent.ForkJoinPool.ManagedBlocker 12962.0
java.util.concurrent.ForkJoinTask 82817.0
java.util.concurrent.ForkJoinWorkerThread 23995.0
java.util.concurrent.Future 20372.0
java.util.concurrent.FutureTask 33548.0
java.util.concurrent.LinkedBlockingDeque 147048.0
java.util.concurrent.LinkedBlockingQueue 66916.0
java.util.concurrent.LinkedTransferQueue 72791.0
java.util.concurrent.locks
java.util.concurrent.locks.AbstractOwnableSynchronizer 14835.0
java.util.concurrent.locks.AbstractQueuedLongSynchronizer.ConditionObject 34389.0
java.util.concurrent.locks.AbstractQueuedLongSynchronizer 69366.0
java.util.concurrent.locks.AbstractQueuedSynchronizer.ConditionObject 33954.0
java.util.concurrent.locks.AbstractQueuedSynchronizer 81713.0
java.util.concurrent.locks.Condition 36232.0
java.util.concurrent.locks.Lock 28286.0
java.util.concurrent.locks.LockSupport 28401.0
java.util.concurrent.locks.ReadWriteLock 15356.0
java.util.concurrent.locks.ReentrantLock 52223.0
java.util.concurrent.locks.ReentrantReadWriteLock 49572.0
java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock 27538.0
java.util.concurrent.locks.ReentrantReadWriteLock.WriteLock 34031.0
java.util.concurrent.locks.StampedLock 50130.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment