2013-09-25 61 views
5

Tôi đã xem kỹ tài liệu của dc.js và nhận thấy một số vấn đề mở xung quanh biểu đồ đường nhiều hàng.Biểu đồ đường nhiều hàng trong dc.js

Tôi có dữ liệu mà trông như thế này:

var data = [ 
//['time', 'text', 'temperature', 'count'], 
['1379952000', 'field_1', 91, 56], 
['1379952000', 'field_2', 50, 20], 
['1379952000', 'field_3', 88, 24], 
['1379952000', 'field_4', 50, 37], 
['1379953200', 'field_1', 97, 58], 
['1379953200', 'field_2', 84, 86], 
['1379953200', 'field_3', 85, 62], 
['1379953200', 'field_4', 88, 73] 
// etc. 
]; 

Sau khi đã thêm vào crossfilter, tôi muốn tạo ra một biểu đồ đường thẳng đó có 4 dòng: một cho mỗi giá trị của lĩnh vực "văn bản" (tức là "field_1", "field_2", "field_3", "field_4"). This thread cho thấy rằng một điều như vậy là có thể. Theo lời khuyên here Tôi đã đưa ra mã số trong this gist.

Tôi không thể tìm ra cách tách chuỗi dữ liệu thành 4 dòng riêng biệt. Tôi đã thử sử dụng filter trên dữ liệu nhưng tôi tiếp tục kết thúc bằng một chuỗi có vẻ như chỉ có tất cả các điểm trong đó.

Bạn có thể xem một ví dụ sống của mã ở đây: http://bl.ocks.org/jsundram/6690354

Bất kỳ trợ giúp sẽ được nhiều đánh giá cao.

Cập nhật: Mã làm việc là ở đây: http://bl.ocks.org/jsundram/6728956

+0

Vì một số lý do, mã duy nhất làm việc cho tôi là: http://bl.ocks.org/espinielli/9f129ac2ed6ca642cb2a – Geeklhem

Trả lời

4

tôi đăng một ngã ba của ý chính của bạn mà dường như làm việc: http://bl.ocks.org/jrideout/6710590

Sự thay đổi quan trọng là chức năng soạn:

.compose(fields.top(Infinity).map(function(d,fi) { 
    var field = d.key; 
    return dc.lineChart(time_chart) 
     .group({all:function() { 
      return time_fields.all().filter(function(d) { 
       var f = JSON.parse(d.key)[1]; 
       return f==field && d.value > 0;}); 
     }},field) 
     .colors(['#1f77b4', '#ff7f0e', '#2ca02c','#d62728']) 
     .colorAccessor(function(){return fi;}) 
     .keyAccessor(dateAcc); 
})); 

Tôi đã tạo một nhóm như đối tượng {all:data} có chứa nhóm của bạn, nhưng được lọc theo khóa.

CHỈNH SỬA: DC hiện đang làm việc một loạtBắt đầu để tự động hóa điều này. Xem: http://nickqizhu.github.io/dc.js/examples/series.html

+0

Cảm ơn! Đối với biểu đồ bên trái, tôi đã cố gắng hiển thị thời gian trên trục X và đếm trên trục y chứ không phải nhiệt độ. Tôi cho rằng đó là những gì tôi nhận được không ghi nhãn rìu của tôi. Nhưng tôi nghĩ cách tiếp cận này sẽ hiệu quả. Tôi sẽ gửi mã và chấp nhận câu trả lời này khi tôi nhận được nó làm việc. –

+0

Vì vậy, khi tôi lọc nhiệt độ (ví dụ, chọn phạm vi từ 60-90 độ) trong mã của bạn, biểu đồ đường hoạt động khá bất ngờ. Các dòng không còn là 1: 1 ánh xạ giữa thời gian và nhiệt độ. Bạn có biết chuyện gì xảy ra với điều đó không? –

+0

Có vẻ như đó là do kiểm tra 'd.value> 0'. Nếu không có điều đó, nó có vẻ hoạt động tốt. Tại sao bạn thêm kiểm tra đó? –