2017-12-28 6 views
1

Traurig this answer here scheint nicht für mich arbeiten.Ändern Datumsformat beim Plotten von XTS-Objekt in R

Von was ich in der Dokumentation gesehen habe, in the latest version, 0.10-1, the major.format parameter has been removed, im Gegensatz zu früheren Versionen, like 0.9-7, which has the major.format, das würde leicht meine Frage lösen.

Es scheint so ein wichtiges Merkmal zu sein, veraltet zu sein. Gibt es einen neuen Weg dies zu tun? Scheint etwas Einfaches und Leichtes, aber ich habe dieses Problem stundenlang ohne Erfolg gegraben.

Falls das Problem in meinem Code liegt, hier ist ein Ausschnitt dessen, was ich benutze.

merra2 = read.table("C:/merra2.csv", header=TRUE, sep=",", na.strings="NA", dec=".", strip.white=TRUE) 

merra2$utc = as.POSIXct(merra2$utc, format = "%Y-%m-%d %H:%M:%S", tz="UTC") 
merra2$m2_power = as.xts(x=merra2[,"m2_power"],order.by=merra2[,"utc"]) 
merra2$doy = as.xts(x=merra2[,"doy"],order.by=merra2[,"utc"]) 

plot.xts(merra2$m2_power, col="blue", lwd = 2, major.ticks="weeks", subset="2012-04-01/2014-04-01") 
plot.xts(merra2$m2_power, col="blue", lwd = 2, major.ticks="months", subset="2012-04-01/2014-04-01") 

Und die Eingabedatei enthält so etwas wie:

utc,m2_power,doy 
"1980-01-01 00:00:00",643.000,181.5000 
"1980-01-01 01:00:00",643.000,181.4583 
"1980-01-01 02:00:00",354.000,181.4167 

Wenn ich die major.format Parameter hinzufügen, ändert sich nichts, die Achse gleich bleibt.

Antwort

0

Hier wird ein reproduzierbares Beispiel:

# Generate a sequence of Dates 
StartDate<-"2017-07-01" 
EndDate<- "2018-07-05" 

dates<-seq(as.POSIXct(StartDate, format="%Y-%m-%d", tz="UTC") 
    , as.POSIXct(EndDate, format="%Y-%m-%d", tz="UTC") 
    , by='mins') 

# Generate a sequence of x 
x <- seq(1, length(dates)) 

# Create a dataframe, renaming columns 
df <- as.data.frame(cbind(as.character(dates,format="%Y-%m-%d", tz="UTC"),x)) 
colnames(df) <- c("Dates","x") 

# Redefine format 
df$Dates <- as.POSIXct(df$Dates,format="%Y-%m-%d", tz="UTC") 
df$x2 <- as.xts(x= as.numeric(df$x),order.by=df$Dates) 

# Plot results 
plot.xts(df$x2 
, col="blue" 
, lwd = 2 
, major.ticks="weeks" 
, major.format = TRUE 
, subset="2017-08-01/2017-08-30") 

Wenn Sie "major.ticks" ändern, um die Achse ändern ... Haben nehmen Sie einen Blick auf die "utc" Variable? Was ist das komplette Zeitintervall?

+0

"major.ticks" ändern die Achse, aber major.format = "% Y" zum Beispiel ist völlig irrelevant. Alles, was an das major.format übergeben wird, wird ignoriert, und mein Ziel ist es, das Datum auf der Achse zu formatieren. Das gleiche gilt für Ihr Beispiel, wenn ich zB major.format = "% Y-% m" ändere. – Miguel