Built with blockbuilder.org
Created
October 20, 2018 15:11
-
-
Save romsson/8a880f9ae280dafce01956405a7e748d to your computer and use it in GitHub Desktop.
ranking chart (soccer Ligue 1)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
license: mit |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<meta charset="utf-8"> | |
<style> | |
body { | |
font: 15px sans-serif; | |
font-weight: 1000; | |
} | |
.axis path, | |
.axis line { | |
fill: none; | |
stroke: #000; | |
shape-rendering: crispEdges; | |
} | |
.x.axis path { | |
display: none; | |
} | |
.line { | |
fill: none; | |
stroke: steelblue; | |
stroke-width: 1.5px; | |
} | |
</style> | |
<body> | |
<script src="https://d3js.org/d3.v3.min.js"></script> | |
<script> | |
// Source: https://bl.ocks.org/mbostock/3884955 | |
// Drag and drop manually on this chart | |
var margin = {top: 20, right: 80, 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 parseDate = d3.time.format("%d").parse; | |
var ease_type = 'linear'; | |
var x = d3.scale.linear() | |
.range([0, width]); | |
var y = d3.scale.linear() | |
.range([0, height]); | |
var color = d3.scale.category10(); | |
var var_y = 'rank'; | |
var var_x = 'date'; | |
var line = d3.svg.line() | |
.interpolate("linear") | |
.x(function(d) { return x(d[var_x]); }) | |
.y(function(d) { return y(d[var_y]); }); | |
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 + ")"); | |
function flatten_values(data, attr) { | |
return Array.prototype.concat.apply([], data.map(function(d) { | |
return d3.values(d.values); | |
})).map(function(d) { | |
return d[attr]; | |
}); | |
} | |
d3.csv("soccer_ligue1.csv", function(error, data) { | |
if (error) throw error; | |
teams = d3.set(data.map(function(d) { return d.team })).values(); | |
color.domain(teams) | |
cities = teams.map(function(team) { | |
return { | |
name: team, | |
values: data.filter(function(d) { | |
d.date = +d.day; | |
d.rank = +d.rank; | |
d.pts = +d.pts; | |
return d.team == team; | |
}) | |
}; | |
}); | |
x.domain(d3.extent(flatten_values(cities, var_x))); | |
y.domain(d3.extent(flatten_values(cities, var_y))); | |
var xAxis = d3.svg.axis() | |
.scale(x) | |
.ticks(x.domain()[1]) | |
.orient("bottom"); | |
var yAxis = d3.svg.axis() | |
.scale(y) | |
.orient("left"); | |
svg.append("g") | |
.attr("class", "x axis") | |
.attr("transform", "translate(0," + height + ")") | |
.call(xAxis); | |
svg.append("g") | |
.attr("class", "y axis") | |
.style("display", "none") | |
.call(yAxis) | |
.append("text") | |
.attr("transform", "rotate(-90)") | |
.attr("y", 6) | |
.attr("dy", ".71em") | |
.style("text-anchor", "end") | |
.text("Rank"); | |
city = svg.selectAll(".city") | |
.data(cities) | |
.enter() | |
.append("g") | |
.attr("class", "city"); | |
path = city.append("path") | |
.attr("class", "line") | |
.style("stroke-width", "10px") | |
.style("stroke-opacity", function(d) { | |
if(d.name !== "Paris SG") { | |
return .5; | |
} else { | |
return 1; | |
} | |
}) | |
.attr("d", function(d) { return line(d.values); }) | |
.style("stroke", function(d) { return color(d.name); }); | |
city.append("text") | |
// .datum(function(d) { return {name: d.name, value: d.values[d.values.length - 1]}; }) | |
.attr("transform", function(d) { | |
return "translate(" + x(d.values[d.values.length - 1][var_x]) + "," + y(d.values[d.values.length - 1][var_y]) + ")"; | |
}) | |
.attr("x", 3) | |
.attr("dy", ".35em") | |
.attr("class", "names") | |
.style("fill-opacity", function(d) { | |
if(d.name !== "Paris SG") { | |
return .3; | |
} else { | |
return 1; | |
} | |
}) | |
.text(function(d) { return d.name; }); | |
d3.select("body").selectAll(".clearSelection").data(["absolute"]).enter().append("button") | |
.attr("type", "button") | |
.attr("class", "clearSelection") | |
.on("click", function() { | |
var_y = 'pts'; | |
update(); | |
}) | |
.html("absolute"); | |
d3.select("body").selectAll(".relative").data(["relative"]).enter().append("button") | |
.attr("type", "button") | |
.attr("class", "relative") | |
.on("click", function() { | |
var_y = 'rank'; | |
update(); | |
}) | |
.html("relative"); | |
}); | |
function update() { | |
y.domain(d3.extent(flatten_values(cities, var_y))); | |
if(var_y === 'rank') { | |
ease_type = 'linear' | |
} else { | |
ease_type = 'bounce' | |
} | |
yAxis = d3.svg.axis() | |
.scale(y) | |
.orient("left"); | |
svg.selectAll(".y.axis") | |
.transition().duration(1000).ease(ease_type) | |
.call(yAxis); | |
city.selectAll(".names") | |
.transition().duration(1000).ease(ease_type) | |
.attr("transform", function(d) { | |
return "translate(" + x(d.values[d.values.length - 1][var_x]) + "," + y(d.values[d.values.length - 1][var_y]) + ")"; | |
}); | |
// .attr("x", 3) | |
// .attr("dy", ".35em") | |
// .text(function(d) { return d.name; }); | |
path.transition().duration(1000).ease(ease_type).attr("d", function(d) { return line(d.values); }) | |
} | |
</script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
day | pts | rank | team | |
---|---|---|---|---|
0 | 0 | 1 | Caen | |
1 | 3 | 1 | Caen | |
2 | 6 | 1 | Caen | |
3 | 6 | 5 | Caen | |
4 | 6 | 9 | Caen | |
5 | 9 | 5 | Caen | |
6 | 12 | 4 | Caen | |
7 | 12 | 4 | Caen | |
8 | 15 | 3 | Caen | |
9 | 18 | 2 | Caen | |
10 | 21 | 2 | Caen | |
11 | 21 | 3 | Caen | |
12 | 21 | 5 | Caen | |
13 | 24 | 3 | Caen | |
14 | 25 | 2 | Caen | |
15 | 28 | 2 | Caen | |
16 | 29 | 2 | Caen | |
17 | 29 | 3 | Caen | |
18 | 30 | 4 | Caen | |
19 | 30 | 4 | Caen | |
20 | 30 | 4 | Caen | |
21 | 30 | 7 | Caen | |
22 | 33 | 6 | Caen | |
23 | 36 | 4 | Caen | |
24 | 36 | 5 | Caen | |
25 | 36 | 6 | Caen | |
26 | 36 | 9 | Caen | |
27 | 39 | 6 | Caen | |
28 | 42 | 3 | Caen | |
29 | 43 | 6 | Caen | |
30 | 43 | 7 | Caen | |
31 | 46 | 6 | Caen | |
32 | 46 | 7 | Caen | |
33 | 46 | 8 | Caen | |
34 | 46 | 9 | Caen | |
35 | 47 | 9 | Caen | |
36 | 48 | 9 | Caen | |
37 | 51 | 8 | Caen | |
38 | 54 | 7 | Caen | |
0 | 0 | 2 | Nantes | |
1 | 3 | 2 | Nantes | |
2 | 4 | 4 | Nantes | |
3 | 7 | 2 | Nantes | |
4 | 7 | 5 | Nantes | |
5 | 7 | 9 | Nantes | |
6 | 7 | 12 | Nantes | |
7 | 10 | 11 | Nantes | |
8 | 10 | 11 | Nantes | |
9 | 13 | 10 | Nantes | |
10 | 16 | 6 | Nantes | |
11 | 19 | 4 | Nantes | |
12 | 19 | 7 | Nantes | |
13 | 19 | 10 | Nantes | |
14 | 19 | 10 | Nantes | |
15 | 20 | 10 | Nantes | |
16 | 21 | 11 | Nantes | |
17 | 22 | 11 | Nantes | |
18 | 23 | 11 | Nantes | |
19 | 24 | 11 | Nantes | |
20 | 27 | 9 | Nantes | |
21 | 28 | 11 | Nantes | |
22 | 29 | 11 | Nantes | |
23 | 32 | 9 | Nantes | |
24 | 35 | 7 | Nantes | |
25 | 36 | 7 | Nantes | |
26 | 39 | 5 | Nantes | |
27 | 40 | 5 | Nantes | |
28 | 41 | 5 | Nantes | |
29 | 41 | 8 | Nantes | |
30 | 44 | 6 | Nantes | |
31 | 44 | 8 | Nantes | |
32 | 44 | 10 | Nantes | |
33 | 44 | 10 | Nantes | |
34 | 44 | 10 | Nantes | |
35 | 45 | 10 | Nantes | |
36 | 48 | 10 | Nantes | |
37 | 48 | 12 | Nantes | |
38 | 48 | 13 | Nantes | |
0 | 0 | 3 | Reims | |
1 | 3 | 3 | Reims | |
2 | 6 | 2 | Reims | |
3 | 6 | 6 | Reims | |
4 | 9 | 2 | Reims | |
5 | 10 | 3 | Reims | |
6 | 11 | 5 | Reims | |
7 | 12 | 5 | Reims | |
8 | 15 | 4 | Reims | |
9 | 15 | 6 | Reims | |
10 | 15 | 9 | Reims | |
11 | 15 | 11 | Reims | |
12 | 15 | 12 | Reims | |
13 | 15 | 13 | Reims | |
14 | 15 | 14 | Reims | |
15 | 16 | 15 | Reims | |
16 | 19 | 12 | Reims | |
17 | 20 | 13 | Reims | |
18 | 21 | 15 | Reims | |
19 | 21 | 17 | Reims | |
20 | 21 | 17 | Reims | |
21 | 22 | 16 | Reims | |
22 | 23 | 17 | Reims | |
23 | 23 | 18 | Reims | |
24 | 26 | 16 | Reims | |
25 | 29 | 16 | Reims | |
26 | 29 | 16 | Reims | |
27 | 29 | 17 | Reims | |
28 | 32 | 16 | Reims | |
29 | 32 | 16 | Reims | |
30 | 33 | 17 | Reims | |
31 | 33 | 17 | Reims | |
32 | 33 | 17 | Reims | |
33 | 36 | 17 | Reims | |
34 | 36 | 17 | Reims | |
35 | 36 | 18 | Reims | |
36 | 36 | 18 | Reims | |
37 | 36 | 19 | Reims | |
38 | 39 | 18 | Reims | |
0 | 0 | 4 | Angers | |
1 | 3 | 4 | Angers | |
2 | 4 | 5 | Angers | |
3 | 7 | 3 | Angers | |
4 | 8 | 4 | Angers | |
5 | 8 | 6 | Angers | |
6 | 11 | 6 | Angers | |
7 | 12 | 6 | Angers | |
8 | 15 | 5 | Angers | |
9 | 18 | 3 | Angers | |
10 | 21 | 3 | Angers | |
11 | 22 | 2 | Angers | |
12 | 22 | 2 | Angers | |
13 | 22 | 4 | Angers | |
14 | 23 | 5 | Angers | |
15 | 26 | 3 | Angers | |
16 | 27 | 3 | Angers | |
17 | 30 | 2 | Angers | |
18 | 31 | 2 | Angers | |
19 | 31 | 3 | Angers | |
20 | 34 | 2 | Angers | |
21 | 34 | 3 | Angers | |
22 | 34 | 4 | Angers | |
23 | 37 | 3 | Angers | |
24 | 37 | 4 | Angers | |
25 | 37 | 5 | Angers | |
26 | 37 | 8 | Angers | |
27 | 37 | 9 | Angers | |
28 | 38 | 9 | Angers | |
29 | 39 | 9 | Angers | |
30 | 39 | 10 | Angers | |
31 | 42 | 10 | Angers | |
32 | 45 | 9 | Angers | |
33 | 46 | 9 | Angers | |
34 | 49 | 8 | Angers | |
35 | 50 | 8 | Angers | |
36 | 50 | 8 | Angers | |
37 | 50 | 9 | Angers | |
38 | 50 | 9 | Angers | |
0 | 0 | 5 | Bastia | |
1 | 3 | 5 | Bastia | |
2 | 4 | 6 | Bastia | |
3 | 7 | 4 | Bastia | |
4 | 7 | 6 | Bastia | |
5 | 7 | 10 | Bastia | |
6 | 7 | 13 | Bastia | |
7 | 7 | 14 | Bastia | |
8 | 10 | 12 | Bastia | |
9 | 10 | 13 | Bastia | |
10 | 10 | 15 | Bastia | |
11 | 10 | 16 | Bastia | |
12 | 13 | 15 | Bastia | |
13 | 14 | 15 | Bastia | |
14 | 14 | 17 | Bastia | |
15 | 15 | 17 | Bastia | |
16 | 18 | 15 | Bastia | |
17 | 18 | 18 | Bastia | |
18 | 19 | 17 | Bastia | |
19 | 22 | 15 | Bastia | |
20 | 22 | 15 | Bastia | |
21 | 25 | 14 | Bastia | |
22 | 25 | 14 | Bastia | |
23 | 28 | 13 | Bastia | |
24 | 28 | 15 | Bastia | |
25 | 31 | 12 | Bastia | |
26 | 34 | 12 | Bastia | |
27 | 35 | 12 | Bastia | |
28 | 38 | 10 | Bastia | |
29 | 39 | 10 | Bastia | |
30 | 39 | 11 | Bastia | |
31 | 40 | 11 | Bastia | |
32 | 43 | 11 | Bastia | |
33 | 43 | 11 | Bastia | |
34 | 43 | 11 | Bastia | |
35 | 43 | 12 | Bastia | |
36 | 44 | 13 | Bastia | |
37 | 47 | 13 | Bastia | |
38 | 50 | 10 | Bastia | |
0 | 0 | 6 | Guingamp | |
1 | 0 | 13 | Guingamp | |
2 | 0 | 18 | Guingamp | |
3 | 0 | 19 | Guingamp | |
4 | 3 | 15 | Guingamp | |
5 | 6 | 11 | Guingamp | |
6 | 9 | 7 | Guingamp | |
7 | 9 | 12 | Guingamp | |
8 | 10 | 13 | Guingamp | |
9 | 13 | 11 | Guingamp | |
10 | 14 | 11 | Guingamp | |
11 | 15 | 12 | Guingamp | |
12 | 16 | 11 | Guingamp | |
13 | 16 | 12 | Guingamp | |
14 | 19 | 11 | Guingamp | |
15 | 19 | 11 | Guingamp | |
16 | 19 | 13 | Guingamp | |
17 | 19 | 16 | Guingamp | |
18 | 19 | 18 | Guingamp | |
19 | 19 | 18 | Guingamp | |
20 | 20 | 18 | Guingamp | |
21 | 21 | 18 | Guingamp | |
22 | 24 | 16 | Guingamp | |
23 | 27 | 14 | Guingamp | |
24 | 30 | 12 | Guingamp | |
25 | 31 | 13 | Guingamp | |
26 | 31 | 13 | Guingamp | |
27 | 31 | 16 | Guingamp | |
28 | 32 | 17 | Guingamp | |
29 | 32 | 17 | Guingamp | |
30 | 35 | 16 | Guingamp | |
31 | 38 | 15 | Guingamp | |
32 | 39 | 13 | Guingamp | |
33 | 39 | 15 | Guingamp | |
34 | 42 | 14 | Guingamp | |
35 | 43 | 13 | Guingamp | |
36 | 43 | 15 | Guingamp | |
37 | 44 | 15 | Guingamp | |
38 | 44 | 16 | Guingamp | |
0 | 0 | 7 | Lorient | |
1 | 1 | 9 | Lorient | |
2 | 2 | 11 | Lorient | |
3 | 2 | 14 | Lorient | |
4 | 2 | 18 | Lorient | |
5 | 5 | 15 | Lorient | |
6 | 8 | 9 | Lorient | |
7 | 11 | 8 | Lorient | |
8 | 11 | 10 | Lorient | |
9 | 14 | 8 | Lorient | |
10 | 15 | 10 | Lorient | |
11 | 16 | 10 | Lorient | |
12 | 17 | 9 | Lorient | |
13 | 20 | 7 | Lorient | |
14 | 20 | 9 | Lorient | |
15 | 21 | 9 | Lorient | |
16 | 22 | 8 | Lorient | |
17 | 25 | 7 | Lorient | |
18 | 25 | 8 | Lorient | |
19 | 26 | 8 | Lorient | |
20 | 27 | 10 | Lorient | |
21 | 27 | 12 | Lorient | |
22 | 27 | 12 | Lorient | |
23 | 30 | 11 | Lorient | |
24 | 30 | 13 | Lorient | |
25 | 31 | 14 | Lorient | |
26 | 31 | 14 | Lorient | |
27 | 34 | 13 | Lorient | |
28 | 37 | 11 | Lorient | |
29 | 38 | 11 | Lorient | |
30 | 39 | 12 | Lorient | |
31 | 39 | 12 | Lorient | |
32 | 39 | 14 | Lorient | |
33 | 42 | 13 | Lorient | |
34 | 43 | 12 | Lorient | |
35 | 43 | 14 | Lorient | |
36 | 43 | 16 | Lorient | |
37 | 43 | 16 | Lorient | |
38 | 46 | 15 | Lorient | |
0 | 0 | 8 | Marseille | |
1 | 0 | 14 | Marseille | |
2 | 0 | 19 | Marseille | |
3 | 3 | 13 | Marseille | |
4 | 3 | 16 | Marseille | |
5 | 6 | 12 | Marseille | |
6 | 7 | 14 | Marseille | |
7 | 8 | 13 | Marseille | |
8 | 8 | 15 | Marseille | |
9 | 8 | 16 | Marseille | |
10 | 9 | 16 | Marseille | |
11 | 12 | 14 | Marseille | |
12 | 15 | 13 | Marseille | |
13 | 15 | 14 | Marseille | |
14 | 18 | 12 | Marseille | |
15 | 19 | 12 | Marseille | |
16 | 22 | 9 | Marseille | |
17 | 23 | 9 | Marseille | |
18 | 24 | 9 | Marseille | |
19 | 25 | 10 | Marseille | |
20 | 26 | 11 | Marseille | |
21 | 29 | 8 | Marseille | |
22 | 30 | 8 | Marseille | |
23 | 31 | 10 | Marseille | |
24 | 34 | 8 | Marseille | |
25 | 34 | 10 | Marseille | |
26 | 35 | 11 | Marseille | |
27 | 36 | 11 | Marseille | |
28 | 37 | 12 | Marseille | |
29 | 38 | 12 | Marseille | |
30 | 39 | 13 | Marseille | |
31 | 39 | 13 | Marseille | |
32 | 39 | 15 | Marseille | |
33 | 40 | 14 | Marseille | |
34 | 40 | 15 | Marseille | |
35 | 41 | 16 | Marseille | |
36 | 44 | 14 | Marseille | |
37 | 47 | 14 | Marseille | |
38 | 48 | 14 | Marseille | |
0 | 0 | 9 | Montpellier | |
1 | 0 | 15 | Montpellier | |
2 | 0 | 20 | Montpellier | |
3 | 0 | 20 | Montpellier | |
4 | 1 | 19 | Montpellier | |
5 | 1 | 19 | Montpellier | |
6 | 1 | 19 | Montpellier | |
7 | 1 | 20 | Montpellier | |
8 | 4 | 18 | Montpellier | |
9 | 4 | 18 | Montpellier | |
10 | 5 | 18 | Montpellier | |
11 | 8 | 17 | Montpellier | |
12 | 9 | 17 | Montpellier | |
13 | 12 | 17 | Montpellier | |
14 | 15 | 15 | Montpellier | |
15 | 18 | 13 | Montpellier | |
16 | 18 | 16 | Montpellier | |
17 | 19 | 17 | Montpellier | |
18 | 22 | 13 | Montpellier | |
19 | 22 | 16 | Montpellier | |
20 | 22 | 16 | Montpellier | |
21 | 22 | 17 | Montpellier | |
22 | 22 | 18 | Montpellier | |
23 | 25 | 17 | Montpellier | |
24 | 25 | 18 | Montpellier | |
25 | 26 | 18 | Montpellier | |
26 | 29 | 17 | Montpellier | |
27 | 32 | 15 | Montpellier | |
28 | 35 | 14 | Montpellier | |
29 | 36 | 15 | Montpellier | |
30 | 36 | 15 | Montpellier | |
31 | 36 | 16 | Montpellier | |
32 | 37 | 16 | Montpellier | |
33 | 37 | 16 | Montpellier | |
34 | 40 | 16 | Montpellier | |
35 | 43 | 15 | Montpellier | |
36 | 46 | 12 | Montpellier | |
37 | 49 | 11 | Montpellier | |
38 | 49 | 12 | Montpellier | |
0 | 0 | 10 | Rennes | |
1 | 0 | 16 | Rennes | |
2 | 3 | 9 | Rennes | |
3 | 6 | 7 | Rennes | |
4 | 9 | 3 | Rennes | |
5 | 12 | 2 | Rennes | |
6 | 13 | 2 | Rennes | |
7 | 14 | 3 | Rennes | |
8 | 15 | 6 | Rennes | |
9 | 16 | 4 | Rennes | |
10 | 16 | 7 | Rennes | |
11 | 17 | 7 | Rennes | |
12 | 17 | 10 | Rennes | |
13 | 20 | 8 | Rennes | |
14 | 21 | 8 | Rennes | |
15 | 22 | 8 | Rennes | |
16 | 22 | 10 | Rennes | |
17 | 23 | 10 | Rennes | |
18 | 24 | 10 | Rennes | |
19 | 27 | 7 | Rennes | |
20 | 28 | 8 | Rennes | |
21 | 31 | 6 | Rennes | |
22 | 34 | 5 | Rennes | |
23 | 34 | 6 | Rennes | |
24 | 34 | 9 | Rennes | |
25 | 35 | 9 | Rennes | |
26 | 38 | 7 | Rennes | |
27 | 38 | 8 | Rennes | |
28 | 41 | 6 | Rennes | |
29 | 44 | 4 | Rennes | |
30 | 45 | 5 | Rennes | |
31 | 48 | 5 | Rennes | |
32 | 51 | 4 | Rennes | |
33 | 51 | 5 | Rennes | |
34 | 51 | 7 | Rennes | |
35 | 52 | 7 | Rennes | |
36 | 52 | 7 | Rennes | |
37 | 52 | 7 | Rennes | |
38 | 52 | 8 | Rennes | |
0 | 0 | 11 | Monaco | |
1 | 3 | 6 | Monaco | |
2 | 4 | 7 | Monaco | |
3 | 5 | 8 | Monaco | |
4 | 5 | 10 | Monaco | |
5 | 8 | 7 | Monaco | |
6 | 8 | 10 | Monaco | |
7 | 11 | 9 | Monaco | |
8 | 12 | 8 | Monaco | |
9 | 13 | 12 | Monaco | |
10 | 14 | 12 | Monaco | |
11 | 17 | 8 | Monaco | |
12 | 20 | 6 | Monaco | |
13 | 20 | 9 | Monaco | |
14 | 23 | 6 | Monaco | |
15 | 24 | 6 | Monaco | |
16 | 25 | 5 | Monaco | |
17 | 28 | 4 | Monaco | |
18 | 31 | 3 | Monaco | |
19 | 32 | 2 | Monaco | |
20 | 33 | 3 | Monaco | |
21 | 36 | 2 | Monaco | |
22 | 39 | 2 | Monaco | |
23 | 39 | 2 | Monaco | |
24 | 42 | 2 | Monaco | |
25 | 45 | 2 | Monaco | |
26 | 46 | 2 | Monaco | |
27 | 49 | 2 | Monaco | |
28 | 50 | 2 | Monaco | |
29 | 51 | 2 | Monaco | |
30 | 52 | 2 | Monaco | |
31 | 55 | 2 | Monaco | |
32 | 55 | 2 | Monaco | |
33 | 55 | 2 | Monaco | |
34 | 58 | 2 | Monaco | |
35 | 59 | 2 | Monaco | |
36 | 62 | 2 | Monaco | |
37 | 62 | 3 | Monaco | |
38 | 65 | 2 | Monaco | |
0 | 0 | 12 | St Etienne | |
1 | 0 | 17 | St Etienne | |
2 | 1 | 13 | St Etienne | |
3 | 4 | 9 | St Etienne | |
4 | 7 | 7 | St Etienne | |
5 | 10 | 4 | St Etienne | |
6 | 13 | 3 | St Etienne | |
7 | 16 | 2 | St Etienne | |
8 | 16 | 2 | St Etienne | |
9 | 16 | 5 | St Etienne | |
10 | 19 | 4 | St Etienne | |
11 | 19 | 5 | St Etienne | |
12 | 22 | 3 | St Etienne | |
13 | 22 | 5 | St Etienne | |
14 | 22 | 7 | St Etienne | |
15 | 25 | 4 | St Etienne | |
16 | 25 | 6 | St Etienne | |
17 | 26 | 5 | St Etienne | |
18 | 26 | 5 | St Etienne | |
19 | 29 | 5 | St Etienne | |
20 | 29 | 6 | St Etienne | |
21 | 32 | 5 | St Etienne | |
22 | 33 | 7 | St Etienne | |
23 | 33 | 7 | St Etienne | |
24 | 36 | 6 | St Etienne | |
25 | 39 | 3 | St Etienne | |
26 | 40 | 3 | St Etienne | |
27 | 41 | 3 | St Etienne | |
28 | 41 | 7 | St Etienne | |
29 | 42 | 7 | St Etienne | |
30 | 42 | 8 | St Etienne | |
31 | 45 | 7 | St Etienne | |
32 | 48 | 6 | St Etienne | |
33 | 51 | 6 | St Etienne | |
34 | 54 | 4 | St Etienne | |
35 | 57 | 4 | St Etienne | |
36 | 58 | 4 | St Etienne | |
37 | 58 | 5 | St Etienne | |
38 | 58 | 6 | St Etienne | |
0 | 0 | 13 | Bordeaux | |
1 | 0 | 18 | Bordeaux | |
2 | 1 | 14 | Bordeaux | |
3 | 2 | 15 | Bordeaux | |
4 | 5 | 11 | Bordeaux | |
5 | 6 | 13 | Bordeaux | |
6 | 7 | 15 | Bordeaux | |
7 | 7 | 15 | Bordeaux | |
8 | 10 | 14 | Bordeaux | |
9 | 10 | 14 | Bordeaux | |
10 | 11 | 13 | Bordeaux | |
11 | 14 | 13 | Bordeaux | |
12 | 14 | 14 | Bordeaux | |
13 | 17 | 11 | Bordeaux | |
14 | 18 | 13 | Bordeaux | |
15 | 18 | 14 | Bordeaux | |
16 | 18 | 17 | Bordeaux | |
17 | 21 | 12 | Bordeaux | |
18 | 22 | 14 | Bordeaux | |
19 | 23 | 14 | Bordeaux | |
20 | 26 | 12 | Bordeaux | |
21 | 29 | 9 | Bordeaux | |
22 | 30 | 9 | Bordeaux | |
23 | 33 | 8 | Bordeaux | |
24 | 33 | 10 | Bordeaux | |
25 | 33 | 11 | Bordeaux | |
26 | 36 | 10 | Bordeaux | |
27 | 37 | 10 | Bordeaux | |
28 | 37 | 13 | Bordeaux | |
29 | 38 | 13 | Bordeaux | |
30 | 38 | 14 | Bordeaux | |
31 | 39 | 14 | Bordeaux | |
32 | 42 | 12 | Bordeaux | |
33 | 43 | 12 | Bordeaux | |
34 | 43 | 13 | Bordeaux | |
35 | 44 | 11 | Bordeaux | |
36 | 47 | 11 | Bordeaux | |
37 | 50 | 10 | Bordeaux | |
38 | 50 | 11 | Bordeaux | |
0 | 0 | 14 | Lille | |
1 | 0 | 19 | Lille | |
2 | 1 | 15 | Lille | |
3 | 2 | 16 | Lille | |
4 | 5 | 12 | Lille | |
5 | 6 | 14 | Lille | |
6 | 7 | 16 | Lille | |
7 | 7 | 16 | Lille | |
8 | 7 | 16 | Lille | |
9 | 10 | 15 | Lille | |
10 | 11 | 14 | Lille | |
11 | 11 | 15 | Lille | |
12 | 12 | 16 | Lille | |
13 | 13 | 16 | Lille | |
14 | 14 | 18 | Lille | |
15 | 14 | 18 | Lille | |
16 | 17 | 18 | Lille | |
17 | 20 | 14 | Lille | |
18 | 23 | 12 | Lille | |
19 | 24 | 12 | Lille | |
20 | 25 | 13 | Lille | |
21 | 25 | 15 | Lille | |
22 | 25 | 15 | Lille | |
23 | 26 | 15 | Lille | |
24 | 29 | 14 | Lille | |
25 | 30 | 15 | Lille | |
26 | 31 | 15 | Lille | |
27 | 34 | 14 | Lille | |
28 | 34 | 15 | Lille | |
29 | 37 | 14 | Lille | |
30 | 40 | 9 | Lille | |
31 | 43 | 9 | Lille | |
32 | 46 | 8 | Lille | |
33 | 49 | 7 | Lille | |
34 | 52 | 6 | Lille | |
35 | 53 | 6 | Lille | |
36 | 56 | 6 | Lille | |
37 | 57 | 6 | Lille | |
38 | 60 | 5 | Lille | |
0 | 0 | 15 | Paris SG | |
1 | 3 | 7 | Paris SG | |
2 | 6 | 3 | Paris SG | |
3 | 9 | 1 | Paris SG | |
4 | 12 | 1 | Paris SG | |
5 | 13 | 1 | Paris SG | |
6 | 14 | 1 | Paris SG | |
7 | 17 | 1 | Paris SG | |
8 | 20 | 1 | Paris SG | |
9 | 23 | 1 | Paris SG | |
10 | 26 | 1 | Paris SG | |
11 | 29 | 1 | Paris SG | |
12 | 32 | 1 | Paris SG | |
13 | 35 | 1 | Paris SG | |
14 | 38 | 1 | Paris SG | |
15 | 41 | 1 | Paris SG | |
16 | 42 | 1 | Paris SG | |
17 | 45 | 1 | Paris SG | |
18 | 48 | 1 | Paris SG | |
19 | 51 | 1 | Paris SG | |
20 | 54 | 1 | Paris SG | |
21 | 57 | 1 | Paris SG | |
22 | 60 | 1 | Paris SG | |
23 | 63 | 1 | Paris SG | |
24 | 66 | 1 | Paris SG | |
25 | 69 | 1 | Paris SG | |
26 | 70 | 1 | Paris SG | |
27 | 73 | 1 | Paris SG | |
28 | 73 | 1 | Paris SG | |
29 | 74 | 1 | Paris SG | |
30 | 77 | 1 | Paris SG | |
31 | 77 | 1 | Paris SG | |
32 | 80 | 1 | Paris SG | |
33 | 83 | 1 | Paris SG | |
34 | 86 | 1 | Paris SG | |
35 | 87 | 1 | Paris SG | |
36 | 90 | 1 | Paris SG | |
37 | 93 | 1 | Paris SG | |
38 | 96 | 1 | Paris SG | |
0 | 0 | 16 | Troyes | |
1 | 1 | 10 | Troyes | |
2 | 2 | 12 | Troyes | |
3 | 2 | 17 | Troyes | |
4 | 3 | 17 | Troyes | |
5 | 3 | 18 | Troyes | |
6 | 3 | 18 | Troyes | |
7 | 3 | 18 | Troyes | |
8 | 4 | 19 | Troyes | |
9 | 4 | 19 | Troyes | |
10 | 4 | 19 | Troyes | |
11 | 4 | 20 | Troyes | |
12 | 4 | 20 | Troyes | |
13 | 4 | 20 | Troyes | |
14 | 5 | 20 | Troyes | |
15 | 5 | 20 | Troyes | |
16 | 5 | 20 | Troyes | |
17 | 6 | 20 | Troyes | |
18 | 7 | 20 | Troyes | |
19 | 8 | 20 | Troyes | |
20 | 8 | 20 | Troyes | |
21 | 8 | 20 | Troyes | |
22 | 11 | 20 | Troyes | |
23 | 11 | 20 | Troyes | |
24 | 11 | 20 | Troyes | |
25 | 11 | 20 | Troyes | |
26 | 14 | 20 | Troyes | |
27 | 14 | 20 | Troyes | |
28 | 14 | 20 | Troyes | |
29 | 14 | 20 | Troyes | |
30 | 14 | 20 | Troyes | |
31 | 14 | 20 | Troyes | |
32 | 14 | 20 | Troyes | |
33 | 14 | 20 | Troyes | |
34 | 17 | 20 | Troyes | |
35 | 17 | 20 | Troyes | |
36 | 17 | 20 | Troyes | |
37 | 17 | 20 | Troyes | |
38 | 18 | 20 | Troyes | |
0 | 0 | 17 | Lyon | |
1 | 1 | 11 | Lyon | |
2 | 4 | 8 | Lyon | |
3 | 4 | 10 | Lyon | |
4 | 7 | 8 | Lyon | |
5 | 8 | 8 | Lyon | |
6 | 9 | 8 | Lyon | |
7 | 12 | 7 | Lyon | |
8 | 12 | 9 | Lyon | |
9 | 15 | 7 | Lyon | |
10 | 16 | 8 | Lyon | |
11 | 19 | 6 | Lyon | |
12 | 22 | 4 | Lyon | |
13 | 25 | 2 | Lyon | |
14 | 25 | 3 | Lyon | |
15 | 25 | 5 | Lyon | |
16 | 26 | 4 | Lyon | |
17 | 26 | 6 | Lyon | |
18 | 26 | 6 | Lyon | |
19 | 26 | 9 | Lyon | |
20 | 29 | 7 | Lyon | |
21 | 29 | 10 | Lyon | |
22 | 30 | 10 | Lyon | |
23 | 30 | 12 | Lyon | |
24 | 33 | 11 | Lyon | |
25 | 36 | 8 | Lyon | |
26 | 39 | 6 | Lyon | |
27 | 39 | 7 | Lyon | |
28 | 42 | 4 | Lyon | |
29 | 45 | 3 | Lyon | |
30 | 46 | 4 | Lyon | |
31 | 49 | 4 | Lyon | |
32 | 52 | 3 | Lyon | |
33 | 55 | 3 | Lyon | |
34 | 56 | 3 | Lyon | |
35 | 59 | 3 | Lyon | |
36 | 62 | 3 | Lyon | |
37 | 65 | 2 | Lyon | |
38 | 65 | 3 | Lyon | |
0 | 0 | 18 | Nice | |
1 | 0 | 20 | Nice | |
2 | 1 | 16 | Nice | |
3 | 4 | 11 | Nice | |
4 | 5 | 13 | Nice | |
5 | 5 | 16 | Nice | |
6 | 8 | 11 | Nice | |
7 | 11 | 10 | Nice | |
8 | 14 | 7 | Nice | |
9 | 14 | 9 | Nice | |
10 | 17 | 5 | Nice | |
11 | 17 | 9 | Nice | |
12 | 18 | 8 | Nice | |
13 | 21 | 6 | Nice | |
14 | 24 | 4 | Nice | |
15 | 24 | 7 | Nice | |
16 | 25 | 7 | Nice | |
17 | 25 | 8 | Nice | |
18 | 26 | 7 | Nice | |
19 | 29 | 6 | Nice | |
20 | 30 | 5 | Nice | |
21 | 33 | 4 | Nice | |
22 | 36 | 3 | Nice | |
23 | 36 | 5 | Nice | |
24 | 39 | 3 | Nice | |
25 | 39 | 4 | Nice | |
26 | 40 | 4 | Nice | |
27 | 41 | 4 | Nice | |
28 | 41 | 8 | Nice | |
29 | 44 | 5 | Nice | |
30 | 47 | 3 | Nice | |
31 | 50 | 3 | Nice | |
32 | 50 | 5 | Nice | |
33 | 53 | 4 | Nice | |
34 | 54 | 5 | Nice | |
35 | 57 | 5 | Nice | |
36 | 57 | 5 | Nice | |
37 | 60 | 4 | Nice | |
38 | 63 | 4 | Nice | |
0 | 0 | 19 | Toulouse | |
1 | 3 | 8 | Toulouse | |
2 | 3 | 10 | Toulouse | |
3 | 4 | 12 | Toulouse | |
4 | 4 | 14 | Toulouse | |
5 | 5 | 17 | Toulouse | |
6 | 6 | 17 | Toulouse | |
7 | 7 | 17 | Toulouse | |
8 | 7 | 17 | Toulouse | |
9 | 8 | 17 | Toulouse | |
10 | 8 | 17 | Toulouse | |
11 | 8 | 18 | Toulouse | |
12 | 9 | 18 | Toulouse | |
13 | 9 | 19 | Toulouse | |
14 | 9 | 19 | Toulouse | |
15 | 12 | 19 | Toulouse | |
16 | 15 | 19 | Toulouse | |
17 | 15 | 19 | Toulouse | |
18 | 16 | 19 | Toulouse | |
19 | 17 | 19 | Toulouse | |
20 | 20 | 19 | Toulouse | |
21 | 20 | 19 | Toulouse | |
22 | 20 | 19 | Toulouse | |
23 | 20 | 19 | Toulouse | |
24 | 20 | 19 | Toulouse | |
25 | 21 | 19 | Toulouse | |
26 | 21 | 19 | Toulouse | |
27 | 22 | 19 | Toulouse | |
28 | 22 | 19 | Toulouse | |
29 | 23 | 19 | Toulouse | |
30 | 26 | 19 | Toulouse | |
31 | 26 | 19 | Toulouse | |
32 | 29 | 19 | Toulouse | |
33 | 32 | 19 | Toulouse | |
34 | 33 | 19 | Toulouse | |
35 | 33 | 19 | Toulouse | |
36 | 34 | 19 | Toulouse | |
37 | 37 | 17 | Toulouse | |
38 | 40 | 17 | Toulouse | |
0 | 0 | 20 | Gaz. Ajaccio | |
1 | 1 | 12 | Gaz. Ajaccio | |
2 | 1 | 17 | Gaz. Ajaccio | |
3 | 1 | 18 | Gaz. Ajaccio | |
4 | 1 | 20 | Gaz. Ajaccio | |
5 | 1 | 20 | Gaz. Ajaccio | |
6 | 1 | 20 | Gaz. Ajaccio | |
7 | 2 | 19 | Gaz. Ajaccio | |
8 | 2 | 20 | Gaz. Ajaccio | |
9 | 3 | 20 | Gaz. Ajaccio | |
10 | 3 | 20 | Gaz. Ajaccio | |
11 | 6 | 19 | Gaz. Ajaccio | |
12 | 9 | 19 | Gaz. Ajaccio | |
13 | 12 | 18 | Gaz. Ajaccio | |
14 | 15 | 16 | Gaz. Ajaccio | |
15 | 16 | 16 | Gaz. Ajaccio | |
16 | 19 | 14 | Gaz. Ajaccio | |
17 | 20 | 15 | Gaz. Ajaccio | |
18 | 21 | 16 | Gaz. Ajaccio | |
19 | 24 | 13 | Gaz. Ajaccio | |
20 | 25 | 14 | Gaz. Ajaccio | |
21 | 26 | 13 | Gaz. Ajaccio | |
22 | 26 | 13 | Gaz. Ajaccio | |
23 | 26 | 16 | Gaz. Ajaccio | |
24 | 26 | 17 | Gaz. Ajaccio | |
25 | 27 | 17 | Gaz. Ajaccio | |
26 | 27 | 18 | Gaz. Ajaccio | |
27 | 28 | 18 | Gaz. Ajaccio | |
28 | 29 | 18 | Gaz. Ajaccio | |
29 | 30 | 18 | Gaz. Ajaccio | |
30 | 33 | 18 | Gaz. Ajaccio | |
31 | 33 | 18 | Gaz. Ajaccio | |
32 | 33 | 18 | Gaz. Ajaccio | |
33 | 34 | 18 | Gaz. Ajaccio | |
34 | 34 | 18 | Gaz. Ajaccio | |
35 | 37 | 17 | Gaz. Ajaccio | |
36 | 37 | 17 | Gaz. Ajaccio | |
37 | 37 | 18 | Gaz. Ajaccio | |
38 | 37 | 19 | Gaz. Ajaccio |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment