Tôi có hàng chục nghìn (có thể là hàng trăm nghìn) điểm mà tôi cần vẽ bằng Highcharts. Có cách nào tôi có thể nhóm dữ liệu trên máy chủ, vì vậy nó sẽ hiển thị ít hơn 1000 điểm, nhưng khi bạn phóng to nó sẽ thực hiện cuộc gọi AJAX đến máy chủ để lấy dữ liệu cho vùng được thu phóng đó (có thể nó sẽ chạy qua cùng một thuật toán cụm). Giao diện này sẽ như thế nào với API Highcharts?Highcharts tập hợp dữ liệu lớn nhóm
Trả lời
Dưới đây là một cải tiến cho câu trả lời của Barbara,
Nó đăng ký sự kiện setExtremes, biết nếu điều này là một sự kiện thiết lập lại zoom. Nếu có - nó sẽ lấy toàn bộ tập dữ liệu, do đó cho phép thu phóng đặt lại hoạt động chính xác.
Nó cũng cho phép phóng to cả x và y.
var isReset = false;
...
xAxis: {
events: {
afterSetExtremes : afterSetExtremes,
setExtremes: function (e) {
if (e.max == null || e.min == null) {
isReset = true;
}
else
{
isReset = false;
}
}
},
minRange: 3600 * 1000 // one hour
},
series: [{
data: data,
dataGrouping: {
enabled: false
}
}]
});
});
});
/**
* Load new data depending on the selected min and max
*/
function afterSetExtremes(e) {
var url,
currentExtremes = this.getExtremes(),
range = e.max - e.min;
var chart = $('#container').highcharts();
var min = 0;
var max = 1.35e12;
if(!isReset)
{
min = e.min;
max = e.max;
}
chart.showLoading('Loading data from server...');
$.getJSON('http://www.highcharts.com/samples/data/from-sql.php?start=' + Math.round(min) +
'&end=' + Math.round(max) + '&callback=?', function (data) {
chart.series[0].setData(data);
chart.hideLoading();
});
}
Có bản giới thiệu highstock làm điều này http://www.highcharts.com/stock/demo/lazy-loading. Nhưng bạn có thể làm điều tương tự với highcharts http://jsfiddle.net/RHkgr/ Các bit quan trọng là afterSetExtremes hoạt
...
xAxis : {
events : {
afterSetExtremes : afterSetExtremes
},
...
/**
* Load new data depending on the selected min and max
*/
function afterSetExtremes(e) {
var url,
currentExtremes = this.getExtremes(),
range = e.max - e.min;
var chart = $('#container').highcharts();
chart.showLoading('Loading data from server...');
$.getJSON('http://www.highcharts.com/samples/data/from-sql.php?start='+ Math.round(e.min) +
'&end='+ Math.round(e.max) +'&callback=?', function(data) {
chart.series[0].setData(data);
chart.hideLoading();
});
}
Trên một lưu ý khác, jsfiddle đó không hoạt động đúng, hãy thử phóng to rồi đặt lại. Nó cần phải nạp lại dữ liệu gốc – Ray
Trong trường hợp khi bạn sẽ không có một giới hạn của điểm, bạn có thể tăng turboThreshold paramter.
Tôi đã thử điều đó, và nó không thực tế vì tôi phải hỗ trợ IE8: "( – Ray
Bạn có nghĩa là turbothreshold không hoạt động trong IE8? Bạn có thể tạo lại ví dụ của mình trong jsfiddle.net không? –
Không, IE8 không xử lý nhiều đối tượng tốt, nó sẽ hỏi bạn rất nhiều lần nếu bạn muốn tiêu diệt kịch bản – Ray
- 1. Kết hợp không gian của các tập dữ liệu lớn
- 2. Resize điểm dữ liệu với highcharts
- 3. Tập hợp dữ liệu mongodb vs mysql
- 4. Highcharts nhãn dữ liệu bị cắt
- 5. Hỗ trợ Spring JDBC và tập dữ liệu lớn
- 6. tập hợp con của nhóm với data.table
- 7. R: nhập nhiều tập hợp dữ liệu
- 8. GZipStream trên dữ liệu lớn
- 9. Đề xuất lưới jQuery cho các tập dữ liệu lớn?
- 10. Xử lý các tập dữ liệu lớn sử dụng LINQ
- 11. Tăng tốc độ hàm plot() cho tập dữ liệu lớn
- 12. hợp nhất dữ liệu và nhận một mất mát lớn dữ liệu
- 13. Bộ dữ liệu lớn
- 14. Highcharts không hiển thị chuỗi có nhiều điểm dữ liệu
- 15. Xử lý các tập dữ liệu lớn trong Java/Clojure: dữ liệu littleBig
- 16. Nhóm dữ liệu json Javascript
- 17. Chạy theo nhóm dữ liệu
- 18. Chiến lược thay thế để tập hợp truy vấn ("nhóm theo") trong kho dữ liệu công cụ ứng dụng google
- 19. Chọn * nhóm theo tập hợp mongo
- 20. Scikit và Pandas: Lắp dữ liệu lớn
- 21. Highcharts - Biểu đồ Dyanmic không có dữ liệu ban đầu
- 22. Kendo UI BarChart Nhóm dữ liệu
- 23. Dữ liệu tập hợp con.table by logical column
- 24. Tập hợp dữ liệu theo giờ vào uẩn hàng ngày
- 25. geom_smooth trên một tập hợp con của dữ liệu
- 26. Backbone.js fetch() tập hợp lớn khiến tập lệnh đóng băng
- 27. LINQ TO Số liệu: Nhiều nhóm theo bảng dữ liệu
- 28. Khung tập hợp Mongodb | Nhóm trên nhiều giá trị?
- 29. JSON khác với dữ liệu JSON lớn, tìm một số JSON dưới dạng tập hợp con của một JSON khác
- 30. Cấu trúc dữ liệu để chọn các nhóm máy
Tôi đoán tôi sẽ phải bắt 'sự kiện selected', sau đó bật lên một màn hình tải, sau đó AJAX Call, sau đó loại bỏ dữ liệu và thêm dữ liệu mới, nhưng làm thế nào sẽ là phóng to làm việc, bởi vì phương pháp này sẽ không tính đến điều đó. – Ray
Thực ra, tôi nghĩ^điều đó có thể hiệu quả. Tôi nghĩ rằng nó sẽ chiếm tỷ lệ thu phóng vì các trục sẽ cập nhật. Tôi chỉ cần hiển thị nút Đặt lại thu phóng để hiển thị dữ liệu gốc. – Ray