2016-06-26 7 views
1

Mein allgemeines Ziel ist es, ein Diagramm zu erstellen, in dem die Temperatur gegen die Zeit aufgetragen ist. Ich habe Grid-Klimadaten (NetCDF-Datei) für mein Forschungsgebiet heruntergeladen, die Long, Lat, Temperaturwert und Zeit für jede Gitterzelle enthalten. Ich importierte die Datei in R mit RNetCDF. Das ist zu Code, den ich dafür verwendet:Zeichnen eines Zeit-Temperatur-Diagramms mit NetCDF-Datei in R

Grid_Temp <- "FULL_TMP_cru_ts3.23.1901.2014.tmp.dat_65-80E_35-45N.nc" 
fid_T <- open.nc (Grid_Temp) 
print.nc(fid_T) 
Temp <- read.nc(fid_T) 
close.nc(fid_T) 

Als Ergebnis erhalte ich eine Liste mit vier Elementen: Zeit (1d), Lon (1D), lat (1D) und tmp (3D: Lang, Lat ,Zeit).

Ich weiß nicht, wie ich diese Ausgabe verwenden kann, um meine Handlung zu produzieren. Zunächst möchte ich das Zeitelement begrenzen. Zur Zeit läuft die Zeit von 1901 bis 2014. Ich muss jedoch mit 1930 beginnen. Die Zeit ist in Monaten, dh das Zeitelement enthält Zahlen von 0: 1368, da die Monate fortlaufend nummeriert sind. Ich muss bei Nummer 360 anfangen. Könnte mir jemand helfen, wie ich meine Zeit einschränken kann?

Und für die Handlung: Ich brauche die Zeit (1930-2014) auf der X-Achse und auf der Y-Achse sollte die mittlere Temperatur des Forschungsbereichs sein. Ich weiß im Moment nicht, wie ich mit dieser Art von Liste umgehen soll und weiß daher nicht, wie ich diese Handlung erstellen kann.

Vielen Dank für jede Antwort! Ich mache das für meine Masterarbeit und ich bin ein Anfänger in R, also schätze ich jede Art von Hilfe und Tipps! Danke

+0

Willkommen bei Stackoverflow. Bitte nehmen Sie sich die Zeit, um diesen Beitrag zu lesen (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) wie man ein [minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) zur Verfügung stellt und Ihre Frage entsprechend überarbeitet. – lmo

Antwort

0

Try Umschalten auf die ncdf4 Pkg und zu sehen, ob das hilft:

library(ncdf4) 
library(ggplot2) 
library(dplyr) 

# open the HadCRUT temp netcdf 
had <- nc_open("HadCRUT.4.4.0.0.median.nc") 

print(had) # not shown 

# get the data 

lon <- ncvar_get(had, "longitude") 
lat <- ncvar_get(had, "latitude") 
time <- ncvar_get(had, "time") 
temperature_anomaly <- ncvar_get(had, "temperature_anomaly") 

nc_close(had) # done with the file 

# ref origin for this one is diff than 
time <- as.Date(time, origin="1850-01-01") 

# pick a lat/lon pair 

(lon[10]) 
## [1] -132.5 

(lat[10]) 
## [1] -42.5 

data_frame(month=time, 
      temp=temperature_anomaly[10,10,], 
      col=ifelse(temp<0, "#b2182b", "#2166ac")) %>% 
    ggplot(aes(month, temp)) + 
    geom_point(aes(color=col), size=0.15) + 
    scale_color_identity() + 
    theme_bw() 
+0

Vielen Dank für die schnelle Antwort! Die Verwendung des ncdf4-Pakets scheint besser zu funktionieren! Ich bin jedoch immer noch verwirrt darüber, wie man die Startzeit auf den 360. Monat einstellt. Durch die Verwendung von as.Date werden meine Daten in Tage und nicht in Monate umgewandelt. Gibt es eine Möglichkeit, etwas wie origin = "1930-01" (für Monate) anstelle von origin = "1930-01-01" zu verwenden? Danke für die Hilfe! –

+0

Können Sie einen Link zu der Datei 'FULL_TMP_cru_ts3.23.1901.2014.tmp.dat_65-80E_35-45N.nc' veröffentlichen? – hrbrmstr

+0

Ich habe die Datei von dieser Website heruntergeladen. Ich beschränkte den Bereich auf 35-45N und 65-80E und lud diese eingeschränkte Teilmenge herunter. https://climexp.knmi.nl/[email protected]&field=cru_tmp –