doubling_period_labels = doubling_periods.map(function(d) {
d = Number(d);
const candidate_n = xLog(datetime[datetime.length -1]) / d;
const candidate_y = Math.pow(2, candidate_n) * d3.max([1,d3.min(usDataTime, d=>d.value)]);
if (candidate_y < d3.max(usDataTime, d=>d.value)) {
return { 'period': d, 'x': usDataTime[usDataTime.length -1].date, 'y': candidate_y };
} else {
return { 'period': d, 'x': Math.log2((d3.max(usDataTime, d=>d.value))/(d3.max([1,d3.min(usDataTime, d=>d.value)]))) * d, 'y': (d3.max(usDataTime, d=>d.value)) };
}
});