Comment définir l'utilisation ggplot2 de carte raster

Je voudrais faire un tracé à l'aide de R studio similaire à celui ci-dessous (créé à l'Arc Map)

Comment définir l'utilisation ggplot2 de carte raster

J'ai essayé le code suivant:

# 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()

La sortie de ce code ressemble à ceci:

Comment définir l'utilisation ggplot2 de carte raster

Un couple de choses à noter. Tout d'abord, le bassin versant de fichiers sont manquants à partir de la version R. c'est très bien.

Deuxième, Le plus foncé sur fond gris dans le R de la parcelle est Pas de valeurs de Données. Dans l'Arc, ils ne s'affichent pas, mais dans le R elles s'affichent avec gplot. Ils ne s'affichent pas lorsque j'utilise "plot" de la trame du package:

plot(test)

Comment définir l'utilisation ggplot2 de carte raster

Mes questions sont les suivantes:

  1. Comment puis-je me débarrasser de la dark gris NoData remplissez le gplot' exemple?
  2. Comment puis-je définir la légende (barre de couleur) raisonnable (comme dans la ArcMap et raster 'complot' légendes?)
  3. Comment puis-je contrôler la palette de couleurs?

À noter, j'ai essayé beaucoup de différentes versions de

scale_fill_brewer
scale_fill_manual
scale_fill_gradient

et ainsi de suite et ainsi de suite, mais j'ai des erreurs, par exemple

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

Enfin, une fois que j'ai une solution pour le tracé de l'une de ces cartes, je voudrais tracer plusieurs cartes sur une figure et de créer une seule barre de couleur pour l'ensemble du groupe (c'est à dire une barre de couleur pour toutes les cartes), et je voudrais être en mesure de contrôler l'emplacement de la barre de couleur est situé, et que la taille de la barre de couleur. Voici un exemple de ce que je peux faire avec la grille.arranger, mais je ne peux pas comprendre comment mettre une seule barre de couleur:

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   

La sortie est ceci:

Comment définir l'utilisation ggplot2 de carte raster

Le fichier de formes et de fichier raster sont disponibles sur le lien suivant:

https://drive.google.com/open?id=0B5PPm9lBBGbDTjBjeFNzMHZYWEU

Merci beaucoup à l'avance.

devtools::session_info()
Session d'info ---------------------------------------------------------------------------------------------------------------------
valeur de réglage

la version R version 3.1.1 (2014-07-10)
système x86_64, darwin10.8.0

interface RStudio (0.98.1103)

langue (FR)

rassembler en_US.UTF-8

tz America/Los_Angeles

Paquets -------------------------------------------------------------------------------------------------------------------------
package * date de la version source

bitops 1.0-6 2013-08-17 CRAN (R 3.1.0)
palette 1.2-6 2015-03-11 CRAN (R 3.1.3)
devtools 1.8.0 2015-05-09 CRAN (R 3.1.3)
digest de la version 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.1 l'a 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)
treillis * 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)
MASSE 7.3-33 2014-05-05 CRAN (R 3.1.1)
memoise 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)
raster * 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 de 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)
les échelles * 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 de 1,7-11 2014-02-27 CRAN (R 3.1.0)

  • quelle est la raison pour laquelle vous souhaitez utiliser ggplot pour cela?
  • Je ne suis pas commis à l'aide de ggplot mais en général, j'aime ggplot et je suis en train de l'apprendre donc je voudrais être en mesure de produire des parcelles avec des ggplot efficacement. N'hésitez pas à partager d'autres solutions. Je vous remercie.
  • veuillez identifier ce qui ne fonctionne pas. Peut-être que vous êtes aux prises avec le fait que j'ai inclus quelques chemins absolus qui ne sera évidemment pas le travail de quelqu'un d'autre de la machine. J'ai inclus un lien vers les données réelles à la fin de mon message. Si vous mettez les données dans un dossier et remplacer les chemins avec le chemin d'accès à votre dossier, il doit travailler. Je ne suis pas assez habile avec R pour générer les données à partir de zéro.
  • Des excuses. J'ai négligé de vérifier que rasterVis a été chargé sur mon nouveau système.
InformationsquelleAutor mr. cooper | 2015-10-20