Skip to content

Instantly share code, notes, and snippets.

@puzzler10
Last active May 30, 2016 10:50
Show Gist options
  • Save puzzler10/2e6f4749a8c8b973e5aa8a304917e734 to your computer and use it in GitHub Desktop.
Save puzzler10/2e6f4749a8c8b973e5aa8a304917e734 to your computer and use it in GitHub Desktop.
Simple Line Graph
height: 700
<!DOCTYPE html>
<meta charset="utf-8">
<html>
<head>
<script src="//d3js.org/d3.v3.min.js"></script>
<style>
.axis text {
font: 10px sans-serif;
}
.axis path,
.axis line {
fill: none;
stroke: #000;
shape-rendering: crispEdges;
}
.line {
fill: none;
stroke: steelblue;
stroke-width: 1.5px;
}
.title {
font: 14px sans-serif;
font-weight: bold;
}
.label{
font: 13px sans-serif;
}
</style>
</head>
<body>
<script>
//http://www.d3noob.org/2014/07/my-favourite-tooltip-method-for-line.html
var margin = { top:60, bottom:40, left:50, right:150 }
var width = 960 - margin.left - margin.right
height = 700 - margin.top - margin.bottom
var x = d3.scale.linear()
.range([0,width]);
var y = d3.scale.linear()
.range([height,0]);
var xAxis = d3.svg.axis()
.scale(x)
.orient("bottom")
.tickSize(16,0)
//.ticks(d3.time.weeks) //If we wanted different x-axis labels
var yAxis = d3.svg.axis()
.scale(y)
.orient("left");
var parseDate = d3.time.format("%d/%m/%Y").parse;
var formatDate = d3.time.format("%d-%b");
//Bisector finds a value in an ordered array
//It will be returning a date that falls to the left of the mouse cursor
var bisectDate = d3.bisector(function(d) { return d.bet_no; }).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 + ")");
//x label
svg.append("g")
.attr("class", "x label")
.append("text")
.text("Number of bets")
.attr("transform", "translate("+(width- margin.left)/2+"," + (height + margin.bottom) +")");
//y label
svg.append("g")
.attr("class", "y label")
.append("text")
.text("Total profit ($)")
.attr("transform", "rotate(-90)")
.attr("y", 0 - margin.left)
.attr("x", -((height+ margin.top + margin.bottom) / 2))
.attr("dy", ".71em");
//graph title
svg.append("g")
.attr("class","title")
.append("text")
.attr("x", width/2)
.attr("y", 0- (margin.top / 2))
.attr("text-anchor", "middle")
.text("Bet performance over time")
var valueline = d3.svg.line()
.x(function (d) {return x(d.bet_no);})
.y(function(d) {return y(d.cumulative);});
//this will add the line for the graph
var lineSvg = svg.append("g");
//this will add our tooltip elements
var focus = svg.append("g")
.style("display", "none");
d3.csv("trial_betting.csv", type, function(data){
x.domain(d3.extent(data,function (d) { return d.bet_no }));
y.domain(d3.extent(data, function(d) { return d.cumulative}));
// Add the valueline path.
lineSvg.append("path")
.attr("class", "line")
.attr("d", valueline(data));
//Add x-line
focus.append("line")
.attr("class","x")
.style("stroke","blue")
.style("stroke-dasharray","3,3")
.style("opacity", 0.5)
.attr("y1", 0)
.attr("y2", height);
//Add y-line
focus.append("line")
.attr("class", "y")
.style("stroke","blue")
.style("stroke-dasharray", "3,3")
.style("opacity", 0.5)
.attr("x1", width)
.attr("x2", width);
// Add circle to graph
focus.append("circle")
.attr("class","y")
.style("fill", "none")
.style("stroke", "blue")
.attr("r",4);
//Add text at circle - our profit/loss for each bet
focus.append("text")
.attr("class", "y1")
//we add a white drop-shadow so that we can read the text easier
.style("stroke", "white")
.style("stroke-width", "3.5px")
.style("opacity", 0.8)
.style("font", "12px sans-serif")
.attr("dx",8)
.attr("dy", "-.3em");
focus.append("text")
.attr("class", "y2")
//black text
.style("font", "12px sans-serif")
.attr("dx", 8)
.attr("dy", "-.3em");
//date
focus.append("text")
.attr("class", "y3")
//white drop-shadowr
.style("stroke", "white")
.style("stroke-width", "3.5px")
.style("opacity", 0.8)
.style("font", "12px sans-serif")
.attr("dx",8)
.attr("dy", "1em");
focus.append("text")
//black text
.attr("class", "y4")
.attr("dx", 8)
.attr("dy", "1em")
.style("font", "12px sans-serif");
//Set the area to capture mouse movements
svg.append("rect")
.attr("width",width)
.attr("height", height)
.style("fill","none")
.style("pointer-events", "all") //if any mouse movements occur in the area, we capture them
//makes us display stuff on mouseover
.on("mouseover", function() {focus.style("display", null);} ) //display properties of the "focus" elements revert to the default property of "inline"
//take away what we displayed on mouseout
.on("mouseout", function() {focus.style("display", "none"); } )
.on("mousemove", mousemove)
function mousemove() {
//determine which date will be highlighted
//d3.mouse(this)[0] returns x-position of mouse, while d3.mouse(this)[1] returns y-position
//invert function reverses the process for mapping data points to x and y values. Instead, we map x and y values to data points!
var x0 = x.invert(d3.mouse(this)[0]),
//find index of data array closest to mouse cursor
//returns index number of first date higher than cursor position
i = bisectDate(data, x0, 1),
//two variables holding dates above and below the cursor value
d0 = data[i-1],
d1 = data[i],
//declares a new array d that holds whichever data point the cursor is closest to
d = x0 - d0.bet_no > d1.bet_no - x0 ? d1: d0;
//move circle to appropriate position
focus.select("circle.y")
.attr("transform","translate(" + x(d.bet_no) + "," + y(d.cumulative) + ")" );
focus.select("text.y1")
.attr("transform","translate(" + x(d.bet_no) + "," + y(d.cumulative) + ")" )
.text("Change ($): " + d.profit_loss);
focus.select("text.y2")
.attr("transform","translate(" + x(d.bet_no) + "," + y(d.cumulative) + ")" )
.text("Change ($): " + d.profit_loss);
focus.select("text.y3")
.attr("transform","translate(" + x(d.bet_no) + "," + y(d.cumulative) + ")" )
.text("Date " + formatDate(d.date));
focus.select("text.y4")
.attr("transform","translate(" + x(d.bet_no) + "," + y(d.cumulative) + ")" )
.text("Date: " + formatDate(d.date));
focus.select(".x")
.attr("transform","translate(" + x(d.bet_no) + "," + y(d.cumulative) + ")" )
.attr("y2", height - y(d.cumulative));
focus.select(".y")
.attr("transform","translate(" + width * -1 + "," + y(d.cumulative) + ")" )
.attr("x2", width + width);
}
svg.append("g")
.attr("class", "x axis")
.attr("transform", "translate(0," + height + ")")
.call(xAxis)
.selectAll(".tick text")
.style("text-anchor", "start")
.attr("x", 6)
.attr("y", 6);
svg.append("g")
.attr("class", "y axis")
.call(yAxis);
});
//accessor function that cleans the data
function type(d) {
d.cumulative = +d.cumulative;
d.date = parseDate(d.date);
d.bet_no = +d.bet_no;
d.profit_loss = +d.profit_loss;
return d
}
</script>
</body>
</html>
date type tournament_name name Opp next_match betting_next_match value betsize result profit_loss cumulative bet_no
15/03/2016 Challenger KazanChallenger Matteo Viola 2.849 4.4 1.544401544 50 L -50 -50 1
15/03/2016 Challenger GuangzhouChallenger Luke Saville 1.905 2.722 1.428871391 50 L -50 -100 2
15/03/2016 Challenger GuadalajaraChallenger Hans Hach Verdugo 2.028 4.3 2.120315582 50 L -50 -150 3
15/03/2016 Challenger GuadalajaraChallenger Matteo Donati 1.101 1.417 1.287011807 50 L -50 -200 4
15/03/2016 Challenger DrummondvilleChallenger Winston Lin 1.605 3.75 2.336448598 50 L -50 -250 5
15/03/2016 Challenger DrummondvilleChallenger Denis Shapovalov 1.675 2.75 1.641791045 50 W 87.5 -162.5 6
15/03/2016 Challenger DrummondvilleChallenger Benjamin Mitchell 1.307 2.024 1.548584545 50 L -50 -212.5 7 Result so far: -575.9
15/03/2016 Challenger DrummondvilleChallenger Nicolas Jarry 1.515 2.1 1.386138614 50 W 55 -157.5 8
15/03/2016 Challenger DrummondvilleChallenger Frank Dancevic 2.092 2.769 1.323613767 50 W 88.45 -69.05 9
15/03/2016 Challenger DrummondvilleChallenger Edward Corrie 1.115 1.467 1.315695067 50 W 23.35 -45.7 10
15/03/2016 Challenger DrummondvilleChallenger Philip Bester 2.247 2.833 1.260792167 50 W 91.65 45.95 11
15/03/2016 World Tour ATPIndianWells Steve Johnson 3.413 6 1.757984178 50 L -50 -4.05 12
15/03/2016 World Tour ATPIndianWells Jack Sock 1.621 2.412 1.487970389 50 L -50 -54.05 13
15/03/2016 World Tour ATPIndianWells Feliciano Lopez 1.704 2.5 1.46713615 50 W 75 20.95 14
15/03/2016 World Tour ATPIndianWells Adrian Mannarino 3.448 5 1.450116009 50 L -50 -29.05 15
16/03/2016 Challenger IrvingChallenger Jakob Sude 6.711 13 1.937118164 50 L -50 -79.05 16
16/03/2016 Challenger IrvingChallenger Benjamin Becker 1.408 1.909 1.355823864 50 L -50 -129.05 17
16/03/2016 Challenger IrvingChallenger Michael Berrer 1.534 2 1.303780965 50 L -50 -179.05 18
16/03/2016 Challenger IrvingChallenger Philipp Petzschner 3.436 4.333 1.261059371 50 L -50 -229.05 19
16/03/2016 Challenger DrummondvilleChallenger Frank Dancevic 2.092 2.769 1.323613767 50 W 88.45 -140.6 20
16/03/2016 World Tour ATPIndianWells Tomas Berdych 1.818 2.8 1.540154015 50 L -50 -190.6 21
17/03/2016 Challenger KazanChallenger Norbert Gombos Alexandre Sidorenko 1.202 1.769 1.47171381 50 L -50 -240.6 22
17/03/2016 Challenger IrvingChallenger Giovanni Lapentti Francis Tiafoe 2.183 3.8 1.740723775 50 L -50 -290.6 23
17/03/2016 Challenger IrvingChallenger Aljaz Bedene Dmitry Tursunov 1.244 1.8 1.446945338 50 W 40 -250.6 24
17/03/2016 Challenger IrvingChallenger Michael Venus Jared Donaldson 3.663 5.2 1.41960142 50 L -50 -300.6 25
17/03/2016 Challenger IrvingChallenger Evgeny Donskoy Andrey Rublev 1.524 2.154 1.413385827 50 L -50 -350.6 26
17/03/2016 World Tour ATPIndianWells Gael Monfils Milos Raonic 2.203 3.5 1.588742624 50 L -50 -400.6 27
18/03/2016 Challenger KazanChallenger Aslan Karatsev Karen Khachanov 2.033 3.25 1.598622725 50 W 112.5 -288.1 28
18/03/2016 Challenger IrvingChallenger Jared Donaldson Andrey Rublev 1.468 2.278 1.551771117 50 W 63.9 -224.2 29
18/03/2016 Challenger IrvingChallenger Aljaz Bedene Francis Tiafoe 1.339 1.769 1.321135176 50 W 38.45 -185.75 30
18/03/2016 Challenger GuadalajaraChallenger Dennis Novikov Stephane Robert 1.529 2.1 1.373446697 50 L -50 -235.75 31
18/03/2016 Challenger GuadalajaraChallenger Alejandro Gonzalez Alexander Sarkissian 1.357 1.727 1.27266028 50 L -50 -285.75 32
18/03/2016 Challenger DrummondvilleChallenger Denis Shapovalov Renzo Olivo 2.092 2.75 1.314531549 50 W 87.5 -198.25 33
20/03/2016 Challenger KazanChallenger Aslan Karatsev Tobias Kamke 1.883 2.647 1.405735528 50 L -50 -248.25 34
20/03/2016 Challenger GuangzhouChallenger Nikoloz Basilashvili Franco Skugor 1.316 2.154 1.636778116 50 W 57.7 -190.55 35
20/03/2016 Challenger GuangzhouChallenger Marsel Ilhan Lukas Lacko 2.07 3.1 1.497584541 50 L -50 -240.55 36
21/03/2016 Challenger ShenzhenChallenger Xi Qi Peter Gojowczyk 4.525 21 4.640883978 50 L -50 -290.55 37
21/03/2016 Challenger ShenzhenChallenger Fajing Sun Go Soeda 4.082 17 4.164625184 50 L -50 -340.55 38
21/03/2016 Challenger ShenzhenChallenger Saketh Myneni Lukas Lacko 2.174 2.8 1.287948482 50 W 90 -250.55 39
21/03/2016 Challenger ShenzhenChallenger Di Wu Filip Krajinovic 2.179 2.75 1.262046811 50 W 87.5 -163.05 40
21/03/2016 Challenger SanLuisPotosiChallenger Federico Gaio Michael Berrer 2.132 3.8 1.782363978 50 W 140 -23.05 41
21/03/2016 Challenger SanLuisPotosiChallenger Dennis Novak Andre Ghem 2.183 3.2 1.465872652 50 L -50 -73.05 42
21/03/2016 Challenger SanLuisPotosiChallenger Lucas Gomez Dmitry Popko 2.433 3.524 1.448417592 50 W 126.2 53.15 43
21/03/2016 Challenger SanLuisPotosiChallenger Nicolas Barrientos Mathais Bourgue 2.262 3.25 1.436781609 50 L -50 3.15 44
23/03/2016 Challenger SanLuisPotosiChallenger Pedja Krstin Mathias Bourgue 1.969 2.75 1.396648045 50 W 87.5 90.65 45
23/03/2016 World Tour ATPMiami Guido Pella Juan Martin Del Potro 1.447 3.75 2.591568763 50 L -50 40.65 46
23/03/2016 World Tour ATPMiami Elias Ymer Federico Delbonis 1.786 3.583 2.006159015 50 L -50 -9.35 47
23/03/2016 World Tour ATPMiami Denis Istomin Borna Coric 2.237 3.316 1.482342423 50 W 115.8 106.45 48
23/03/2016 World Tour ATPMiami Denis Kudla Hyeon Chung 2.232 3.118 1.396953405 50 W 105.9 212.35 49
23/03/2016 World Tour ATPMiami John Millman Pablo Carreno Busta 1.585 2.167 1.367192429 50 W 58.35 270.7 50
23/03/2016 World Tour ATPMiami Damir Dzumhur Leonardo Mayer 3.012 4.1 1.36122178 50 W 155 425.7 51
23/03/2016 World Tour ATPMiami Donald Young Andreas Seppi 1.908 2.533 1.327568134 50 L -50 375.7 52
23/03/2016 World Tour ATPMiami Vasek Pospisil Diego Sebastian Schwartzman 1.277 1.625 1.272513704 50 W 31.25 406.95 53
25/03/2016 Challenger ShenzhenChallenger Jordan Thompson Thomas Fabbiano 1.767 2.375 1.344086022 50 L -50 356.95 54
26/03/2016 Challenger ShenzhenChallenger Di Wu Thomas Fabbiano 1.976 2.875 1.454959514 50 W 93.75 450.7 55
26/03/2016 World Tour ATPMiami Denis Kudla Milos Raonic 3.922 7.3 1.861295258 50 L -50 400.7 56
26/03/2016 World Tour ATPMiami Aljaz Bedene Roberto Bautista Agut 2.364 4.1 1.734348562 50 L -50 350.7 57 Ret
26/03/2016 World Tour ATPMiami Thomaz Bellucci Mikhail Kukushkin 2.137 3 1.403837155 50 L -50 300.7 58 Ret
26/03/2016 World Tour ATPMiami Tatsuma Ito Gael Monfils 4.292 6 1.397949674 50 L -50 250.7 59
26/03/2016 World Tour ATPMiami Marcos Baghdatis Nick Kyrgios 2.353 3.263 1.386740332 50 L -50 200.7 60
26/03/2016 World Tour ATPMiami Tim Smyczek John Isner 4.525 6.053 1.337679558 50 W 252.65 453.35 61
26/03/2016 World Tour ATPMiami Adrian Mannarino Sam Querrey 2.123 2.722 1.282147904 50 W 86.1 539.45 62
26/03/2016 World Tour ATPMiami Santiago Giraldo Jo Wilfried Tsonga 5.917 7.5 1.267534223 50 L -50 489.45 63
27/03/2016 Challenger ShenzhenChallenger Di Wu Dudi Sela 2.457 4.053 1.64957265 50 L -50 439.45 64
28/03/2016 World Tour ATPMiami Lucas Pouille David Ferrer 4.219 7 1.659160939 50 W 300 739.45 65
28/03/2016 World Tour ATPMiami Jack Sock Milos Raonic 2.101 3.375 1.606377915 50 L -50 689.45 66
28/03/2016 World Tour ATPMiami Adrian Mannarino Andrey Kuznetsov 1.901 2.6 1.36770121 50 L -50 639.45 67
28/03/2016 World Tour ATPMiami Tim Smyczek Nick Kyrgios 4.31 5.8 1.345707657 50 L -50 589.45 68
28/03/2016 World Tour ATPMiami Grigor Dimitrov Andy Murray 3.226 4.333 1.343149411 50 W 166.65 756.1 69
29/03/2016 Challenger St.BrieucChallenger Ramkumar Ramanathan Tobias Kamke 2.488 4.545 1.826768489 50 L -50 706.1 70
29/03/2016 Challenger RaananaChallenger Dekel Bar Thomas Fabbiano 3.472 14 4.032258065 50 L -50 656.1 71
29/03/2016 Challenger RaananaChallenger Daniel Cukierman Evgeny Donskoy 4.425 15 3.389830509 50 L -50 606.1 72
29/03/2016 Challenger RaananaChallenger Edan Leshem Amir Weintraub 2.681 6 2.237970906 50 L -50 556.1 73
29/03/2016 Challenger RaananaChallenger Roberto Marcora Alexis Musialek 1.121 2 1.78412132 50 W 50 606.1 74
29/03/2016 Challenger RaananaChallenger Ivan Nedelko Konstantin Kravchuk 4.132 6 1.452081317 50 L -50 556.1 75
29/03/2016 Challenger LeonChallenger Hans Hach Verdugo Malek Jaziri 4.292 8.5 1.980428705 50 L -50 506.1 76
29/03/2016 Challenger LeonChallenger Daniel Nguyen Pedro Cachin 1.418 2.25 1.58674189 50 W 62.5 568.6 77
29/03/2016 Challenger LeonChallenger Jason Jung Joao Souza 1.623 2.154 1.327171904 50 L -50 518.6 78
29/03/2016 Challenger LeonChallenger Michael Berrer Alexander Sarkissian 1.3 1.655 1.273076923 50 W 32.75 551.35 79
29/03/2016 World Tour ATPMiami Damir Dzumhur Milos Raonic 5.376 8.7 1.618303571 50 L -50 501.35 80
29/03/2016 World Tour ATPMiami Horacio Zeballos David Goffin 5.405 8.7 1.609620722 50 L -50 451.35 81
30/03/2016 Challenger St.BrieucChallenger David Guez Edward Corrie 1.385 2.25 1.624548737 50 W 62.5 513.85 82
30/03/2016 Challenger St.BrieucChallenger Egor Gerasimov Alexandre Sidorenko 1.175 1.5 1.276595745 50 L -50 463.85 83
30/03/2016 Challenger St.BrieucChallenger Luca Vanni Gleb Sakharov 1.098 1.375 1.252276867 50 L -50 413.85 84
30/03/2016 Challenger LeonChallenger Agustin Velotti Taylor Harry Fritz 2.41 6.5 2.697095436 50 W 275 688.85 85
30/03/2016 Challenger LeonChallenger Emilio Gomez Robin Stanek 1.326 2.455 1.851432881 50 L -50 638.85 86
30/03/2016 World Tour ATPMiami Gilles Simon David Goffin 1.639 2.1 1.281269067 50 L -50 588.85 87
31/03/2016 Challenger St.BrieucChallenger Germain Gigounon Gleb Sakharov 1.229 2.2 1.79007323 50 L -50 538.85 88
31/03/2016 Challenger St.BrieucChallenger David Guez Daniel Evans 2.193 3.5 1.595987232 50 L -50 488.85 89
31/03/2016 Challenger St.BrieucChallenger Aleksandr Nedovyesov Karen Khachanov 2.179 3.4 1.560348784 50 W 120 608.85 90
31/03/2016 Challenger St.BrieucChallenger Federico Gaio Remi Boutillier 1.842 2.7 1.465798046 50 W 85 693.85 91
31/03/2016 Challenger St.BrieucChallenger Aslan Karatsev Alexandre Sidorenko 1.193 1.727 1.447611065 50 L -50 643.85 92
31/03/2016 Challenger RaananaChallenger Roberto Marcora Thomas Fabbiano 2.597 4.5 1.732768579 50 L -50 593.85 93
31/03/2016 Challenger RaananaChallenger Denys Molchanov Ricardas Berankis 2.674 4.333 1.620418848 50 L -50 543.85 94 Ret (1 set completed)
31/03/2016 Challenger RaananaChallenger Blaz Rola Dudi Sela 2.326 3.5 1.504729149 50 L -50 493.85 95
31/03/2016 Challenger RaananaChallenger Frederik Nielsen Marco Chiudinelli 2.16 2.8 1.296296296 50 L -50 443.85 96
31/03/2016 Challenger RaananaChallenger Evgeny Donskoy Daniil Medvedev 1.188 1.533 1.29040404 50 W 26.65 470.5 97
31/03/2016 Challenger LeonChallenger Daniel Nguyen Pedja Krstin 1.661 2.625 1.580373269 50 W 81.25 551.75 98
31/03/2016 Challenger LeonChallenger Agustin Velotti Caio Zampieri 1.328 1.667 1.255271084 50 L -50 501.75 99
31/03/2016 Challenger LeonChallenger Alejandro Gonzalez Robin Stanek 1.152 1.444 1.253472222 50 W 22.2 523.95 100
1/04/2016 Challenger RaananaChallenger Ti Chen Thomas Fabbiano 2.075 4.5 2.168674699 50 L -50 473.95 101
1/04/2016 Challenger RaananaChallenger Amir Weintraub Dudi Sela 3.195 4.4 1.3771518 50 L -50 423.95 102
1/04/2016 Challenger LeonChallenger Daniel Nguyen Alejandro Gonzalez 2.188 2.857 1.305758684 50 W 92.85 516.8 103
2/04/2016 Challenger St.BrieucChallenger Aleksandr Nedovyesov Alexandre Sidorenko 1.22 1.846 1.513114754 50 L -50 466.8 104
2/04/2016 Challenger LeonChallenger Daniel Nguyen Michael Berrer 2.41 3.583 1.486721992 50 L -50 416.8 105
3/04/2016 Challenger St.BrieucChallenger Igor Sijsling Alexandre Sidorenko 1.183 1.533 1.295857988 50 L -50 366.8 106
4/04/2016 Challenger NapoliChallenger Uladzimir Ignatik Thomas Fabbiano 1.976 3.263 1.65131579 50 W 113.15 479.95 107
4/04/2016 Challenger NapoliChallenger Federico Gaio Roberto Carballes Baena 2.188 3.25 1.485374772 50 L -50 429.95 108
4/04/2016 Challenger NapoliChallenger Igor Sijsling Gastao Elian 2.033 3 1.475651746 50 L -50 379.95 109
4/04/2016 Challenger NapoliChallenger Adrian Ungur Alexandre Sidorenko 1.178 1.611 1.367572156 50 W 30.55 410.5 110
4/04/2016 Challenger LeGosierChallenger Gianni Mina Felix Auger Aliassime 1.178 2.8 2.376910017 50 W 90 500.5 111 Ret 2 sets played
4/04/2016 Challenger LeGosierChallenger Yannick Mertens Taylor Harry Fritz 2.088 4.25 2.035440613 50 L -50 450.5 112
4/04/2016 Challenger LeGosierChallenger Jorge Montero Gonzalo Lama 2.208 3.545 1.605525362 50 L -50 400.5 113
4/04/2016 Challenger LeGosierChallenger Julien Dubail Tatsuma Ito 3.861 5.6 1.45040145 50 L -50 350.5 114
4/04/2016 Challenger LeGosierChallenger Adrien Puget Constant Lestienne 1.838 2.545 1.384657236 50 L -50 300.5 115
4/04/2016 Challenger LeGosierChallenger Omar Jasika Joao Souza 1.927 2.625 1.362221069 50 W 81.25 381.75 116
4/04/2016 Challenger LeGosierChallenger Emilio Gomez Rajeev Ram 3.559 4.545 1.277044114 50 L -50 331.75 117
4/04/2016 World Tour ATPMarrakech Amine Ahouda Thiemo De Bakker 1.957 24 12.26366888 50 L -50 281.75 118
4/04/2016 World Tour ATPMarrakech Reda El Amrani Nikola Mektic 1.712 6.5 3.796728972 50 L -50 231.75 119
4/04/2016 World Tour ATPMarrakech Radu Albot Nicolas Almagro 3.759 4.8 1.276935355 50 L -50 181.75 120
4/04/2016 World Tour ATPMarrakech Lamine Ouahab Facundo Bagnis 2.299 2.889 1.256633319 50 L -50 131.75 121
4/04/2016 World Tour ATPHouston Marcos Baghdatis Diego Sebastian Schwartzman 1.577 2.571 1.630310717 50 W 78.55 210.3 122
4/04/2016 World Tour ATPHouston Lukas Lacko Dmitry Tursunov 1.988 2.889 1.453219316 50 W 94.45 304.75 123
4/04/2016 World Tour ATPHouston Paolo Lorenzi Tommy Paul 1.337 1.7 1.271503366 50 L -50 254.75 124
4/04/2016 World Tour ATPHouston Donald Young Steve Johnson 2.392 3 1.254180602 50 W 100 354.75 125
6/04/2016 Challenger NapoliChallenger Stefano Napolitano Gastao Elias 2.525 3.6 1.425742574 50 L -50 304.75 126
6/04/2016 Challenger LeGosierChallenger Gonzalo Lama Taylor Harry Fritz 2.445 6.5 2.658486708 50 L -50 254.75 127
6/04/2016 World Tour ATPMarrakech Evgeny Donskoy Pablo Carreno Busta 2.203 4.053 1.839763958 50 L -50 204.75 128
7/04/2016 Challenger LeGosierChallenger Omar Jasika Thiago Monteiro 1.429 2.235 1.564030791 50 L -50 154.75 129
7/04/2016 World Tour ATPMarrakech Denis Istomin Pablo Carreno Busta 1.642 3.722 2.266747869 50 L -50 104.75 130
7/04/2016 World Tour ATPMarrakech Nikola Mektic Jiri Vesely 3.077 5.8 1.884952876 50 L -50 54.75 131
7/04/2016 World Tour ATPMarrakech Thiemo De Bakker Federico Delbonis 2.577 4.5 1.746216531 50 L -50 4.75 132
8/04/2016 Challenger LeGosierChallenger Tatsuma Ito Taylor Harry Fritz 1.61 3.8 2.360248447 50 L -50 -45.25 133
8/04/2016 Challenger LeGosierChallenger Malek Jaziri Thiago Monteiro 1.183 1.6 1.35249366 50 W 30 -15.25 134
9/04/2016 World Tour ATPMarrakech Albert Montanes Federico Delbonis 2.584 4.4 1.702786378 50 L -50 -65.25 135
10/04/2016 World Tour ATPMarrakech Borna Coric Federico Delbonis 1.764 2.611 1.48015873 50 L -50 -115.25 136
11/04/2016 Challenger SarasotaChallenger Connor Smith Facundo Arguello 3.676 4.75 1.292165397 50 L -50 -165.25 137
11/04/2016 Challenger SarasotaChallenger Denis Kudla Noah Rubin 1.179 1.5 1.272264631 50 L -50 -215.25 138
11/04/2016 Challenger SarasotaChallenger Henri Laaksonen Diego Sebastian Schwartzman 1.252 1.571 1.254792332 50 W 28.55 -186.7 139
11/04/2016 Challenger GwangjuChallenger Wishaya Trongcharoenchaikul Grega Zemlja 2.857 8 2.800140007 50 L -50 -236.7 140
11/04/2016 Challenger GwangjuChallenger Daniel Yoo Tatsuma Ito 3.861 7.5 1.942501943 50 L -50 -286.7 141
11/04/2016 Challenger GwangjuChallenger Di Wu Seong Chan Hong 1.029 1.615 1.569484937 50 W 30.75 -255.95 142
11/04/2016 Challenger GwangjuChallenger Matt Reid Sam Barry 1.198 1.8 1.502504174 50 W 40 -215.95 143
11/04/2016 Challenger GwangjuChallenger Liam Broady Cheong Eui Kim 1.059 1.571 1.483474976 50 W 28.55 -187.4 144
11/04/2016 Challenger GwangjuChallenger Zhe Li Duck Hee Lee 2.123 3.043 1.433349034 50 L -50 -237.4 145
11/04/2016 Challenger GwangjuChallenger Michal Przysiezny Go Soeda 2.083 2.875 1.380220835 50 W 93.75 -143.65 146
11/04/2016 Challenger GwangjuChallenger Gavin Van Peperzeel Young Seok Kim 1.408 1.909 1.355823864 50 W 45.45 -98.2 147
11/04/2016 World Tour ATPMonteCarlo Marco Cecchinato Milos Raonic 5.076 13.25 2.610323089 50 L -50 -148.2 148
11/04/2016 World Tour ATPMonteCarlo Ivo Karlovic Joao Sousa 1.6 3.722 2.32625 50 L -50 -198.2 149
11/04/2016 World Tour ATPMonteCarlo Feliciano Lopez David Goffin 1.77 3.75 2.118644068 50 L -50 -248.2 150
11/04/2016 World Tour ATPMonteCarlo Stephane Robert Pablo Carreno Busta 2.273 3.722 1.637483502 50 L -50 -298.2 151
11/04/2016 World Tour ATPMonteCarlo Borna Coric Philipp Kohlschreiber 2.146 3.25 1.51444548 50 L -50 -348.2 152
11/04/2016 World Tour ATPMonteCarlo Teymuraz Gabashvili Jiri Vesely 1.912 2.875 1.503661088 50 L -50 -398.2 153
11/04/2016 World Tour ATPMonteCarlo Robin Haase Damir Dzumhur 1.736 2.429 1.399193548 50 L -50 -448.2 154
11/04/2016 World Tour ATPMonteCarlo Gilles Muller Gael Monfils 4.695 6 1.277955272 50 L -50 -498.2 155
11/04/2016 World Tour ATPMonteCarlo Nicolas Mahut Lucas Pouille 2.101 2.655 1.26368396 50 L -50 -548.2 156
11/04/2016 World Tour ATPMonteCarlo Fernando Verdasco Federico Delbonis 1.795 2.25 1.253481894 50 W 62.5 -485.7 157
12/04/2016 Challenger SarasotaChallenger Emilio Gomez Quentin Halys 1.565 2.8 1.78913738 50 L -50 -535.7 158
12/04/2016 Challenger SarasotaChallenger Dennis Novikov Dmitry Tursunov 1.647 2.5 1.517911354 50 W 75 -460.7 159
12/04/2016 Challenger SarasotaChallenger Giovanni Lapentti Bjorn Fratangelo 2.387 3.25 1.361541684 50 L -50 -510.7 160
12/04/2016 Challenger SarasotaChallenger Nikoloz Basilashvili Guido Andreozzi 1.852 2.5 1.349892009 50 L -50 -560.7 161
13/04/2016 Challenger SarasotaChallenger Henri Laaksonen Diego Sebastian Schwartzman 2.299 4.053 1.762940409 50 W 152.65 -408.05 162
13/04/2016 Challenger SarasotaChallenger Gonzalo Lama Noah Rubin 1.215 1.8 1.481481482 50 L -50 -458.05 163
13/04/2016 Challenger GwangjuChallenger Daniel Nguyen Duck Hee Lee 1.437 2.375 1.652748782 50 L -50 -508.05 164
13/04/2016 Challenger GwangjuChallenger Marinko Matosevic Jeremy Jahn 1.258 2 1.589825119 50 L -50 -558.05 165
13/04/2016 Challenger GwangjuChallenger Liam Broady Di Wu 1.792 2.625 1.46484375 50 L -50 -608.05 166
13/04/2016 World Tour ATPMonteCarlo Taro Daniel Dominic Thiem 4.255 7.8 1.833137485 50 L -50 -658.05 167
13/04/2016 World Tour ATPMonteCarlo Marcel Granollers Alexander Zverev 1.938 3.5 1.805985552 50 W 125 -533.05 168
13/04/2016 World Tour ATPMonteCarlo Fernando Verdasco David Goffin 2.123 3.583 1.687706076 50 L -50 -583.05 169
13/04/2016 World Tour ATPMonteCarlo Benoit Paire Joao Sousa 1.603 2.143 1.336868372 50 W 57.15 -525.9 170
16/04/2016 World Tour ATPMonteCarlo Andy Murray Rafael Nadal 1.894 3.444 1.818373812 50 L -50 -575.9 171
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment