2012-05-01 34 views
42

Tôi có chuỗi thời gian trong khoảng thời gian 1 phút. Tôi muốn hiển thị biểu đồ đó với các điểm bị thiếu là 0.Làm thế nào để làm cho highcharts mặc định là 0 cho dữ liệu bị thiếu

Tôi đã tìm thấy xAxis.ordinal và tắt tính năng này hiển thị chuỗi thời gian được đặt cách nhau đúng cách. Vấn đề là nó vẽ các đường thẳng giữa các điểm trực tiếp mà không đi tới 0 cho dữ liệu bị thiếu.

+3

Wraithan - bạn đã bao giờ con số này ra? – bugfixr

+3

@Wraithan bạn có tìm cách đặt điểm bị thiếu là 0 không? – Anagio

+1

+1 đến các câu hỏi ở trên.Tôi cần phải biết điều này quá – Denis

Trả lời

4

Một cách là bởi tiền xử lý dữ liệu, thay thế null với 0:

var withNulls = [null, 12, 23, 45, 3.44, null, 0]; 
var noNulls = withNulls.map(function (item) { 
    return (item === null) ? 0 : item; 
}); 

Ví dụ lưu trên jsfiddle: http://jsfiddle.net/7mhMP/

+13

Điều này không trả lời câu hỏi, điều này chỉ tránh được vấn đề. –

+0

Ví dụ không phải là một chuỗi thời gian trên X, nó không phải là một giá trị datetime, nhưng quy mô tùy chỉnh với bất kỳ tên nào, do đó nó hoạt động. Vấn đề nảy sinh khi bạn thiếu cặp giá trị ngày tháng, do đó chuỗi không tiếp tục trong thang thời gian và đường đồ thị biến mất. – Zon

5

Tôi đã thorougly đã tìm kiếm các API reference of HighCharts, nhưng họ không phục vụ tùy chọn đó. Những gì họ làm phục vụ là tùy chọn để vô hiệu hóa các kết nối điểm khi null dữ liệu là ở giữa (chỉ dòng và biểu đồ khu vực):

var chart = new Highcharts.Chart({ 
    plotOptions: { 
     line: { 
      connectNulls: false 
     } 
    } 
}); 

Đây là cài đặt mặc định theo API, vì vậy tôi không chắc chắn tại sao dữ liệu của bạn kết nối với các giá trị null ở giữa. Có lẽ họ đã thay đổi các giá trị mặc định gần đây?

Example of HighChart with missing data

Tôi cảm thấy đây là một đại diện tốt cho dữ liệu của bạn, bởi vì mặc định null để 0 dường như gây hiểu nhầm.

+2

Câu hỏi yêu cầu 0 thay thế - không ngắt, không có kết nối null với giá trị trung bình trong dòng trực tiếp từ điểm này sang điểm khác. Thiếu giá trị nên được hiểu là 0. Đây là khi chúng ta ngụ ý rằng không có sự thay đổi nào được quan sát, không phải là chúng ta đã bỏ lỡ sự quan sát và không biết giá trị. Chúng tôi biết giá trị là 0. Khá phổ biến trong các số liệu thống kê tạp chí cơ sở dữ liệu. – Zon

+0

OP thực sự nói rằng ông muốn thay thế thông tin còn thiếu với 0. Ông không biết nó là 0. Đó là một sự khác biệt khá. –

+1

Các diễn đàn cấp cao cũng thấy khó hiểu. Để tâm trí của tôi "Tôi muốn hiển thị rằng trong một biểu đồ với các điểm bị thiếu là 0" có nghĩa là trong nhiệm vụ của tôi thiếu điểm nên được hiểu là 0. Tôi muốn nó 0, bởi vì tôi biết nó nên là số không nếu vắng mặt. Trong Highs, giả định duy nhất được cho phép là không có dữ liệu-then-null, cái cần thiết là không có giả thiết-dữ liệu-zero-zeroes. – Zon

0

Tôi có cùng một vấn đề và những gì tôi hiểu là bạn nên đặt cấu trúc dữ liệu của bạn trong cơ sở dữ liệu như VARCHAR và đặt giá trị mặc định thành null để không có dữ liệu. Sau đó, nó chấp nhận giá trị null và highchart không hiển thị và kết nối các vùng bị thiếu với giá trị null.
Ngoài ra, bạn phải nhận dữ liệu dưới dạng NULL và không thay đổi chúng thành ''.
xem ví dụ làm việc này:

var chart = new Highcharts.Chart({ 

    chart: { 
     defaultSeriesType: 'spline', // use line or spline 
     renderTo: 'container1' 
    }, 

    xAxis: { 
     categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'] 
    }, 

    series: [{ 
     data: [9, 4,null, 2, 1, 0, 6, 5, 4, 1, 6, 4] 
    }] 

}); 

here là fiddle với hai bảng xếp hạng khác nhau sử dụng null''

UPDATE:
Nếu bạn đang sử dụng parseInt để đẩy dữ liệu bạn nên nhớ rằng parseINT(NULL) cho bạn NAN vì vậy cho lỗi này cố gắng để đẩy bằng tay NULL với một cái gì đó như thế này:

var val = parseInt(rows[i]); 
if (isNaN(val)) 
{ 
    val = null; 
    result.push(val); 
} 
1

Bạn hava để điền dữ liệu bị nhỡ là 0. Vì highchart không konw xAxis interval.

Nếu bạn có chuỗi thời gian tại khoảng thời gian 1 phút, bạn nên đặt mọi thiếu phút dữ liệu về 0; Nếu bạn có một chuỗi thời gian tại 1 ngày khoảng thời gian, bạn nên đặt tất cả các thiếu ngày dữ liệu đến 0.

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