Tôi có mảng dữ liệu 2 chiều, với một số giá trị bị thiếu. Có ba cột:Nội suy hai chiều trong R, không có bất kỳ phép ngoại suy
- x
- y
- cường
tôi có thể vẽ x chống lại y trong ggplot2, với cường độ như một thang màu.
Tôi muốn mịn chuyển giữa các màu sắc, và đã đi qua các idw
chức năng, thuộc về gói gstat
. idw
nhằm mục đích nội suy NA trong 2-dimenstions. Nó không nên ngoại suy, và trong khi nó về mặt kỹ thuật không tôn trọng các giới hạn của dữ liệu (± 20 theo cả hai hướng), nó cũng cố gắng lấp đầy khoảng trống ở rìa của cốt truyện, như hình dưới đây:
Tôi muốn tránh bất kỳ ngoại suy nào xảy ra ngoài giới hạn của dữ liệu tôi có, bao gồm góc dưới bên phải của dữ liệu được hiển thị trong hình đầu tiên.
Làm cách nào để đạt được điều này?
Chỉnh sửa: Đây là tập dữ liệu mẫu. Đây không phải chính xác cùng một tập dữ liệu như được hiển thị ở trên, nhưng lại chứa một vùng bị thiếu lớn ở góc dưới bên phải.
structure(list(x = c(10L, 15L, -10L, 0L, -5L, -10L, -15L, 0L,
-15L, 15L, 5L, 10L, -20L, -5L, -15L, -15L, -5L, 5L, 20L, -20L,
-15L, 20L, -15L, 5L, -5L, -20L, -5L, 15L, 0L, 0L, 15L, 10L, 0L,
20L, -10L, 5L, 5L, 0L, 20L, 5L, -15L, 5L, -5L, -5L, -15L, -10L,
-10L, -10L, -5L, -10L, 15L, 20L, 0L, 20L, -15L, 20L, -20L, -15L,
10L, 15L, 15L, -5L, 5L, 15L, 20L, 20L, -10L, -20L, -20L, 15L,
-10L, 10L, 5L, -20L, 20L, 10L, 0L, 10L, -10L, 0L, 10L, 10L, 10L,
-20L, 15L, -20L, 0L, -20L, -5L, 5L), y = c(0L, -10L, 0L, 20L,
0L, -10L, 0L, 0L, -20L, 20L, 0L, -10L, -10L, -10L, -10L, 20L,
10L, -10L, -20L, -20L, -10L, -10L, 0L, 10L, -20L, 20L, 0L, 0L,
0L, -20L, 0L, 0L, 10L, 10L, -20L, -20L, -10L, 20L, 10L, 20L,
10L, -20L, 20L, -10L, 20L, 20L, 10L, 10L, -20L, -10L, -10L, 20L,
-10L, -10L, -20L, 0L, -10L, 10L, -10L, 10L, -20L, 10L, 20L, 20L,
-20L, 20L, 0L, 10L, 10L, -20L, 20L, -20L, 10L, 0L, 0L, 10L, 10L,
-20L, -20L, -20L, 20L, 20L, 10L, 20L, 10L, -20L, -10L, 0L, 20L,
0L), intensity = c(12.9662, NA, 24.4379, 26.3923, 26.9449, 16.7372,
13.7691, 8.029, 11.922, 11.1967, 15.2792, NA, 14.4159, 20.6542,
22.0509, 17.356, 14.3841, NA, NA, 10.326, 6.0451, NA, 12.9515,
3.6745, NA, 18.1552, 9.9532, 9.9361, 7.0392, NA, 10.9814, 10.8351,
4.9017, 5.7864, 14.098, NA, NA, 6.3305, 6.4405, 49.2791, 19.9774,
NA, 25.1955, 28.5234, 20.2077, 20.3224, 12.688, 22.1371, NA,
17.5108, NA, 7.9351, NA, NA, 11.0975, 8.2349, 12.1194, 21.865,
NA, 10.7178, NA, 21.8222, 13.5971, 6.9751, NA, 8.8046, 22.0709,
14.2043, 27.8561, NA, 17.4329, NA, 7.4057, 15.2797, 1.0122, 11.1874,
35.5814, NA, 27.5919, NA, 11.8159, 15.8433, 12.297, 29.1978,
20.4151, 22.6336, NA, 16.0019, 16.9746, 10.8613)), .Names = c("x",
"y", "intensity"), row.names = c(NA, -90L), class = "data.frame")
Bạn chỉ có thể Resample dữ liệu gốc với kích thước lưới bạn muốn, để lại NA mà bạn không có dữ liệu. Sau đó, sử dụng dữ liệu được lấy mẫu đó để che dấu đầu ra IDW của bạn. –
Tôi thấy nó tò mò rằng bạn tìm thấy một điểm cường độ cao trong khu vực ngoại suy của bạn (khoảng 5, -20). Theo như tôi hiểu idw, điều này không nên xảy ra. –