我想使用 R studio 制作一个类似于下面的图(在 Arc Map 中创建)
我尝试过以下代码:
# 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 版本中缺少分水岭形状文件。没事儿。
其次,R 图中的深灰色背景是无数据值。在 Arc 中,它们不显示,但在 R 中,它们通过 gplot 显示。当我使用栅格包中的“plot”时,它们不会显示:
plot(test)
我的问题如下:
- 如何消除“gplot”示例中的深灰色 NoData 填充?
- 如何将图例(颜色条)设置为合理(例如在 ArcMap 和栅格“绘图”图例中?)
- 如何控制颜色图?
要注意的是,我尝试了许多不同的版本
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 ,并为整个面板创建一个颜色条(即为所有 map 创建一个颜色条),并且我想能够控制颜色条的位置以及颜色条的大小。这是我可以使用 grid.arrange 执行的操作的示例,但我不知道如何设置单个颜色条:
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
输出是这样的:
形状文件和光栅文件可从以下链接获取:
https://drive.google.com/open?id=0B5PPm9lBBGbDTjBjeFNzMHZYWEU
非常感谢。
开发工具::session_info()
session 信息------------------------------------------------ -------------------------------------------------- -------------------
设定值
R版本3.1.1 (2014-07-10)
系统x86_64,darwin10.8.0
ui RStudio (0.98.1103)
语言(EN)
整理 en_US.UTF-8
tz 美洲/洛杉矶
套餐 ---------------------------------------------------------- -------------------------------------------------- ------------------------
包 * 版本日期来源
bitops 1.0-6 2013-08-17 CRAN (R 3.1.0)
色彩空间 1.2-6 2015-03-11 CRAN (R 3.1.3)
开发工具 1.8.0 2015-05-09 CRAN (R 3.1.3)
摘要 0.6.4 2013-12-03 CRAN (R 3.1.0)
ggplot2 * 1.0.1 2015-03-17 CRAN (R 3.1.3)
gg主题 * 2.1.2 2015-03-02 CRAN (R 3.1.3)
git2r 0.10.1 2015-05-07 CRAN (R 3.1.3)
gridExtra 0.9.1 2012-08-09 CRAN (R 3.1.0)
gtable 0.1.2 2012-12-05 CRAN (R 3.1.0)
十六进制* 1.26.3 2013-12-10 CRAN (R 3.1.0)
格子 * 0.20-29 2014-04-04 CRAN (R 3.1.1)
格子额外 * 0.6-26 2013-08-15 CRAN (R 3.1.0)
玛格利特 1.5 2014-11-22 CRAN (R 3.1.2)
质量 7.3-33 2014-05-05 克兰 (R 3.1.1)
备忘录 0.2.1 2014-04-22 CRAN (R 3.1.0)
孟塞尔 0.4.2 2013-07-11 CRAN (R 3.1.0)
plyr 1.8.2 2015-04-21 CRAN (R 3.1.3)
原型(prototype) 0.3-10 2012-12-22 CRAN (R 3.1.0)
光栅 * 2.2-31 2014-03-07 CRAN (R 3.1.0)
rasterVis * 0.28 2014-03-25 CRAN (R 3.1.0)
RColorBrewer * 1.0-5 2011-06-17 CRAN (R 3.1.0)
Rcpp 0.11.2 2014-06-08 CRAN (R 3.1.0)
RCurl 1.95-4.6 2015-04-24 CRAN (R 3.1.3)
reshape 2 1.4.1 2014-12-06 CRAN (R 3.1.2)
rgdal * 0.8-16 2014-02-07 CRAN (R 3.1.0)
版本 1.0.0 2015-04-22 CRAN (R 3.1.3)
秤 * 0.2.4 2014-04-22 CRAN (R 3.1.0)
sp * 1.0-15 2014-04-09 CRAN (R 3.1.0)
字符串 0.4-1 2014-12-14 CRAN (R 3.1.2)
stringr 1.0.0 2015-04-30 CRAN (R 3.1.3)
绿色 * 0.3.1 2015-10-11 CRAN (R 3.2.0)
XML 3.98-1.1 2013-06-20 CRAN(R 3.1.0)
动物园 1.7-11 2014-02-27 CRAN (R 3.1.0)
最佳答案
library(ggplot2)
library(raster)
library(rasterVis)
library(rgdal)
library(grid)
library(scales)
library(viridis) # better colors for everyone
library(ggthemes) # theme_map()
datafold <- "/path/to/oregon_masked_tmean_2013_12.tif"
ORpath <- "/path/to/Oregon_10N.shp"
test <- raster(datafold)
OR <- readOGR(dsn=ORpath, layer="Oregon_10N")
您没有包含用于进行测试
的任何内容,所以我这样做了:
test_spdf <- as(test, "SpatialPixelsDataFrame")
test_df <- as.data.frame(test_spdf)
colnames(test_df) <- c("value", "x", "y")
然后只需将 shapefile 发送到 ggplot2 即可:
ggplot() +
geom_tile(data=test_df, aes(x=x, y=y, fill=value), alpha=0.8) +
geom_polygon(data=OR, aes(x=long, y=lat, group=group),
fill=NA, color="grey50", size=0.25) +
scale_fill_viridis() +
coord_equal() +
theme_map() +
theme(legend.position="bottom") +
theme(legend.key.width=unit(2, "cm"))
现在它可以在任何连续温标下工作。 Viridis 是很长一段时间内出现的最好的之一。
如果必须使用gplot
,可以使用以下内容:
gplot(test) +
geom_tile(aes(x=x, y=y, fill=value), alpha=0.8) +
geom_polygon(data=OR, aes(x=long, y=lat, group=group),
fill=NA, color="grey50", size=0.25) +
scale_fill_viridis(na.value="white") +
coord_equal() +
theme_map() +
theme(legend.position="bottom") +
theme(legend.key.width=unit(2, "cm"))
关于r - 如何设置使用ggplot2绘制栅格图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33227182/