从单元格开始绘制网格化地图

时间:2014-02-07 15:31:33

标签: r

我有一个像这样的数据框

yr mo dy hr   lon   lat  cell   sst  avg     moavg
1900  1 29 17 -73.5 -59.5 10907 6.0 3.299048  6.00
1900  1 28 17 -72.5 -58.5 11268 6.4 3.928571  6.40
1900  1 25 17 -74.5 -57.5 11626 6.7 4.748500  6.70
1900  1 21 17 -73.5 -57.5 11627 6.8 4.569398  6.75
1900  1 22 17 -73.5 -57.5 11627 6.7 4.569398  6.75
1900  1 18 17 -70.5 -57.5 11630 6.6 4.385753  6.60

我希望为每个单元格绘制一个具有moavg值的地图。问题是我不知道如何将绘图函数传递给相应单元格的lon和lat值。

非常感谢

1 个答案:

答案 0 :(得分:4)

image函数将x和y值以及要绘制的值矩阵。因此,您需要将数据转换为绘图值矩阵(对于缺少的元素,使用NA):

# Load the data frame
df <- read.table(text="yr mo dy hr   lon   lat  cell   sst  avg     moavg
1900  1 29 17 -73.5 -59.5 10907 6.0 3.299048  6.00
1900  1 28 17 -72.5 -58.5 11268 6.4 3.928571  6.40
1900  1 25 17 -74.5 -57.5 11626 6.7 4.748500  6.70
1900  1 21 17 -73.5 -57.5 11627 6.8 4.569398  6.75
1900  1 22 17 -73.5 -57.5 11627 6.7 4.569398  6.75
1900  1 18 17 -70.5 -57.5 11630 6.6 4.385753  6.60", header=T)

# Compute the ordered x- and y-values
lon <- sort(unique(df$lon))
lat <- sort(unique(df$lat))

# Build the matrix to be plotted
moavg <- matrix(NA, nrow=length(lon), ncol=length(lat))
moavg[cbind(match(df$lon, lon), match(df$lat, lat))] <- df$moavg

# Plot the image
image(lon, lat, moavg)

Heat map