2013-03-04 24 views
6

Tôi có bộ dữ liệu chuỗi thời gian lớn tôi cần đồ thị và đang cố gắng sử dụng D3 để thực hiện. Tôi có kế hoạch để có đồ thị của tôi có trục x là thời gian, và cho phép di chuyển của đồ thị theo hướng x. Tôi muốn biểu đồ chỉ tải/hiển thị các điểm tồn tại trong phạm vi thời gian hiện tại trên màn hình.D3 vẽ đồ thị các phần chọn lọc của tập dữ liệu

Ví dụ: nếu tập dữ liệu của tôi có thời gian 1-100, nhưng biểu đồ bắt đầu với thời gian 1-10 được hiển thị, biểu đồ chỉ nên vẽ đồ thị điểm 1-10. Sau đó, người dùng có thể di chuyển sang phải và xem thời gian 5-15 và biểu đồ sẽ cập nhật tương ứng.

Bất cứ ai có thể giải thích cho tôi về cách thực hiện điều này thông qua d3? Tôi gặp khó khăn trong việc bắc cầu sự hiểu biết từ toàn bộ tập dữ liệu đang được nạp cùng một lúc và được lập biểu đồ ngay lập tức để chọn lọc đồ thị các tập con của dữ liệu.

Trả lời

2

Tôi nghĩ bạn đang tìm kiếm hàm selection.filter(). Ví dụ: bạn có thể có:

var allNodes = vis.selectAll("Nodes").data(data.nodes); 
var validNodes = allNodes.filter(function(d){return (d.time>1 && d.time <10)}); 
//use normal graph functions on validNodes. 

Bạn cũng có thể áp dụng bộ lọc trực tiếp trên mảng nút.

+0

Cảm ơn bạn đã trả lời. Có ý nghĩa. Tôi có thể tự động biết cách thiết lập giới hạn cho chức năng lọc không? Lý tưởng nhất là tôi muốn có được giới hạn của trục x, nếu bạn làm theo. Nếu họ cuộn qua 5-15, giới hạn phải là d.time> = 5 && d.time <= 15 etc – cdietschrun

+0

Bạn sẽ có thể tìm thấy điều này trong API: https://github.com/mbostock/d3/wiki/SVG-TrụC# wiki-axis. Nếu không thì tôi không biết. –

+1

Tôi đã có may mắn với x.domain() cho tôi min và max của trục x. Tôi sẽ đánh dấu điều này là chính xác vì tôi sẽ cần phải sử dụng bộ lọc với thông tin tên miền. – cdietschrun

Các vấn đề liên quan