Giới thiệu:
Tôi đang làm việc với tập dữ liệu khổng lồ mà tôi cần vẽ trong trình duyệt và vì có thể có tới 1 triệu điểm, ý tưởng của tôi là tạo ra các biểu diễn khác nhau cho các mức thu phóng khác nhau
giả sử tôi có 100 nghìn điểm, tôi sẽ trung bình hai lần cho đến khi tôi nhận được 50 nghìn điểm, sau đó tôi sẽ lặp lại điều đó cho đến khi tôi đạt được dưới 500 điểm (ngưỡng tùy ý của tôi)
Vì vậy, ở mức thu nhỏ nhất, tôi sẽ vẽ tất cả 500 điểm hoặc một phần của nó, tùy thuộc vào kích thước biểu đồ và khi tôi phóng to, tôi sẽ chuyển sang mức thu phóng tiếp theo (và truyền dữ liệu nếu người dùng kéo lựa chọn l / r ) và cuối cùng nếu người dùng muốn xem chi tiết hạt mịn, anh ta có thể phóng to đến mức thu phóng 0 và xem tất cả các chi tiết tốt.
Tôi thực sự đã tạo ra nguyên mẫu này và nó hoạt động khá tốt, ngoại trừ một điều: tác dụng phụ của điều này là, như bạn có thể tưởng tượng, rằng các đỉnh bị mất trong các lần lặp trung bình.
Tôi đã thực hiện một số nghiên cứu và tìm hiểu về thuật toán Douglas-Peucker và cách nó có thể duy trì các đỉnh, tôi đã thực hiện một số thử nghiệm và nó hoạt động khá tốt, nhưng vấn đề với nó là nếu nó gặp phải một loạt dữ liệu (giá trị y) [1 , 1,1,1,5,6,1,1,1,1,1,1] nó sẽ làm trơn tru điều đó thành một thứ như [1,6,1,1] không phù hợp với tôi vì tôi cần giữ tỷ lệ các mức thu phóng như thế này
n (chiều dài của dữ liệu gốc)> n / 2> n / 4> n / 8> .....
Tôi đã đọc khá nhiều bài viết về làm mịn dòng, nhưng tất cả các thuật toán mà tôi tìm thấy đều chấp nhận ngưỡng khoảng cách, chúng sử dụng để làm mịn như một tham số, và không ai trong số chúng có thể chấp nhận số lượng phần tử đầu ra mong muốn, và vì mục tiêu của chúng là làm mịn dòng, họ sẽ biến đổi chuỗi như thế này (giá trị y) [1,1,1,1,1,1,1,1,1,1,1] thành [1,1]
Vì vậy, cuối cùng, câu hỏi của tôi:
Có một algoritm rằng:
- thay vì ngưỡng khoảng cách thông thường chấp nhận số lượng phần tử đầu ra mong muốn
- cố gắng duy trì các đỉnh (như Douglas-Peucker làm)
- sẽ làm mịn dữ liệu đồng đều, vì vậy ngay cả khi nó nhận được (giá trị y) [1,1,1,1,1,1] và tôi nói rằng tôi muốn 3 kết quả đầu ra, nếu lý thuyết đúng về mặt lý thuyết là trơn tru như [1,1] thay vào đó tôi sẽ cần lấy [1,1,1]
Ngoài ra, xin đừng nhầm lẫn vì thiếu thông tin trục X vì nó không liên quan vì tất cả dữ liệu được đo từ 1 đến n trong các bước của 1, vì vậy không có giá trị N / A, hoặc các điểm trống hoặc giá trị như [1.3 , 1,4,3]
x luôn là [1,2,3 .... n]