2014-09-26 25 views
9

Tuyên bố từ chối trách nhiệm: Tôi không biết mình đang làm gì. Nghiêm túc, tôi yêu dữ liệu viz và nghĩ rằng làm điều đó bản thân mình sẽ là một cách tuyệt vời để tìm hiểu để lập trình và sử dụng cơ sở dữ liệu và làm cho các ứng dụng web như một anh chàng mát mẻ. Tôi đã ở đây tìm kiếm câu trả lời cho ngày cuối cùng, và tất cả các ví dụ tôi có thể tìm thấy tôi không thể làm việc với mã của tôi.Ngày Sắp xếp với d3.js

Đây là thùng chứa mã đầy đủ và dữ liệu tôi đang sử dụng. Đó là biểu đồ dòng mẫu tìm thấy trên github d3.js với dữ liệu của tôi điền vào http://pastebin.com/7aW6wegd

Các json đến từ một cơ sở dữ liệu couchdb

tôi có thể nhận các dòng để vẽ, nhưng họ là một mớ hỗn độn.:

enter image description here

tôi nghĩ rằng đây là do những ngày không sắp xếp đúng, vì trong giao diện điều khiển chúng được liệt kê trong trật tự. Tôi không thể tìm ra cách để có được ngày để sắp xếp đúng cách. Sử dụng d3.time.format ném lỗi (bạn thực sự có thể nhìn thấy nó trong mã tôi đã lấy từ biểu đồ dòng mẫu, họ sử dụng nó để phân tích các ngày. Sử dụng nó với dữ liệu của tôi ném một lỗi, ngay cả sau khi tôi cố gắng để biến các dấu thời gian cho đến ngày tháng) và tôi dường như không thể tìm ra cách để có được các ngày để sắp xếp trong couchdb.

+3

Điều này có vẻ khá tốt cho lần thử đầu tiên một cách trung thực. Chỉ cần sắp xếp các ngày trước khi xác định đối tượng ngày tháng. https://github.com/mbostock/d3/wiki/Arrays –

Trả lời

11

Tại sao bạn không chỉ sắp xếp dữ liệu của mình sau số forEach nơi bạn điền các thuộc tính date? Dưới đây là một thực hiện rất cơ bản của một máy phân loại của một mảng của các đối tượng:

var data = [ 
     {date: new Date(2000)}, 
     {date: new Date(1000)} 
    ]; 

function sortByDateAscending(a, b) { 
    // Dates will be cast to numbers automagically: 
    return a.date - b.date; 
} 

data = data.sort(sortByDateAscending); 

Có một đẹp documentation cho Array.prototype.sort.

+2

Cảm ơn bạn. Điều này làm việc hoàn hảo. Tôi đã cố gắng viết/mượn một vài chức năng sắp xếp mà tất cả đều thất bại. Điều này một lần là 2 hoặc 3 dòng ngắn hơn đơn giản nhất tôi tìm thấy. – Trel

+0

Tôi không biết tại sao điều này trả về mm/dd/yyyy khi tiêu chuẩn quốc tế là yyyy/dd/mm –

+0

@Claudiu Vì một số lý do, OP quyết định định dạng ngày bằng 'd3.time.format ("% x ") '(xem dòng 46 trên pastebin). Theo tài liệu, nó định dạng ngày là "% m /% d /% Y", xem https://github.com/mbostock/d3/wiki/Time-Formatting#format Bạn có thể chọn một định dạng khác nếu bạn muốn. – Oleg