Z powodu ujawnienia - Jestem okropny w javascript, ale próbuję się uczyć!Nowości w NvD3 - jak mogę uczynić moje znaczniki czasu unix jako daty na osi X?
Mam tablicę z kilku zapisów, takich jak te w nim:
[1349013600] => 232
Kluczem jest timestamp Unix, wartością jest $ w sprzedaży z tego dnia. Obecnie tworzę je na wykresie wielowarstwowym, który działa świetnie.
Problemem jest My X osi, który jest obecnie zdefiniowane następująco:
chart.xAxis
.tickFormat(d3.format(',f'));
że wysyła znacznik czasowy Unix'owych prostym Int z etykietami osi x i aktywowania podpowiedzi. Chcę spróbować uzyskać wynik jako D-M-Y lub podobny czytelny wskaźnik daty dla człowieka.
Najbliższy znalazłem jest ten kawałek kodu:
chart.xAxis.tickFormat(function(d) {
var dx = testdata[0].values[d] && testdata[0].values[d].x || 0;
return d3.time.format('%x')(new Date(dx))
});
Ale walczę, aby zrozumieć, co robi i nie może realizować w moim konkretnym wykresie. Obecny kod wygląda tak:
nv.addGraph(function() {
var chart = nv.models.multiBarChart()
.stacked(true)
chart.xAxis
.tickFormat(d3.format(',f'));
chart.yAxis
.tickFormat(function(d) { return '$' + d3.format(',f')(d) });
d3.select('#chart1 svg')
.datum(test_data2)
.transition().duration(500).call(chart);
nv.utils.windowResize(chart.update);
return chart;
});
Czy ktoś może wyjaśnić, jak to działa i - co ważniejsze - dlaczego? Doceń wszelkie wskazówki!
Dzięki za cynk. Daty (przechowywane w SQL db) są już w czytelnym formacie (RRRR/MM/DD), ale konwertuję je za pomocą strtotime (funkcja PHP), kiedy wyciągam je z bazy danych. Wiem, że wydaje się to sprzeczne z intuicją, ale jestem przekonany, że faktyczne przypisanie wartości musi nastąpić w znaczku unixowym, aby odpowiednio rozmieścić je w osi. W każdym razie - powinno już być w s, a nie w ms. – mcl