2011-08-29 73 views
3

我有代表緯度經度的數據集和與每個緯度 - 經度對相關的VALUE(名爲「class」),我想用levelplot()或「R」的「lattice」包裝下的contourplot()。 樣本數據集是這樣的:在主數據集R等級圖,非連續的緯度和經度值

> data_2[510:520,] 
      lon  lat class 
510 -47.61849 40.00805  2 
511 -47.36740 40.01180  1 
512 -47.11629 40.01551  1 
513 -46.86518 40.01918  1 
514 -46.61404 40.02282  1 
515 -46.36290 40.02642  3 
516 -46.11173 40.02999  1 
517 -45.86056 40.03352  1 
518 -45.60937 40.03700  3 
519 -45.35817 40.04045  3 
520 -45.10695 40.04386  3 

的經度和緯度值是不連續的。

我的問題是我沒有所有緯度和經度組合的「class」值,並且由於這個原因,當我試圖繪製上述值時,剩下很多空的空間。我想要的是獲得一個連續的,填充的(對於所有緯度經度組合)情節。

以下是我試圖繪製的方法之一的例子:

levelplot(_2 $類〜_2 $ LON * _2 $ LAT,數據= _2,區域= TRUE,縱橫= 「補」)

是否有在levelplot任何可用的選項()或contourplot(),我可以用它來實現這個功能,或者是有沒有「R」,這可以幫助我拿出任何其他包/方法用這個解決方案?

+0

什麼類型的變量是「類」(無序因素,有序的因素,連續的)?該值需要在採樣座標之間的連續網格上插值或估計,並且估計方法將取決於變量類型。 – danpelota

+0

嗨danpelota,謝謝你的迴應。類變量是一個連續的數字(對於數據集的所有520個實例,我有這個變量的範圍在0-4之間,其中每個實例是緯度 - 經度和這個經度 - 長度對的值(類)的組合)。您能否以示例的方式向我展示如何生成/估計。我看到的一個問題是,經度和緯度變量在數據網格中不連續。 – JSan

回答

1

我建議看看免費的電子書「地質統計學繪圖實用指南」(http://spatial-analyst.net/book/download)以查看R中大量實例的空間估計方法。

正如本指出的,你需要做某種空間插值。這裏有一個簡單的例子使用interpolate功能在intamap包:

library(intamap) 
library(lattice) 

# Generate an example dataset 
set.seed(10) 

class1 <- data.frame(lon=rnorm(50, mean=-46, sd=4), 
        lat=rnorm(50, mean=32, sd=4), 
        value=1) 

class2 <- data.frame(lon=rnorm(50, mean=-40, sd=4), 
        lat=rnorm(50, mean=39, sd=4), 
        value=2) 

class3 <- data.frame(lon=rnorm(50, mean=-50, sd=3), 
        lat=rnorm(50, mean=40, sd=2), 
        value=3) 

df <- rbind(class1, class2, class3) 

# Generate a 50 x 50 grid over which to predict new values 
prediction.grid <- expand.grid(lon=seq(from=min(df$lon), 
             to=max(df$lon), 
             length=50), 
           lat=seq(from=min(df$lat), 
             to=max(df$lat), 
             length=50)) 
# Spatialize the data.frames       
coordinates(df) <- c("lon", "lat") 
gridded(prediction.grid) <- c("lon", "lat") 

fit <- interpolate(df, prediction.grid) 

# Built-in plots, including variogram and pertinent stats: 
plot(fit) 

# Pull out the fitted values into a dataframe 
predictions <- as.data.frame(t(fit$outputTable)) 

levelplot(mean ~ x * y, data=predictions, region=TRUE, aspect="fill") 
0

你需要先做一些插值。 akima包可能是您最好的選擇,請參閱?akima中的示例。 gstat::krige是另一種可能性。