Skip to content

Instantly share code, notes, and snippets.

@arfon
Last active August 29, 2015 13:55
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 arfon/8726394 to your computer and use it in GitHub Desktop.
Save arfon/8726394 to your computer and use it in GitHub Desktop.
Octokit.rb Merge Fraction

Fraction of pull requests to Octokit.rb merged over time (grouped by month). The size of the dot is proportional to the number of pull requests in that time period (mouseover to see the count).

Data pulled from the GitHub API:

<!DOCTYPE html>
<meta charset="utf-8">
<style>
body {
font: 12px sans-serif;
}
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.dot {
stroke: red;
fill: red;
}
h1{
padding-left:25px;
}
</style>
<body>
<script src="http://d3js.org/d3.v3.js"></script>
<script>
var margin = {top: 20, right: 20, bottom: 30, left: 50},
width = 960 - margin.left - margin.right,
height = 500 - margin.top - margin.bottom;
var parseDate = d3.time.format("%Y-%m-%d").parse;
var x = d3.time.scale()
.range([0, width]);
var y = d3.scale.linear()
.range([height, 0]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom");
var yAxis = d3.svg.axis()
.scale(y)
.orient("left");
var svg = d3.select("body").append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
d3.tsv("octokit_merge_fraction.tsv", function(error, data) {
data.forEach(function(d) {
d.date = parseDate(d.date);
d.unix_date = +d.unix_date;
d.merged_count = +d.merged_count;
d.not_merged_count = +d.not_merged_count;
d.count = +d.count;
d.merge_fraction = +d.merge_fraction;
});
x.domain(d3.extent(data, function(d) { return d.date; }));
y.domain(d3.extent(data, function(d) { return d.merge_fraction; }));
var median_pull_count = d3.median(data, function(d) { return d.count; });
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis);
svg.append("g")
.attr("class", "y axis")
.call(yAxis)
.append("text")
.attr("transform", "rotate(-90)")
.attr("y", 6)
.attr("dy", ".71em")
.style("text-anchor", "end")
.text("Merge fraction");
svg.selectAll(".dot")
.data(data)
.enter().append("circle")
.attr("class", "dot")
.attr("r", function(d) { return 3 * d.count/median_pull_count; })
.attr("cx", function(d) { return x(d.date); })
.attr("cy", function(d) { return y(d.merge_fraction); })
.append("svg:title")
.text(function(d) { return d.count; });
});
</script>
date unix_date merged_count not_merged_count count merge_fraction
2010-09-01 1283299200000 0 1 1 0.0
2010-10-01 1285891200000 0 2 2 0.0
2011-01-01 1293840000000 3 2 5 0.6
2011-04-01 1301616000000 3 1 4 0.75
2011-05-01 1304208000000 5 2 7 0.7142857142857143
2011-06-01 1306886400000 4 1 5 0.8
2011-07-01 1309478400000 5 0 5 1.0
2011-08-01 1312156800000 2 0 2 1.0
2011-09-01 1314835200000 2 0 2 1.0
2011-10-01 1317427200000 1 0 1 1.0
2011-11-01 1320105600000 3 0 3 1.0
2012-01-01 1325376000000 4 1 5 0.8
2012-02-01 1328054400000 3 1 4 0.75
2012-03-01 1330560000000 1 1 2 0.5
2012-04-01 1333238400000 1 0 1 1.0
2012-05-01 1335830400000 11 0 11 1.0
2012-06-01 1338508800000 9 0 9 1.0
2012-07-01 1341100800000 2 0 2 1.0
2012-08-01 1343779200000 4 1 5 0.8
2012-09-01 1346457600000 7 1 8 0.875
2012-10-01 1349049600000 15 9 24 0.625
2012-11-01 1351728000000 3 1 4 0.75
2012-12-01 1354320000000 7 3 10 0.7
2013-01-01 1356998400000 2 0 2 1.0
2013-02-01 1359676800000 13 1 14 0.9285714285714286
2013-03-01 1362096000000 1 5 6 0.16666666666666666
2013-04-01 1364774400000 3 2 5 0.6
2013-05-01 1367366400000 4 1 5 0.8
2013-06-01 1370044800000 9 8 17 0.5294117647058824
2013-07-01 1372636800000 0 1 1 0.0
2013-08-01 1375315200000 7 4 11 0.6363636363636364
2013-09-01 1377993600000 7 2 9 0.7777777777777778
2013-10-01 1380585600000 7 1 8 0.875
2013-11-01 1383264000000 7 1 8 0.875
2013-12-01 1385856000000 35 3 38 0.9210526315789473
2014-01-01 1388534400000 8 9 17 0.47058823529411764
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment