如何创建具有特定日期标记的绘图轴

时间:2013-10-09 10:05:59

标签: r axis-labels

我需要绘制一个图表,其中x轴是日期,y轴是相应的股票价格。我的数据框中的日期是数字。例如,1980-01-01是3653.当我绘制数据时,我在x轴上获得了多年。但是,我想说明应该在哪些年份。当我通过axis(1, at=c("1980","1985","1990","1995","2000","2005","2010"))设置我自己的x轴时,我收到一个错误。

我是否必须修改数据或使其工作的技巧是什么?

这是数据的外观:

    > data2
            date    close   change  color
        1   3653    4.668333    NA  NA
        2   3658    4.699753    3.142007e-02    green
        3   3665    4.710161    1.040780e-02    green
        4   3672    4.732772    2.261090e-02    green
        5   3679    4.745975    1.320353e-02    green
        6   3686    4.770261    2.428574e-02    green
        7   3693    4.748491    -2.176980e-02   red
...

这是我到目前为止所拥有的。您需要tserieszoo个包。

data <- get.hist.quote("^GSPC", start = "1980-01-01", compression="w")
data2 <- data.frame( date = as.Date(index(data)), close = data$Close)
data2$close <- log(data2$close)
plot(data2$date, data2$close, type="h", main="S&P 500", ylab="Log Close", xlab="Date",
     axes=F)
axis(2, at=c("5.0","5.5","6.0","6.5","7.0"))
box(which = "plot") 

2 个答案:

答案 0 :(得分:0)

我认为你需要在1:7和1:5之间放置at = ...参数,并使用参数labels = ...来表示年份。

示例:

plot(1:7,c(1:5,5,5),axes=F,xlab="",ylab="")
axis(1,at=1:7, labels=c("1980","1985","1990","1995","2000","2005","2010"))
axis(2,at=1:5)

我希望这会有所帮助。

答案 1 :(得分:0)

使用具有相应来源的as.Date将日期转换为"Date"课程。例如,

> as.Date(3653, origin = "1969-12-31")
[1] "1980-01-01"

(通常R中的原点是“1970-01-01”,所以你可能想检查一下你是不是。)

无论如何,继续:

data2$Date <- as.Date(data2$date, origin = "1969-12-31")

plot(close ~ Date, data2, type = "o", pch = 20, xaxt = "n")

lab <- seq(1980, 2010, 5) # years
at <- as.Date(paste0(lab, "-01-01"))
axis(1, at, lab)
相关问题