【问题标题】:Changing date format when plotting xts object in R在 R 中绘制 xts 对象时更改日期格式
【发布时间】:2018-06-08 23:40:25
【问题描述】:

遗憾的是,this answer here 似乎对我不起作用。

根据我在文档中看到的内容,in the latest version, 0.10-1, the major.format parameter has been removed,与以前的版本相反,like 0.9-7, which has the major.format,可以轻松解决我的问题。

这似乎是一个被弃用的主要功能。有什么新方法可以做到这一点吗?看起来简单易行,但我一直在研究这个问题好几个小时都没有成功。

如果问题出在我的代码中,这里是我正在使用的 sn-p。

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")

输入文件包含如下内容:

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

如果我添加了 major.format 参数,没有任何变化,轴保持不变。

【问题讨论】:

    标签: r plot xts zoo


    【解决方案1】:

    这里是一个可复制的例子:

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

    如果您更改“major.ticks”,则轴更改...您是否查看过“utc”变量?完整的时间间隔是多少?

    【讨论】:

    • "major.ticks" 确实改变了轴,但是major.format = "%Y",例如,是完全不相关的。任何传递给major.format的东西都会被忽略,我的目标是格式化轴上的日期。如果我更改,则与您的示例相同,例如,major.format = "%Y-%m"。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-28
    • 1970-01-01
    • 2015-03-03
    • 2011-11-18
    • 1970-01-01
    • 2017-11-01
    相关资源
    最近更新 更多