绘制R中的时间序列

时间:2016-02-28 17:27:12

标签: r plot time-series

我是R.的新人 我在此链接dropbox中有一组每日数据。我的代码是:

#plotting CLOSE
plot.ts(datatest$CLOSE,ylab="Close")

这就是结果:

[Graph][2].

问题是xlab,我想显示DATE变量,但它似乎显示CLOSE变量的顺序。我还尝试了其他命令,例如ggplotxyplot等,但是它们需要转换为data.frame,这对我来说太难了。

我将非常感谢有关如何在图表中获取DATE变量的一些指导。

非常感谢你。

3 个答案:

答案 0 :(得分:1)

尝试使用

dataset$DATE<-.as.POSIXct(dataset$DATE)

答案 1 :(得分:1)

这样的事情会做到:

# load data:
theData = read.csv2(file = "sample.csv",header = TRUE,
                    stringsAsFactors = FALSE,sep = ",",
                    colClasses = c("character",rep("numeric",5)),dec=".")

# We want to plot a custom x-axis, so stop the default
# x-axis being drawn usign xaxt="n":
plot(theData$CLOSE,type="l",xaxt="n")

# Lets say you want to put a date label in 8 different locations:
locations = floor(seq(from=1,to=nrow(theData),by=nrow(theData)/8))

# Now draw the x-axis on your plot like this:
axis(side = 1, at = locations, labels=theData$DATE[locations],las=2)

在上文中,side=1表示在底部绘制轴。 at=locations表示我们希望在我们之前创建的位置向量中给出的位置显示刻度标签。 labels=theData$DATE[locations]提供了我们要放置标签的位置的标签。 las=2表示您要旋转刻度标签。也可以尝试las=1进行不同的轮换。

但是,这些日期有点长,所以你可能想要创建这样的小日期:

# Convert your long dates to smaller dates like YYYY-MM-DD, and stick
# the results to the end of your data frame.
theData = cbind(theData,
                "FormattedDate"=as.Date(theData$DATE,"%A, %B %e, %Y"))

# Replot and use your smaller dates. (ces.axis=0.8 makes
# the font smaller)
plot(theData$CLOSE,type="l",xaxt="n")
axis(side = 1, at = locations,
     labels=theData$FormattedDate[locations],las=1,cex.axis=0.8)

最后,您还可以使用一些不错的时间序列包来轻松创建更好的图:

install.packages("xts")
library(xts)
xtsData = xts(theData[,"OPEN"],order.by = theData[,"FormattedDate"])
plot.zoo(xtsData)
# or
plot.xts(xtsData)

Left is with zoo. Right is with xts

答案 2 :(得分:1)

   dataset$DATE <- as.Date(dataset$DATE, format = "%A, %B %d, %Y")
  • %A - 工作日长
  • %B - 完整月份名称
  • %d - 两位数日期
  • %Y - 四位数年份