我成功地遵循了使用此处提供的数据集和代码获取一年NetCDF数据图表的说明:
http://rpubs.com/boyerag/297592
与链接一样,我将数据集上传为ndvi.array
。我切断了第一年并将该子集指定为ndvi.slice
。然后使用代码:
r <- raster(t(ndvi.slice), xmn=min(lon), xmx=max(lon), ymn=min(lat),
ymx=max(lat), crs=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs+
towgs84=0,0,0"))
r <- flip(r, direction='y')
plot(r)
任何一年都很容易做到这一点,但我正在尝试创建所有这些栅格的刻面情节。我这样做的正常方法是在Facet_grid
中使用ggplot2
,但这与散点图略有不同,我不知道如何处理它。
如果这是散点图,我的方法就是做:
r = ggplot(ndvi.array, aes(lon,lat)) + geom_point() + facet_grid(. ~ t)
处理类似这样的栅格的等价物是什么?
答案 0 :(得分:1)
我成功地遵循了指示......
不幸的是,这些是非常糟糕的指示。以下是如何在(小于?)1/3的步骤中完成相同的操作。
library(raster)
b <- brick("gimms3g_ndvi_1982-2012.nc4")
plot(b[[1]])
toolik_lon <- -149.5975
toolik_lat <- 68.6275
toolik_series <- extract(b, cbind(toolik_lon,toolik_lat), method='simple')
toolik_df <- data.frame(year= seq(from=1982, to=2012, by=1), NDVI=t(toolik_series))
ggplot(data=toolik_df, aes(x=year, y=NDVI, group=1)) + geom_line() + ggtitle("Growing season NDVI at Toolik Lake Station") + theme_bw()
ndvi.diff <- b[[31]] - b[[1]]
plot(ndvi.diff)
您的问题可能与此无关,因为它似乎是关于如何使用ggplot2
或是关于循环?请清楚说明您的问题并使用R附带的示例数据,如下所示:
b <- brick(system.file("external/rlogo.grd", package="raster"))
plot(b)
如果你想循环:
for (i in 1:nlayers(b)) { plot(b[[i]]) }
要将ggplot与facet一起使用,您可以执行以下操作(这是?rasterVis::gplot
library(rasterVis)
library(ggplot2)
r <- raster(system.file("external/test.grd", package="raster"))
s <- stack(r, r*2)
names(s) <- c('meuse', 'meuse x 2')
theme_set(theme_bw())
gplot(s) + geom_tile(aes(fill = value)) +
facet_wrap(~ variable) +
scale_fill_gradient(low = 'white', high = 'blue') +
coord_equal()
但你可能更喜欢
levelplot(s)