我有一个像这样的数据框
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值。
非常感谢
答案 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)