mr.*_*per 34 plot r raster ggplot2 gplots
我想使用类似于下面的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()
Run Code Online (Sandbox Code Playgroud)
该代码的输出如下所示:
有几点需要注意.首先,R版本缺少分水岭形状文件.那样就好.
其次,R图中较暗的灰色背景是无数据值.在Arc中,它们不显示,但在R中它们显示为gplot.当我使用光栅包中的"plot"时,它们不显示:
plot(test)
Run Code Online (Sandbox Code Playgroud)
我的问题如下:
要注意,我尝试过很多不同的版本
scale_fill_brewer
scale_fill_manual
scale_fill_gradient
Run Code Online (Sandbox Code Playgroud)
等等,但我得到错误,例如
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
Run Code Online (Sandbox Code Playgroud)
最后,一旦我有一个绘制其中一个地图的解决方案,我想在一个图上绘制多个地图,并为整个面板创建一个颜色条(即所有地图的一个颜色条),我希望能够控制颜色条所在的位置和颜色条的大小.这是我可以用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
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
shapefile和raster文件位于以下链接:
https://drive.google.com/open?id=0B5PPm9lBBGbDTjBjeFNzMHZYWEU
非常感谢提前.
devtools :: session_info()会话信息------------------------------------------ -------------------------------------------------- -------------------------设置值
版本R版本3.1.1(2014-07-10)系统x86_64,darwin10.8.0
ui RStudio(0.98 .1103)
语言(EN)
整理en_US.UTF-8
tz America/Los_Angeles
包裹------------------------------------------------- -------------------------------------------------- ----------------------包*版日期来源
bitops 1.0-6 2013-08-17 CRAN(R 3.1.0)色彩空间1.2-6 2015-03-11 CRAN(R 3.1.3)devtools 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)ggthemes*2.1.2 2015-03-02 CRAN(R 3.1.3)git2r 0.10 .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)hexbin*1.26. 3 2013-12-10 CRAN(R 3.1.0)格*0.20-29 2014-04-04 CRAN(R 3.1.1)latticeExtra*0.6-26 2013-08-15 CRAN(R 3.1.0)magrittr 1.5 2014 -11-22 CRAN(R 3.1.2)质量7.3-33 2014-05-05 CRAN(R 3.1.1)备忘录0.2.1 2014-04-22 CRAN(R 3.1.0)munsell 0.4.2 2013-07 -11 CRAN(R 3.1.0)plyr 1.8.2 2015-04-21 CRAN(R 3.1.3)proto 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)reshape2 1.4.1 2014-12-06 CRAN(R 3.1.2)rgdal*0.8-16 2014-02-07 CRAN(R 3.1.0)rversions 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)stringi 0.4-1 2014-12 -14 CRAN(R 3.1.2)stringr 1.0.0 2015-04-30 CRAN(R 3.1.3)viridis*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)3)proto 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)reshape2 1.4.1 2014-12-06 CRAN(R 3.1.2)rgdal*0.8-16 2014-02-07 CRAN(R 3.1.0)rversions 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)stringi 0.4-1 2014-12-14 CRAN(R 3.1.2)stringr 1.0 .0 2015-04-30 CRAN(R 3.1.3)viridis*0.3.1 2015-10-11 CRAN(R 3.2.0)XML 3.98-1.1 2013-06-20 CRAN(R 3.1.0)zoo 1.7- 11 2014-02-27 CRAN(R 3.1.0)3)proto 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)reshape2 1.4.1 2014-12-06 CRAN(R 3.1.2)rgdal*0.8-16 2014-02-07 CRAN(R 3.1.0)rversions 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)stringi 0.4-1 2014-12-14 CRAN(R 3.1.2)stringr 1.0 .0 2015-04-30 CRAN(R 3.1.3)viridis*0.3.1 2015-10-11 CRAN(R 3.2.0)XML 3.98-1.1 2013-06-20 CRAN(R 3.1.0)zoo 1.7- 11 2014-02-27 CRAN(R 3.1.0)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)reshape2 1.4.1 2014-12-06 CRAN(R 3.1.2)rgdal*0.8-16 2014-02-07 CRAN(R 3.1.0)rversions 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)stringi 0.4-1 2014-12-14 CRAN(R 3.1.2)stringr 1.0.0 2015-04-30 CRAN(R 3.1.3)viridis*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)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)reshape2 1.4.1 2014-12-06 CRAN(R 3.1.2)rgdal*0.8-16 2014-02-07 CRAN(R 3.1.0)rversions 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)stringi 0.4-1 2014-12-14 CRAN(R 3.1.2)stringr 1.0.0 2015-04-30 CRAN(R 3.1.3)viridis*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)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)reshape2 1.4.1 2014-12-06 CRAN(R 3.1.2)rgdal*0.8-16 2014-02-07 CRAN(R 3.1.0)rversions 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)stringi 0.4-1 2014 -12-14 CRAN(R 3.1.2)stringr 1.0.0 2015-04-30 CRAN(R 3.1.3)viridis*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)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)reshape2 1.4.1 2014-12-06 CRAN(R 3.1.2)rgdal*0.8-16 2014-02-07 CRAN(R 3.1.0)rversions 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)stringi 0.4-1 2014 -12-14 CRAN(R 3.1.2)stringr 1.0.0 2015-04-30 CRAN(R 3.1.3)viridis*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)3)reshape2 1.4.1 2014-12-06 CRAN(R 3.1.2)rgdal*0.8-16 2014-02-07 CRAN(R 3.1.0)rversions 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)stringi 0.4-1 2014-12-14 CRAN(R 3.1.2) )stringr 1.0.0 2015-04-30 CRAN(R 3.1.3)viridis*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)3)reshape2 1.4.1 2014-12-06 CRAN(R 3.1.2)rgdal*0.8-16 2014-02-07 CRAN(R 3.1.0)rversions 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)stringi 0.4-1 2014-12-14 CRAN(R 3.1.2) )stringr 1.0.0 2015-04-30 CRAN(R 3.1.3)viridis*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)0 2015-04-30 CRAN(R 3.1.3)viridis*0.3.1 2015-10-11 CRAN(R 3.2.0)XML 3.98-1.1 2013-06-20 CRAN(R 3.1.0)zoo 1.7-11 2014-02-27 CRAN(R 3.1.0)0 2015-04-30 CRAN(R 3.1.3)viridis*0.3.1 2015-10-11 CRAN(R 3.2.0)XML 3.98-1.1 2013-06-20 CRAN(R 3.1.0)zoo 1.7-11 2014-02-27 CRAN(R 3.1.0)
hrb*_*str 42
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")
Run Code Online (Sandbox Code Playgroud)
你没有包括你用的任何东西,test所以我做了这个:
test_spdf <- as(test, "SpatialPixelsDataFrame")
test_df <- as.data.frame(test_spdf)
colnames(test_df) <- c("value", "x", "y")
Run Code Online (Sandbox Code Playgroud)
而且,这只是将+ 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"))
Run Code Online (Sandbox Code Playgroud)
它现在可以用于任何连续的温标.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"))
Run Code Online (Sandbox Code Playgroud)
jba*_*ums 19
以下是我将如何做到这一点rasterVis::levelplot:
装货:
library(rgdal)
library(rasterVis)
library(RColorBrewer)
Run Code Online (Sandbox Code Playgroud)
读东西:
oregon <- readOGR('.', 'Oregon_10N')
r <- raster('oregon_masked_tmean_2013_12.tif')
Run Code Online (Sandbox Code Playgroud)
定义颜色渐变调色板(或长度为1的颜色矢量,该颜色矢量的长度小于使用at下面参数定义的颜色渐变的中断数).
colr <- colorRampPalette(brewer.pal(11, 'RdYlBu'))
Run Code Online (Sandbox Code Playgroud)
情节:
levelplot(r,
margin=FALSE, # suppress marginal graphics
colorkey=list(
space='bottom', # plot legend at bottom
labels=list(at=-5:5, font=4) # legend ticks and labels
),
par.settings=list(
axis.line=list(col='transparent') # suppress axes and legend outline
),
scales=list(draw=FALSE), # suppress axis labels
col.regions=colr, # colour ramp
at=seq(-5, 5, len=101)) + # colour ramp breaks
layer(sp.polygons(oregon, lwd=3)) # add oregon SPDF with latticeExtra::layer
Run Code Online (Sandbox Code Playgroud)
您可能实际上想要绘制图例轮廓(包括其刻度),在这种情况下添加axis.line=list(col='black')到colorkeyargs 列表.这需要覆盖由par.settings=list(axis.line=list(col='transparent'))以下原因引起的框的一般抑制:
levelplot(r,
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=colr,
at=seq(-5, 5, len=101)) +
layer(sp.polygons(oregon, lwd=3))
Run Code Online (Sandbox Code Playgroud)
我同意@hrbrmstr认为viridis通常是一个更好的使用,尽管在我看来 - 有点难看.ColorBrewer之类的主要优点RdYlBu是在去饱和时颜色仍然不同,颜色差异更能反映出价值的差异.不过,我相信RdYlBuDeuteranopia/Protanopia/Tritanopia色盲是完全可以接受的.
这是viridis版本:
library(viridis)
levelplot(r,
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))
Run Code Online (Sandbox Code Playgroud)
编辑
为了回应OP的另外一个问题,这里是如何根据要求绘制多个栅格.
假设所有栅格具有相同的范围,分辨率,投影等,您可以将它们堆叠成一个RasterStack,然后levelplot在堆栈上使用.您可以传递width作为传递的列表的元素colorkey来控制图例的高度("宽度"有点违反直觉,但默认情况下图例是垂直的).如果你想抑制每个面板上方的条带标签(正如我在下面所做的那样 - 默认情况下它们标有堆栈的图层名称[请参阅names(s)]),你可以添加strip.border和strip.background传递到的列表par.settings.
s <- stack(r, r*0.8, r*0.6, r*0.4)
levelplot(s,
margin=FALSE,
colorkey=list(
space='bottom',
labels=list(at=-5:5, font=4),
axis.line=list(col='black'),
width=0.75
),
par.settings=list(
strip.border=list(col='transparent'),
strip.background=list(col='transparent'),
axis.line=list(col='transparent')
),
scales=list(draw=FALSE),
col.regions=viridis,
at=seq(-5, 5, len=101),
names.attr=rep('', nlayers(s))) +
layer(sp.polygons(oregon, lwd=3))
Run Code Online (Sandbox Code Playgroud)
小智 6
这是使用 ggplot 的简单解决方案:
scale_fill_gradientn(colours = terrain.colors(4),limits=c(0,1),
space = "Lab",name=paste("Probability \n"),na.value = NA)
Run Code Online (Sandbox Code Playgroud)
在scale_fill_gradientn(也应该适用于scale_file_gradient)中,设置na.value = NA。