2011-08-29 72 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是另一种可能性。