Jestem nowy w D3 i bawię się z rozrzutu. Nie mogę uzyskać d3.max (danych), aby działał poprawnie podczas konfigurowania domeny!Dlaczego domena nie używa d3.max (danych) w D3?
Mam następujący konfigurowania zestawu danych losowych:
var data = [];
for (i=0; i < 40; i++){
data.push({"x": i/40, "y": i/8, "a": Math.floor(Math.random() * 3), "x2": Math.random()});
}
I wtedy następujące ustawić moje współrzędne:
var x = d3.scale.linear().domain([0, 1]).range([0 + margin, w-margin]),
y = d3.scale.linear().domain([0, d3.max(data)]).range([0 + margin, h-margin]),
c = d3.scale.linear().domain([0, 3]).range(["hsl(100,50%,50%)", "rgb(350, 50%, 50%)"]).interpolate(d3.interpolateHsl);
Stawia wszystkie 40 punktów w jednej, poziomej linii. Jeśli zamieniam d3.max (dane) na "5", to jest to przekątna (aczkolwiek od górnej lewej do prawej dolnej strony wciąż mam problemy z odwróceniem współrzędnych y). Dlaczego d3.max (dane) nie działają zgodnie z oczekiwaniami?
Nie potrzebujesz jQuery do mapowania; jest to natywna metoda Array: 'd3.max (data.map (function (d) {return d.y;}))'. 'd3.max()' przyjmuje opcjonalny akcesor jako swój drugi argument, więc możesz również zrobić 'd3.max (dane, funkcja (d) {return d.y;})) –