2015-09-07 2 views
1

Я сделал эту простую линейную диаграмму в d3, но также показывая данные всплывающей подсказки для мыши, я также хотел бы отобразить данные, для которых синяя пунктирная строка всплывающей подсказки пересекается с трактом передачи данных в первом экземпляре.Две точки подсказки на одном пути в линейной диаграмме d3.js

Для intsance по ссылке ниже, если мышка наводится на 2012 год, данные за 2005 год будут отображаться на первом пересечении линии всплывающей подсказки и пути данных.

http://bl.ocks.org/anonymous/49f04076adbec7e2c2f9

Любые идеи? Спасибо

ответ

0

В связанном примере вы хотели бы найти месяцы с интервалами CPI, которые содержат значение CPI, которое в настоящее время отображается. Итак, создайте список таких интервалов со ссылками на месяц, который их содержит, затем найдите соответствующие интервалы при наведении.

Нечто подобное, к примеру (непроверенные):

// after loading data 
var cpi_intervals = []; 
data.forEach(function(d, i) { 
    if (i > 0) { 
    cpi_intervals.push({ 
     cpis: d3.extent([data[i-1].cpi, d.cpi]), 
     date: d.date 
    }); 
    } 
}); 

... 

// function to find months containing specified cpi 
function monthsContainingCPI(cpi) { 
    return cpi_intervals.filter(function(d) { 
    return cpi >= d.cpis[0] && cpi < d.cpis[1]; 
    }).map(function(d) {return d.date;}) 
} 

При необходимости, вы можете улучшить производительность функции monthsContainingCPI, используя более сложную структуру данных, как interval tree, для хранения и доступа к Интервалы CPI.

+0

Это имеет смысл, я сделал так, как было предложено, но ничего не появляется (и ошибки в консоли). Это потому, что мне нужно затем написать что-то, чтобы другие значения отображались при наведении курсора мыши? На данный момент это еще один набор. – NatalieC

+0

Да, это позволяет вам находить даты, но вы можете написать код для его отображения по-разному. Вероятно, он будет похож на узлы .y3 и .y4, которые в настоящее время используются. – Mzzzzzz

+0

Спасибо, что не смогли проверить это как недостаточно опытный, чтобы выяснить, как изменить код, чтобы отображать дополнительные значения CPI при наведении курсора мыши, любая информация о том, как писать код, будет полезна, если это возможно. Попробовали создать второй фокус для cpis, но это не сработало. – NatalieC

Смежные вопросы