Mit Ihrer Hilfe in einem anderen Thread habe ich es geschafft, einige globale Karten zu plotten. Zuerst wandle ich meteorologische GRIB2-Daten in Netcdf um und zeichne dann die globalen Karten.R Daten rastern und Achsenlimits setzen
Jetzt möchte ich nur eine Teilregion der Karte plotten. Ich habe den Befehl crop ausprobiert und die Subregion der globalen NC-Datei erfolgreich extrahiert. Aber beim Plotten kann ich nicht finden, wie man Achsengrenzen kontrolliert. Es zeichnet eine Karte auf, die größer als die Datenregion ist, sodass auf beiden Seiten große weiße Flächen erscheinen.
Dies ist das Skript I Karten
library("ncdf")
library("raster")
library("maptools")
DIA=format(Sys.time(), "%Y%m%d00") # Data d'avui
url=sprintf("ftp://ftp.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.%s/gfs.t00z.pgrb2f00", DIA) # Ruta del ftp
loc=file.path(sprintf("%s",url))
download.file(loc,"gfs.grb",mode="wb")
system("/usr/bin/grib2/wgrib2/wgrib2 -s gfs.grb | grep :TMP: | /usr/bin/grib2/wgrib2/wgrib2 -i gfs.grb -netcdf temp.nc",intern=T)
t2m <- raster("temp.nc", varname = "TMP_2maboveground")
rt2m <- rotate(t2m)
t2mc=rt2m-273.15
DAY=format(Sys.time(), "%Y%m%d") # Data d'avui
e=extent(-40,40,20,90)
tt=crop(t2mc,e)
png(filename="gfs.png",width=700,height=600,bg="white")
rgb.palette <- colorRampPalette(c("snow1","snow2","snow3","seagreen","orange","firebrick"), space = "rgb")#colors
plot(tt,col=rgb.palette(200),main=as.expression(paste("Temperatura a 2m ",DAY," + 00 UTC",sep="")),axes=T)
dev.off()
die diesen Ausgang plotten bin mit geben.
Es hat eine einfache, aber ich bin ein einfacher R Benutzer. Danke im Voraus.
EDIT: Neue Ausgabe beim Hinzufügen von xlim = c (-40,40), Ylim = c (20,90) wie vorgeschlagen. Es scheint, dass es das Problem nicht behebt. Aber das Spielen mit x, y Größe der ausgegebenen PNG-Datei sieht vielversprechend aus, da ich die Größe an die Karte anpassen kann. Sicherlich muss es eine andere Lösung sein, die richtige, die ich nicht finden kann.
Fügen Sie einfach ein 'xlim' und ein' ylim' zu 'plot' Befehle, zum Beispiel:Wenn Sie den
latticeExtra::layer
Ansatz bevorzugen, können Sie ein ähnliches Ergebnis mit diesem Code erreichen 'plot (...., xlim = c (-10,30), ylim = c (30, 80))' Und nette Handlung übrigens, +1 –Vielleicht werfen Sie einen Blick auf das googleVis-Paket. Nicht sicher, es wird helfen, aber es ist ziemlich ordentlich. Es enthält IntensityMap, GeoMap und Map-Funktionen, die vielleicht helfen könnten. –
Hallo @ SimonO101 Das war mein erster Versuch, bevor ich mir die Ernte anschaue, nicht sicher, ob ich beides ausprobiert habe. Jetzt nicht bei der Arbeit, wird es versuchen. Vielen Dank. – pacomet