Je voudrais faire un terrain en utilisant studio R similaire à celui ci-dessous (créé à Arc Map)Comment configurer l'utilisation ggplot2 pour mapper une trame
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:
Un couple de choses à noter. Tout d'abord, les shapefiles des bassins versants sont absents de la version R. c'est bon. Deuxièmement, l'arrière-plan gris le plus sombre dans la courbe R est des valeurs sans données. Dans Arc, ils ne s'affichent pas, mais dans R, ils s'affichent avec gplot. Ils ne présentent pas quand j'utilise « complot » du paquet de trame:
plot(test)
Mes questions sont les suivantes:
- Comment puis-je me débarrasser du gris foncé NoData remplir dans l'exemple 'gplot'?
- Comment définir la légende (barre de couleurs) pour qu'elle soit raisonnable (comme dans les légendes d'ArcMap et de raster 'plot'?)
- Comment contrôler la palette de couleurs?
Pour noter, j'ai essayé beaucoup de versions différentes de
scale_fill_brewer
scale_fill_manual
scale_fill_gradient
et ainsi de suite et ainsi de suite mais je reçois 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 tracer une de ces cartes, je voudrais tracer plusieurs cartes sur une figure et créer une seule barre de couleurs pour l'ensemble du panel (ie une barre de couleurs pour toutes les cartes) et je voudrais pouvoir contrôler où se trouve la barre de couleurs et la taille du col orbar. Voici un exemple de ce que je peux faire avec grid.arrange, mais je ne peux pas comprendre comment définir un seul colorbar:
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 la suivante:
Le shapefile et fichier raster sont disponibles à l'adresse suivante:
https://drive.google.com/open?id=0B5PPm9lBBGbDTjBjeFNzMHZYWEU
Un grand merci à l'avance.
devtools :: session_info() Informations de session ------------------------------------- -------------------------------------------------- ------------------------------ valeur de réglage
version R version 3.1.1 (2014-07-10) système x86_64, darwin10.8.0
ui rstudio (0.98.1103)
langue (EN)
collationner en_US.UTF-8
tz America/Los_Angeles
paquets --------------- -------------------------------------------------- -------------------------------------------------- ------ package * version date source
bitops 1.0-6 2013-08-17 CRAN (R 3.1.0) colorspace 1.2-6 2015-03-11 CRAN (R 3.1.3) devtools 1.8 .0 2015-05-09 CRAN (R 3.1.3) digest 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 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) MASS 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 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) é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 20.06.2013 3,98 à 1,1 CRAN (R 3.1.0) zoo 27/02/2014 1,7 à 11 CRAN (R 3.1.0)
ce qui est la raison pour laquelle vous souhaitez utiliser pour cette ggplot? – RobertH
@RobertH Je ne m'engage pas à utiliser ggplot mais en général j'aime ggplot et j'essaie de l'apprendre donc j'aimerais pouvoir produire des complots avec ggplot efficacement. N'hésitez pas à partager d'autres solutions. Je vous remercie. –
@hrbrmstr s'il vous plaît identifier ce qui ne fonctionne pas. Peut-être que vous vous battez avec le fait que j'ai inclus des chemins absolus qui ne fonctionneront évidemment pas sur la machine de quelqu'un d'autre. J'ai inclus un lien vers les données réelles à la fin de mon message. Si vous placez les données dans un dossier et remplacez les chemins avec le chemin d'accès à votre dossier, cela devrait fonctionner. Je ne suis pas assez compétent avec R pour générer les données à partir de zéro. –