Tuyên bố tiết lộ - Tôi quá kinh khủng với javascript, nhưng cố gắng tìm hiểu!Mới đối với nvD3 - làm cách nào để tôi có thể đặt dấu thời gian unix xuất hiện dưới dạng ngày trên trục x?
Tôi có một mảng với một vài mục như thế này trong đó:
[1349013600] => 232
Điều quan trọng là một dấu thời gian unix, giá trị là $ doanh thu từ ngày hôm đó. Tôi hiện đang vẽ đồ thị trên biểu đồ nhiều thanh, điều này hoạt động rất tốt.
Vấn đề là tôi trục x, mà hiện nay được định nghĩa như thế này:
chart.xAxis
.tickFormat(d3.format(',f'));
Nó ra dấu thời gian unix như một int thẳng chống lại các nhãn trục x và di chuột tooltip. Tôi muốn thử và đưa nó ra như D-M-Y hoặc một chỉ báo ngày có thể đọc được của con người.
Gần nhất tôi đã tìm thấy là chút mã này:
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))
});
Nhưng tôi đang gặp khó khăn để hiểu những gì nó đang làm và không thể thực hiện trên bảng xếp hạng đặc biệt của tôi. Mã hiện tại trông giống như sau:
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;
});
Ai đó có thể giải thích cách làm cho nó hoạt động và - quan trọng hơn - tại sao? Đánh giá cao bất kỳ hướng dẫn nào!
Cảm ơn bạn đã tìm mẹo. Các ngày (như được lưu trữ trong db SQL) thực sự ở định dạng có thể đọc được (YYYY/MM/DD), nhưng tôi đang chuyển đổi chúng với strtotime (hàm PHP) khi tôi kéo chúng ra khỏi db. Tôi biết điều này có vẻ phản trực giác nhưng tôi tin rằng việc gán giá trị thực tế phải xảy ra trong unix stamp để không gian chúng một cách thích hợp trên trục. Dù sao - phải đã ở trong s thay vì ms. – mcl