Próbuję ustawić etykietę narzędzia dla ścieżki obszaru, który utworzyłem. Sprawdziłem wszystkie argumenty przekazywane do obsługi zdarzenia on mousemove i właśnie otrzymuję pełny zestaw danych, 0, 0. Nic nie wskazuje na mój indeks w danych, o ile widzę. "Ten" kontekst to także element ścieżki SVG. Wciąż nic przydatnego. Nawet spojrzał na d3.select (this), i nie mogę znaleźć nigdzie tam wskaźnika. Czy jest jakiś sposób, aby ustalić, nad którym punktem danych znajduje się moja mysz?Korzystając z biblioteki JavaScript D3, jak określić pozycję myszy w zestawie danych elementu obszaru podczas zdarzenia mousemove?
Rozglądając się znalazłem odniesienie do d3.mouse (this) i to daje mi współrzędną x/y, ale jak mogę odwzorować to z powrotem do punktu danych w zbiorze danych?
Moim celem jest posiadanie podpowiedzi do wyświetlania niektórych metadanych związanych z tym konkretnym punktem danych w zestawie.
Oto niektóre fragmenty kodu wnioskowane:
var area=d3.svg.area()
.interpolate("monotone")
.x(function(d){
return(scale.x(d.date));
})
.y0(height-padding.bottom)
.y1(function(d){
return(scale.y(d.count));
});
var path=svg.append('path')
.datum(data)
.attr('d',area)
.attr("clip-path", "url(#clip)")
.attr('fill','url(#gradient)')
// .attr('title','path')
.on('mousemove',function(){
console.log(arguments);
console.log(d3.select(this));
console.log(d3.mouse(this));
});
Możesz opublikować JavaScript? lub krótki przykład, aby go odtworzyć? –
Zazwyczaj narysowałeś jakiś element nad punktem danych (np. Kółkiem), aby nadać mu tytuł http://www.mecxpert.de/svg/tooltips.html – Duopixel
Chciałem uniknąć dodawania kolejnych elementów, ponieważ używam suwaka jQuery UI do sterowania powiększaniem widoku za pomocą skali czasu X i ścieżki klipu. Więcej elementów również musi być kontrolowanych w ten sam sposób. Jeśli to jest to, co muszę zrobić, niech tak będzie, wydaje się, że powinno być czystszy sposób. Nie wiesz, dlaczego program obsługi zdarzeń mousemove nie otrzymuje żadnych użytecznych argumentów. –