[英] How to set use ggplot2 to map a raster
我想使用R studio制作一个类似于下面的绘图(在Arc Map中创建)
我try 了以下代码:
# data processing
library(ggplot2)
# spatial
library(raster)
library(rasterVis)
library(rgdal)
#
test <- raster(paste(datafold,'oregon_masked_tmean_2013_12.tif',sep="")) # read the temperature raster
OR<-readOGR(dsn=ORpath, layer="Oregon_10N") # read the Oregon state boundary shapefile
gplot(test) +
geom_tile(aes(fill=factor(value),alpha=0.8)) +
geom_polygon(data=OR, aes(x=long, y=lat, group=group),
fill=NA,color="grey50", size=1)+
coord_equal()
该代码的输出如下所示:
有几件事需要注意.首先,R版本中缺少流域形状文件.没关系.
其次,在较深的绘图中,较深的灰色背景没有数据值.在Arc中,它们不显示,但在R中,它们显示gplot.当我使用光栅软件包中的"绘图"时,它们不会显示:
plot(test)
我的问题如下:
- 如何在"gplot"示例中去掉深灰色的NoData填充?
- 如何将图例( colored颜色 条)设置为合理的(如在ArcMap和光栅"绘图"图例中)
- 如何控制 colored颜色 映射?
值得注意的是,我try 了许多不同版本的
scale_fill_brewer
scale_fill_manual
scale_fill_gradient
以此类推,但我会犯错误,例如
br <- seq(minValue(test), maxValue(test), len=8)
gplot(test)+
geom_tile(aes(fill=factor(value),alpha=0.8)) +
scale_fill_gradient(breaks = br,labels=sprintf("%.02f", br)) +
geom_polygon(data=OR, aes(x=long, y=lat, group=group),
fill=NA,color="grey50", size=1)+
coord_equal()
Regions defined for each Polygons
Error: Discrete value supplied to continuous scale
最后,一旦我有了绘制其中一个 map 的解决方案,我想在一个图形上绘制多个 map ,并为整个面板创建一个 colored颜色 栏(即,所有 map 都有一个 colored颜色 栏),我想能够控制 colored颜色 栏的位置和大小.下面是一个我可以用grid做的例子.安排,但我不知道如何设置单个 colored颜色 栏:
r1 <- test
r2 <- test
r3 <- test
r4 <- test
colr <- colorRampPalette(rev(brewer.pal(11, 'RdBu')))
l1 <- levelplot(r1,
margin=FALSE,
colorkey=list(
space='bottom',
labels=list(at=-5:5, font=4),
axis.line=list(col='black')
),
par.settings=list(
axis.line=list(col='transparent')
),
scales=list(draw=FALSE),
col.regions=viridis,
at=seq(-5, 5, len=101)) +
layer(sp.polygons(oregon, lwd=3))
l2 <- levelplot(r2,
margin=FALSE,
colorkey=list(
space='bottom',
labels=list(at=-5:5, font=4),
axis.line=list(col='black')
),
par.settings=list(
axis.line=list(col='transparent')
),
scales=list(draw=FALSE),
col.regions=viridis,
at=seq(-5, 5, len=101)) +
layer(sp.polygons(oregon, lwd=3))
l3 <- levelplot(r3,
margin=FALSE,
colorkey=list(
space='bottom',
labels=list(at=-5:5, font=4),
axis.line=list(col='black')
),
par.settings=list(
axis.line=list(col='transparent')
),
scales=list(draw=FALSE),
col.regions=viridis,
at=seq(-5, 5, len=101)) +
layer(sp.polygons(oregon, lwd=3))
l4 <- levelplot(r4,
margin=FALSE,
colorkey=list(
space='bottom',
labels=list(at=-5:5, font=4),
axis.line=list(col='black')
),
par.settings=list(
axis.line=list(col='transparent')
),
scales=list(draw=FALSE),
col.regions=viridis,
at=seq(-5, 5, len=101)) +
layer(sp.polygons(oregon, lwd=3))
grid.arrange(l1, l2, l3, l4,nrow=2,ncol=2) #use package gridExtra
输出如下:
shapefile和光栅文件可从以下链接获得:
https://drive.google.com/open?id=0B5PPm9lBBGbDTjBjeFNzMHZYWEU
非常感谢提前.
devtools::session_info()
包裹-------------------------------------------------------------------------------------------------------------------------